How to calculate OEE – PackOS calculation examples

Jan Dąbrowski
April 04, 2022
Reading Time: 5 minutes
How to calculate OEE
Main page > Blog > Cool stuff in LogiX > How to calculate OEE – PackOS calculation examples

In PackOS OEE is calculated based on the following input variables:

  • Total time
  • Duration of utilisation losses
  • Duration of availability losses
  • Duration of performance losses
  • Duration of work
  • Volume of good products
  • Volume of wasted products
  • Expected performance

Note that every time the ‘Expected performance’ is used, it is assumed to be constant in the scope of the calculation. When a loss is calculated across many different expected performances, one needs to calculate each period of time separately and aggregate the loss at the end. We do it, by calculating total losses for each ‘Bucket’ independently.

You can read more about What is OEE in this article.

Duration of utilisation losses

It’s the time during which the line is not expected to work. It does not impact OEE, but it does impact TEEP.

  • Time outside shift, assuming there is no overtime
  • Planned break

You can set it using a ‘Planned’ tag, attaching it to specific states. Utilising ‘NoPlan’ or ‘NoWorkHours’ tags to adjust the state of the line automatically, set rules to determine the state from the signals, or manually adjust the line state.

Duration of availability losses

It’s the duration when the line was in downtime, preventing it to produce. It lowers the availability metrics.

  • Failure of the filler
  • Maintenance

You can set it using an ‘Unplanned’ tag, attaching it to specific states. (All states are by default availability losses)

Duration of performance losses

It’s the duration during which the line is assumed to ‘work’, even though it’s not actually producing. This duration does not impact availability, but it does count towards the performance metrics.

Line state can be considered a ‘performance loss’ if:

  • There is a ‘PerformanceLoss’ tag attached
  • There is a ‘Minor stop’ threshold set, and the downtime has not reached that threshold
    e.g. all downtimes < 3min, can be considered a performance loss, regardless of tags

Read also about: Dynamic root cause analysis

Additionally, the performance loss is the difference between the expected volume, and the actual production output (good + waste counts):

( (WorkDuration * ExpectedPerformance) – (GoodCount + WasteCount) ) / ExpectedPerformance


WorkDuration – ( (GoodCount + WasteCount) / ExpectedPerformance) )

Given the expected:

expected performance and work duration

The expected volume is:

expected volume

If the line produced only 150 car, the performance loss caused by slower production is:

oee in production


oee calculation

You can intuitively think about as follows:

If we were producing exactly with the expected performance the whole time. How much faster we would have had completed it? How much time we have lost?

So to calculate OEE, the total performance loss is:
Duration of downtimes with ‘Performance Loss’ tags + Minor Stops + Speed losses

Quality losses

Are derived from the volume of wasted products and expected performance:

Wasted products / Expected performance

e.g. If 5 car have been wasted, when an expected performance was 100 car/h
The quality loss was:

quality loss

Calculating OEE

The simplest OEE calculation requires only 3 variables:

  • What was the scheduled time, during which the line was expected to produce?
  • What was the good count yielded?
  • What was the expected performance?

Effective time = GoodCount / ExpectedPerformance
OEE = EffectiveTime / ScheduledTime

Scheduled time = 10h
Good count = 700 car
Expected performance = 100 car/h
Effective time = (700 car / 100car/h) = 7h
OEE = 7h/10h = 70%

However, a simple % number, does not explain where the 30% has been lost?
To dig deeper, we can calculate the following:

  1. Scheduled time = TotalTime – Utilisation losses
  2. Production time = ScheduledTime – AvailabilityLosses
  3. Operating time = ProductionTime – PerformanceLosses
  4. Effective time = OperatingTime – QualityLosses

Note that we have just redefined Effective time. In fact, these two equations are equivalent: OperatingTime – QualityLosses = EffectiveTime / ScheduledTime

and calculate the components of the OEE:

  • Availability (%)
  • Performance (%)
  • Quality (%)

After that, the OEE can also be calculated as: Availability * Performance * Quality

OEE waterfall chart in PackOS


Defines what percentage of time has been lost, due to stoppages marked as ‘Availability loss’
To calculate it, we use a scheduled time (already excluding all utilisation losses), and total duration of all availability losses:

Production time = ScheduledTime – AvailabilityLosses
Availability = ProductionTime / ScheduledTime


Defines what percentage of time has been lost, due to slower production (including performance loss stoppages). To calculate it, we use a production time (already excluding availability losses), and total duration of all performance losses:

Operating time = ProductionTime – PerformanceLosses
Performance = OperatingTime / ProductionTime


Defines what percentage of time has been lost, due to bad, wasted products
To calculate it, we use a operating time (already excluding all availability and performance losses), and total duration of all quality losses:

Effective time = OperatingTime – QualityLosses
Quality = EffectiveTime / OperatingTime


TEEP metrics help understand how much time is lost on scheduled activities, usually not taken into account in OEE. e.g. How much time is lost, because there are only 2 shifts, instead of 3?

TEEP use Total time in denominator, utilisation losses are not subtracted:

TEEP = EffectiveTime / TotalTime

Using the example from OEE:
Total time = 24h
Scheduled time = 10h
Good count = 700 car
Expected performance = 100 car/h
Effective time = (700car / 100car/h) = 7h
TEEP = 7h/24h ~= 29%

OEE drill down in PackOS

In the PackOS (LogiX module) main dashboard you can find the OEE with components:

OEE counters

These values are calculated for the currently observed period of time selected in the top-left corner:

oee period of time selected

To check historical values, you can find them in PackOS: Reposts > OEE

OEE raport in PackOS

To check raw data from which OEE was calculated click on the ‘OEE’ button, under line states:

oee button in PackOS application

Here you can find aggregated numbers, used for calculations:

how we calculate OEE in PackOS

You can find a similar breakdown in other places where OEE is calculated, like for the shift:

oee counters

To dig even deeper, open the ‘Work spectrum’ view.
Here you can find a breakdown of line downtimes, including the duration of minor stops for each state, and aggregated type of downtime losses:

breakdown of line downtimes in PackOS

All losses here, including ‘Performance losses’ only corresponds to downtime losses.

Speed loss, is not aggregated here. That’s why the value for the ‘Performance loss’ does not match with the screen above. This summary describes line downtimes only

Finally, you can click on any of the loss types to filer through the downtimes, and see which are ‘Performance losses’. Each downtime has a small icon (corresponding to the legend on the left) indicating the loss type which it belongs to:

Performance losses details in PackOS