ADETActual Unit Delay Time

ADOTActual Unit Downtime

AOETActual Order Execution Time

APTActual Production Time

AQTActual Queuing Time

ATTActual Transport Time

AUSTActual Unit Setup Time

KPIKey Performance Indicator

ERPEnterprise Resource Planning System

GQGood Quantity

MESManufacturing Execution System

OEEOverall Equipment Effectiveness

PBTPlanned Busy Time

PQProduced Quantity

PRIPlanned Run Time Per Item

RQRework Quantity

SQScrap Quantity

KPI’s are important metrics for quantifying and optimizing the manufacturing performance of a company. In the following, selected examples are used to explain how the required KPI’s can be calculated using this specification. The KPI definitions used are taken from the ISO 22400-2 [1] specification.

Produced Quantity (PQ) and Good Quantity (GQ)

The following options are available for determining quantities.

Determination using job variables

In the case where a job represents a production order to be processed by the machine tool, the current values for PQ and GQ can be read from the ProductionJobType/PartsCompleted and ProductionJobType/PartsGood variables of the associated job data structure. This also applies if the individual parts to be produced are modelled below this data structure.

Determination by means of events

Alternatively, client-side tracking of PQ and GQ can be achieved by subscribing to the event type ProductionPartTransitionEventType. For transitions that signal the completion of processing of a part (new State is Ended or Aborted), the value of PQ must be increased; depending on the entry for PartQuality, the value of GQ must also be increased, as applicable.

The JobIdentifier and CustomerOrderIdentifier variables can be used to establish a reference to the relevant production order.

Determination via ProductionStatisticsType

The variable ProductionStatisticsType/PartsProducedInLifetime can be used to determine PQ (produced quantity). To do this, the OPC UA Client must determine the variable value at the start and end of the production order and then calculate the difference.

Note: GQ cannot be determined via the ProductionStatisticsType because no corresponding variable is available.

Scrap Quantity (SQ)

The scrap quantity SQ can be derived from the values of PQ and GQ:

SQ = PQ – GQ

Rework Quantity (RQ)

The machine does not usually provide a count of rework and for this reason rework has not been included in the model. Therefore, the value for RQ cannot be determined via the interface.

Time KPI’s may depend on external parameters that are not available in the machine tool controls. For this reason, relevant statuses are presented rather than absolute time values. To determine the time KPI’s, the status duration must be measured. For complex time KPI’s, the value results from measuring the combined duration of multiple relevant statuses.

General: Determination with the use of status variables

This specification provides two StateMachines in the MachineOperationMonitoringType:

Both the above data types are defined in OPC 40001-1 (from version 1.02 onwards)[2]. Both objects each contain a CurrentState variable that represents the current state.

General: Determination by means of Events

Production jobs are modelled as objects of the type ProductionJobType. The objects are stored as a list in the ProductionPlan variable of the type ProductionType.

The current status of the production job is represented in the State variable of the ProductionJobType. State is of the type ProductionJobStateMachineType and sends an event of the type ProductionJobTransitionEventType with every state change. When processing these events, the variable State can be used to determine the current state by evaluating the respective value ToState.

In case of an interruption, an event of the type InterruptionConditionType can be sent. The type of interruption can be classified using the variables ConditionClassId and ConditionClassName.

Actual Production Time (APT)

The production time results from the times when the variable MachineryItemState/CurrentState has the value Executing and MachineryOperationMode/CurrentState has the value Processing.

If event-based processing is to be used, the production time is the sum of the times between entering and leaving the Running State. For the other, non-productive time categories, the following then applies: When leaving the Running State, the subsequent State and, if applicable, the type of interruption must be evaluated in each case, to assign the accrued time until the next state change to the appropriate category.

Actual Unit Down Time (ADOT)

The value for ADOT is mapped by the times in which the variable MachineryItemState/CurrentState has the value NotExecuting.

Actual Unit Delay Time (ADET)

The value for ADET results from the times in which the variable MachineryItemState/CurrentState has the value OutOfService.

Actual Unit Setup Time (AUST)

Order related setup times are the times in which the following conditions are met:

MachineryOperationMode/CurrentState has the value Setup,

MachineryItemState/CurrentState has the value Executing.

Actual Order Execution Time (AOET)

This value can be determined from the above defined KPI’s as follows:


Here, ADOT represents the sum of ATT (actual transport time) and AQT (actual queuing time), which are not defined individually in this specification.

The OEE (Overall Equipment Effectiveness) is the product of Availability, Effectiveness and Quality Rate. These measures are calculated as follows:

Availability = APT / PBT

Effectiveness = PRI x PQ / APT

Quality rate = GQ / PQ

In addition to the indicators APT, PQ and GQ as previously defined, the planned variables PBT (Planned busy time) and PRI (Planned run time per item) are required. This information usually comes from an MES or ERP and not from the machine, so it has not been included in this specification. To calculate the OEE, this information must therefore be determined from the connected MES or ERP.


[1] ISO 22400-2: 2014. Automation systems and integration–Key performance indicators (KPIs) for manufacturing operations management–Part, 2

[2] OPC 40001-1, OPC UA for Machinery – Part 1: Basic Building Blocks