Skip to content

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.

flowchart LR
    subgraph SHOP["Shop Floor"]
        PLC("Machine / PLC")
        SERVER("OPC UA Server<br/>Resource Node Tree")
        PLC <--> SERVER
    end

    subgraph EDGE["Integration Layer"]
        DRIVER("Connect IoT<br/>OPC UA Driver")
        CTRL("Industrial Equipment<br/>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.

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#

flowchart LR
    A("Material arrives")

    subgraph TRACKIN["Track In"]
        B("Track In<br/>request")
        C("MES performs Track In<br/>within transaction")
        D("Download<br/>recipe values")
        TINACK("Machine confirms<br/>Track In")
        TINCOMMIT("MES commits<br/>Track In")

        B --> C --> D --> TINACK --> TINCOMMIT
    end

    subgraph PROCESS["Process and Data Collection"]
        E("Process<br/>Material")
        F("Post data reading<br/>to MES")
        G{"More readings?"}

        E --> F --> G
        G -->|Yes| E
    end

    subgraph TRACKOUT["Track Out"]
        H("Track Out<br/>request")
        I("MES performs Track Out<br/>within transaction")
        J("Machine acknowledges<br/>completion")
        TOCOMMIT("MES commits<br/>Track Out")

        H --> I --> J --> TOCOMMIT
    end

    subgraph ABORT["Abort"]
        K("Abort<br/>request")
        L("MES performs Abort<br/>within transaction")
        M("Machine acknowledges<br/>abort")
        ABCOMMIT("MES commits<br/>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.