--- description: Understand the OPC UA Standard architecture and the responsibilities of the machine, Connect IoT, MES, and the operator. alias: userguide-equipment-integration-opcua-standard-architecture --- # Architecture and Responsibilities ## Solution Architecture The **OPC UA Standard** separates machine control, communication orchestration, and manufacturing execution. The machine exposes a standardized OPC UA interface. **Connect IoT** converts OPC UA changes into MES actions and converts MES results into OPC UA writes. Critical Manufacturing MES remains authoritative for **Material**, **Recipe**, **Data Collection**, and **Resource State** rules. ```mermaid flowchart LR subgraph SHOP["Shop Floor"] PLC("Machine / PLC") SERVER("OPC UA Server
Resource Node Tree") PLC <--> SERVER end subgraph EDGE["Integration Layer"] DRIVER("Connect IoT
OPC UA Driver") CTRL("Industrial Equipment
Automation Workflows") DRIVER <--> CTRL end subgraph MESBOX["Critical Manufacturing MES"] OPS("Material Operations") REC("Recipe Management") DC("Data Collection") STATE("Resource State Model") end USER("Operator / MES UI") --> OPS SERVER <--> DRIVER CTRL <--> OPS CTRL <--> REC CTRL <--> DC CTRL <--> STATE classDef standard fill:#FFFFFF,stroke:#64748B,color:#334155,stroke-width:1.5px; classDef secondary fill:#FFFFFF,stroke:#CBD5E1,color:#64748B,stroke-width:1.5px; classDef highlight fill:#075C00,stroke:#075C00,color:#FFFFFF,stroke-width:1.5px; class PLC,SERVER standard; class DRIVER,CTRL highlight; class OPS,REC,DC,STATE standard; class USER secondary; style SHOP fill:#FFFFFF,stroke:#CBD5E1,stroke-width:1.5px style EDGE fill:#FFFFFF,stroke:#CBD5E1,stroke-width:1.5px style MESBOX fill:#FFFFFF,stroke:#CBD5E1,stroke-width:1.5px linkStyle default stroke:#94A3B8,stroke-width:1.5px; ``` ## Component Responsibilities | Component | Responsibilities | | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Machine / PLC** | Implements the physical sequence; publishes Material identifiers, process values, and machine states; raises machine requests; consumes MES results and recipes; acknowledges performed operations | | **OPC UA Server** | Exposes the Resource node tree, access rights, OPC UA data types, and current values. It must allow the Connect IoT to read and write the nodes required by the enabled features | | **Connect IoT OPC UA driver** | Establishes the OPC UA session, subscribes to machine-controlled nodes, reads and writes nodes, and reports communication results to the automation controller | | **OPC UA Standard Controller** | Resolves the server profile and Resource base node, validates requests, calls MES services, coordinates handshakes, converts parameter values, and surfaces failures | | **Critical Manufacturing MES** | Owns the Resource and Material state, validates and executes manufacturing operations, resolves recipes and data collections, and applies Resource state model rules | | **Operator / MES UI** | Starts manual MES operations at operator-initiated or hybrid stations. The UI does not write OPC UA nodes directly; the validated MES operation enters the standard result handshake through Connect IoT, and the transaction commits after machine confirmation | ## Runtime Interaction Paths The initiation path determines who requests the MES operation, not how the result is finalized: - **Machine initiated:** Machine → Connect IoT → MES operation. - **Operator initiated:** Operator → MES UI → MES operation. - **Hybrid:** either path can initiate the operation, with duplicate-operation protection. In every case, MES validates and performs the operation within its transaction. Connect IoT then sends the performed signal to the machine, and MES commits only after the machine confirms. The complete machine-initiated and operator-initiated sequences are defined in [Operation Handshake](../features/operation-handshake.md). ## Design Foundations The address space uses two complementary ideas: - the Resource base identifier mirrors the relevant **ISA-95 equipment hierarchy**. - the folders below the Resource organize the MES process information using the Critical Manufacturing **Common Data Model (CDM)**. The operation control bits are implementation handshake nodes. ## Runtime Invariants - MES is the authority for whether an operation is valid and successful. - Connect IoT must not set a performed bit when the MES operation fails. - MES commits an operation only after the machine confirmation is received within `MachineReplyTimeout`. - The PLC writes operation payload before raising its request bit. - Only one handshake for the same Resource and operation is active at a time. - Operator and machine triggers must not execute the same operation twice. - Recipe and data collection node names match their MES parameter names exactly. - Production runtime uses configured node paths; browsing the whole server is not required during each operation. The normal production lifecycle below connects the architectural responsibilities to the feature-level communication flows. ## End-to-End Production Process ### Normal Production Lifecycle ```mermaid flowchart LR A("Material arrives") subgraph TRACKIN["Track In"] B("Track In
request") C("MES performs Track In
within transaction") D("Download
recipe values") TINACK("Machine confirms
Track In") TINCOMMIT("MES commits
Track In") B --> C --> D --> TINACK --> TINCOMMIT end subgraph PROCESS["Process and Data Collection"] E("Process
Material") F("Post data reading
to MES") G{"More readings?"} E --> F --> G G -->|Yes| E end subgraph TRACKOUT["Track Out"] H("Track Out
request") I("MES performs Track Out
within transaction") J("Machine acknowledges
completion") TOCOMMIT("MES commits
Track Out") H --> I --> J --> TOCOMMIT end subgraph ABORT["Abort"] K("Abort
request") L("MES performs Abort
within transaction") M("Machine acknowledges
abort") ABCOMMIT("MES commits
Abort") K -.-> L -.-> M -.-> ABCOMMIT end A --> B TINCOMMIT --> E G -->|No| H E -.->|Exception| K classDef standard fill:#FFFFFF,stroke:#64748B,color:#334155,stroke-width:1.5px; classDef secondary fill:#FFFFFF,stroke:#CBD5E1,color:#64748B,stroke-width:1.5px; classDef exception fill:#FFFFFF,stroke:#CBD5E1,color:#64748B,stroke-width:1.5px,stroke-dasharray:4 4; class A secondary; class B,C,D,TINACK,TINCOMMIT,E,F,G,H,I,J,TOCOMMIT standard; class K,L,M,ABCOMMIT exception; style TRACKIN fill:#FFFFFF,stroke:#CBD5E1,stroke-width:1.5px style PROCESS fill:#FFFFFF,stroke:#CBD5E1,stroke-width:1.5px style TRACKOUT fill:#FFFFFF,stroke:#CBD5E1,stroke-width:1.5px style ABORT fill:#FFFFFF,stroke:#CBD5E1,stroke-width:1.5px,stroke-dasharray:4 4 linkStyle default stroke:#94A3B8,stroke-width:1.5px; ``` ### Ordering Principles - Payload precedes its request. - MES validation and the operation action precede the performed signal. - Machine consumption precedes confirmation. - Machine confirmation precedes transaction commit. - Acknowledgement precedes reset. - A new transaction starts only from default, after reset.