--- description: Execute automatic and operator-initiated Material Track Out through the OPC UA Standard. alias: userguide-equipment-integration-opcua-standard-track-out --- # Track Out ## Overview **Track Out** records that a Material has completed processing at the Resource. MES applies its normal **Track Out** preconditions and completes the in-process execution. See [Track Out Material](https://help.criticalmanufacturing.com/userguide/business-data/material/track_out_material/) for the product transaction behavior. ## Nodes | Relative node | OPC UA type | Direction | Purpose | | ---------------------------------------------- | ----------- | ------------- | --------------------------------------- | | `Operation.TrackOut.Material.Name` | `String` | Machine → MES | Exact MES Material name | | `Operation.TrackOut.MachineOperationRequest` | `Boolean` | Machine → MES | Starts machine-initiated **Track Out** | | `Operation.TrackOut.MESOperationPerformed` | `Boolean` | MES → Machine | Indicates that MES performed **Track Out** and is waiting for machine confirmation | | `Operation.TrackOut.MachineOperationConfirmed` | `Boolean` | Machine → MES | Machine consumed the result | ## Communication Flow ```mermaid --8<-- "docs/userguide/equipmentintegration/opcua-standard/_includes/mermaid-sequence-theme.txt" sequenceDiagram autonumber actor O as Operator participant M as Machine / OPC UA Server participant I as Connect IoT participant E as Critical Manufacturing MES alt Machine initiated M->>I: Material.Name M->>I: MachineOperationRequest = true I->>E: Track Out resolved in-process Material else Operator initiated O->>E: Track Out selected Material in MES UI end E->>E: Validate and perform Track Out within transaction E-->>I: Track Out performed, awaiting machine confirmation I->>M: MESOperationPerformed = true alt Confirmation before MachineReplyTimeout M-->>I: MachineOperationConfirmed = true I-->>E: Machine confirmed E->>E: Commit Track Out I->>M: MESOperationPerformed = false M->>I: Machine-owned bits = false else MachineReplyTimeout expires I-->>E: Machine confirmation timeout E->>E: Roll back Track Out I->>M: MESOperationPerformed = false end ``` ## Step-by-Step Process ### Machine-Initiated 1. The PLC writes `Material.Name`. 2. The PLC sets `MachineOperationRequest = true`, which raises the machine request through Connect IoT. 3. Connect IoT requests **Track Out** in MES and provides the explicit Material name when available. 4. MES resolves the explicit Material or, when FIFO is enabled, the first eligible in-process Material at the Resource. 5. MES validates and performs **Track Out** within the current transaction. 6. Connect IoT sets `MESOperationPerformed = true` and waits for `MachineOperationConfirmed = true`. 7. When confirmation arrives before `MachineReplyTimeout`, MES commits **Track Out**. 8. Both sides return their control bits to `false`. 9. If confirmation does not arrive in time, **Track Out** fails and the transaction rolls back. ### Operator-Initiated 1. The operator selects the Material and performs **Track Out** in the MES UI; `MachineOperationRequest` is not required. 2. MES validates and performs **Track Out** within the current transaction. 3. Connect IoT sets `MESOperationPerformed = true` and waits for the machine confirmation. 4. When confirmation arrives before `MachineReplyTimeout`, MES commits **Track Out**. 5. The result and confirmation bits are reset. 6. If confirmation does not arrive in time, the operator receives a failure and the transaction rolls back. ## Failure Behavior - In MES automation controller type must be `IndEqController` - In MES resource `EnableAutomationScenarios` must be set to `true` - A Material that is not in process at the Resource is rejected. - A failed MES validation or transaction leaves `MESOperationPerformed = false`. - If the machine does not set `MachineOperationConfirmed = true` before `MachineReplyTimeout` expires, **Track Out** is not successful and its transaction rolls back. - After a timeout, reconcile the MES Material state, machine state, and handshake values before retrying. ## Validation and Assumptions - [ ] Explicit and FIFO resolution select only an eligible in-process Material. - [ ] Operator-initiated **Track Out** notifies the machine when `EnableAutomationScenarios = true`. - [ ] The performed signal is written only after the MES succeeds. - [ ] Duplicate and missing-acknowledgement recovery do not execute **Track Out** twice. - [ ] Resource is set as `EnableAutomationScenarios = true` - [ ] MES automation controller type is `IndEqController`