OPC UA Address Space#
From MES Hierarchy to Resource Base Node#
MES Modeling defines where the physical equipment sits in the MES hierarchy. This page starts from that approved model and explains how it becomes the OPC UA address-space identity used at runtime.
During controller setup, the integration:
- Reads
Namespacefrom the selected OPC UA Server profile. - Builds the string identifier from the Resource's relevant MES hierarchy.
- Combines both values into a fully qualified string NodeId.
- Stores the result in the read-only Resource attribute
IndEqOpcUaBaseNodeId.
Example:
| Input | Value |
|---|---|
| MES hierarchy path | Northwind.PortoPlant.PackagingHall.FillingArea.Line01.Filler01 |
Selected profile's Namespace | 2 |
Generated IndEqOpcUaBaseNodeId | ns=2;s=Northwind.PortoPlant.PackagingHall.FillingArea.Line01.Filler01 |
The optional SubArea or Production Line segment appears only when it is part of the MES model. This page does not define the equipment placement; it describes the resulting OPC UA identity.
Functional Structure#
Below the base node, the Common Data Model based structure organizes the interface into four functional folders. The handshake nodes inside those folders are part of this Industrial Equipment implementation.
flowchart LR
BASE("Resource Base <br/>NodeId")
BASE --> OP("Operation")
BASE --> RECIPE("Recipe")
BASE --> DATA("Data Collection")
BASE --> STATE("State")
OP --> TI("Track In")
OP --> TO("Track Out")
OP --> AB("Abort")
RECIPE --> RP("Actual Recipe<br/>Parameters")
DATA --> DP("Handshake and Actual<br/>Process Parameters")
STATE --> SP("Main State<br/>Substate<br/>Reason")
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 BASE highlight;
class OP,RECIPE,DATA,STATE standard;
class TI,TO,AB,RP,DP,SP secondary;
linkStyle default stroke:#94A3B8,stroke-width:1.5px; Complete Logical Tree#
<BaseNodeId>
├── Operation
│ ├── TrackIn
│ │ ├── Material
│ │ │ └── Name
│ │ ├── MachineOperationRequest
│ │ ├── MESOperationPerformed
│ │ └── MachineOperationConfirmed
│ ├── TrackOut
│ │ ├── Material
│ │ │ └── Name
│ │ ├── MachineOperationRequest
│ │ ├── MESOperationPerformed
│ │ └── MachineOperationConfirmed
│ └── Abort
│ ├── Material
│ │ └── Name
│ ├── MachineOperationRequest
│ ├── MESOperationPerformed
│ └── MachineOperationConfirmed
├── Recipe
│ ├── <ParameterName>
│ └── <ResourceRecipeName>
│ └── <ParameterName>
├── DataCollection
│ ├── Material
│ │ └── Name
│ ├── MachinePostDataRequest
│ ├── MESPostDataPerformed
│ ├── PostDataReadingNumber
│ ├── PostDataSampleId
│ └── Parameters
│ └── <ParameterName>
└── State
├── MainState
├── SubState
└── Reason
Dynamic parameter names
Names such as Recipe.<ParameterName> and DataCollection.Parameters.<ParameterName>, when used in examples, are placeholders. A machine exposes its real parameters, such as TargetSpeed, TorqueTarget, ActualCycleTime, or InspectionResult. The OPC UA Tag Names must match the corresponding MES Parameter name. Sub-recipe folder names must match the MES sub-recipe display names.
Relative Node Construction#
IndEqOpcUaBaseNodeId already contains the namespace and the string identifier:
The final NodeId for a standard node is created by appending its relative path:
Example:
ns=2;s=Northwind.PortoPlant.PackagingHall.FillingArea.Line01.Filler01.Operation.TrackIn.MachineOperationRequest
Namespace is configured in the selected OPC UA Server profile and is used when IndEqOpcUaBaseNodeId is generated. Because namespace indexes can differ between server deployments, verify the selected profile and regenerate or validate the Resource attribute in every environment. See Configure the OPC UA Connection.
Machine Interface Rules#
- Keep the fixed folder and control-node names exactly as documented.
- Use OPC UA
Booleanvalues for handshake bits. - Initialize handshake bits to
false. - Give Connect IoT OPC UA Client read access to machine-owned nodes and write access to MES-owned nodes.
- Use actual recipe and data collection parameter names.