--- description: Stop an in-process Material exceptionally using the Abort feature of the OPC UA Standard. alias: userguide-equipment-integration-opcua-standard-abort --- # Abort ## Overview **Abort** stops an in-process Material exceptionally. Use **Track Out** for normal completion. MES applies the standard **Abort** rules, including Material state and process restrictions. See [Abort Material](https://help.criticalmanufacturing.com/userguide/business-data/material/abort_material_process/) for the product transaction behavior. ## Nodes | Relative node | OPC UA type | Direction | Purpose | | ------------------------------------------- | ----------- | ------------- | ----------------------------------- | | `Operation.Abort.Material.Name` | `String` | Machine → MES | Exact MES Material name | | `Operation.Abort.MachineOperationRequest` | `Boolean` | Machine → MES | Starts machine-initiated **Abort** | | `Operation.Abort.MESOperationPerformed` | `Boolean` | MES → Machine | Indicates that MES performed **Abort** and is waiting for machine confirmation | | `Operation.Abort.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: Abort resolved in-process Material else Operator initiated O->>E: Abort selected Material in MES UI end E->>E: Validate and perform Abort within transaction E-->>I: Abort performed, awaiting machine confirmation I->>M: MESOperationPerformed = true alt Confirmation before MachineReplyTimeout M-->>I: MachineOperationConfirmed = true I-->>E: Machine confirmed E->>E: Commit Abort I->>M: MESOperationPerformed = false M->>I: Machine-owned bits = false else MachineReplyTimeout expires I-->>E: Machine confirmation timeout E->>E: Roll back Abort 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 **Abort** 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 **Abort** within the current transaction. 6. Connect IoT sets `MESOperationPerformed = true` and waits for `MachineOperationConfirmed = true`. 7. When confirmation arrives before `MachineReplyTimeout`, MES commits **Abort**. 8. Both sides return their control bits to `false`. 9. If confirmation does not arrive in time, **Abort** fails and the transaction rolls back. ### Operator-Initiated 1. The operator selects the Material and performs **Abort** in the MES UI; `MachineOperationRequest` is not required. 2. MES validates and performs **Abort** within the current transaction. 3. Connect IoT sets `MESOperationPerformed = true` and waits for the machine confirmation. 4. When confirmation arrives before `MachineReplyTimeout`, MES commits **Abort**. 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. ## Safety Boundary The MES **Abort** transaction does not replace machine safety functions. Emergency stop, interlocks, safe motion, and energy isolation remain machine responsibilities. The OPC UA handshake communicates manufacturing execution state. ## 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. - If MES rejects **Abort**, `MESOperationPerformed` remains `false` and the reason is logged. - If the machine does not set `MachineOperationConfirmed = true` before `MachineReplyTimeout` expires, **Abort** 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 - [ ] Only eligible in-process Materials can be aborted. - [ ] Operator-initiated **Abort** notifies the machine without a machine request when `EnableAutomationScenarios = true`. - [ ] The physical machine outcome is defined for a successful **Abort** signal. - [ ] Safety behavior does not depend on MES communication. - [ ] Missing-acknowledgement recovery cannot execute **Abort** twice. - [ ] Resource is set as `EnableAutomationScenarios = true` - [ ] MES automation controller type is `IndEqController`