Skip to content

OEE Formulas and Worked Example ​

Last updated

License feature: OEE Tracking

OEE is calculated on demand whenever something asks for it (the OEE Dashboard tab, an OEE Gauge widget, or a snapshot post). There is no background timer.

Inputs ​

SymbolMeaningSource
PPlanned production time, secondsFrom Shift Schedule: time elapsed in the shift so far minus Break Periods passed (or Total Break spread across the shift). Manual: Manual minutes × 60
DpPlanned downtime, secondsDowntime with a Planned reason, within the period
DuUnplanned downtime, secondsDowntime with an Unplanned reason or no reason, within the period
DcChangeover downtime, secondsDowntime with a Changeover reason, within the period
TotalTotal partsTotal count for the period, plus logged quality events on a device without a Reject Count tag
GoodGood partsGood count for the period
IdealIdeal cycle time, secondsIdeal Cycle Time (seconds)

The period is the running shift on From Shift Schedule, and the local calendar day on Manual (or when no shift is defined). Only the part of a downtime event inside the period counts: an event that started before the shift counts from the shift start, and an open event counts until now.

Formulas ​

text
Run time      = max(0, P − Dp − Du − Dc)
Availability  = Run time / (P − Dp)
Performance   = Total × Ideal / Run time
Quality       = Good / Total            (1.0 when Total is 0)
OEE           = Availability × Performance × Quality
  • Availability, Quality and OEE are clamped to 0–100 %. Performance is clamped to 0–200 %.
  • Performance is 0 when Total, Ideal or Run time is 0.
  • Planned downtime is removed from both the top and bottom of Availability, so it does not hurt Availability. It still shortens Run time, which raises Performance for the same count.
  • Changeover lowers Availability, as unplanned downtime does — it is time the machine was meant to run and didn't — but it is reported separately, so you can see how much of the loss is changeover.
  • Rejects: on a device with a Reject Count Tag, the tag is the reject count and logged quality events don't change OEE. Without one, quality events logged on the Quality page during the period are rejects, added to any reject count posted through the API. Log a bad part in one place only.

Worked example: case packer ​

A case packer rated at 120 cases/minute runs one shift.

SettingValue
Ideal Cycle Time (seconds)0.5 (60 s ÷ 120 cases)
Production Time SourceFrom Shift Schedule
Shift "Day Shift"06:00–14:00, Mon–Fri, no Break Periods
Total Break (min)30
Downtime logged45 min under "Film Jam" (Unplanned)
Counts at 14:00goodCount 42 865, rejectCount 875 (Reject Count Tag bound)
  1. At the end of the shift, P = 8 h − 30 min = 450 min = 27 000 s.
  2. Du = 45 min = 2 700 s; Dp = 0.
  3. Run time = 27 000 − 0 − 2 700 = 24 300 s.
  4. Availability = 24 300 / 27 000 = 0.900.
  5. Total = 42 865 + 875 = 43 740. Performance = 43 740 × 0.5 / 24 300 = 21 870 / 24 300 = 0.900.
  6. Quality = 42 865 / 43 740 = 0.980.
  7. OEE = 0.900 × 0.900 × 0.980 = 0.794 → 79 % (amber on the dashboard).

Add 20 minutes of "Preventive Maintenance" (Planned) to the same shift with the same counts:

  • Run time = 27 000 − 1 200 − 2 700 = 23 100 s.
  • Availability = 23 100 / (27 000 − 1 200) = 23 100 / 25 800 = 0.895.
  • Performance = 21 870 / 23 100 = 0.947.
  • OEE = 0.895 × 0.947 × 0.980 = 0.831 → 83 %.

Things to know ​

  • Mid-shift numbers are for the shift so far. At 10:00 in the example, 4 hours in, P = 4 h − 15 min (half of Total Break) = 13 500 s, and Performance compares the parts made so far with that time. Because Total Break is spread evenly, Performance reads a little high before the real break and settles after it; enter the breaks as Break Periods at their real times to avoid that.
  • Breaks can be subtracted twice. Break time is already removed from P. If operators also log a "Break / Lunch" downtime event (Planned), that time comes off again.
  • Overnight shifts are one period: 22:00–06:00 belongs to the date it starts, so counts and downtime don't reset at midnight.
  • No shift running (between shifts, on a holiday) plans nothing, so OEE reads 0 % and the card says Not scheduled. Manual minutes are used only when no shifts are defined.

See also ​

Scada.Ink Help Center