OPC UA defines 8 Node Class types in the address space Object, Variable, Method, ObjectType, VariableType, ReferenceType, DataType, View. The COM UA Proxy maps only the nodes of Node Class types Object, Variable to the OPC DA types as shown in the figure below. Only the nodes under the Objects node are considered for the COM UA Proxy address space and others such as Types, Views are not mapped.
Figure A.15 shows an example mapping of OPC DA to OPC UA information.
Figure A.15 – Sample OPC DA mapping of OPC UA Information Model and Address Space
A node of Object Node class in the OPC UA server is represented in the Data Access COM UA Proxy as a Branch.
The root of the Data Access COM UA Proxy is the Objects folder of the OPC UA Server.
The OPC UA Address space hierarchy is discovered using the Browse Service for the Objects Node using the following filters:
- BrowseDirection as Forward
- ReferenceTypeId as Organizes and HasChild.
- IncludeSubtypes as True
- NodeClassMask as Object and Variable
The DisplayName of the OPC UA node is used as the Name for each Branch in the Data Access COM UA Proxy
Each Branch in the Data Access COM UA Proxy is assigned 3 properties:
- UA Browse Name (Property ID: 613): The value of the BrowseName attribute of the node in the OPC UA Server is assigned to this property.
- UA Description (Property ID: 614): The value of the Description attribute of the node in the OPC UA Server is assigned to this property, if a Description attribute is provided.
- Item Description (Property ID: 101): The value of the DisplayName attribute of the node in the OPC UA Server is assigned to this property.
NOTE COM DA Clients typically display the ItemID and the Item Description. Since the ItemID generated by the UA Proxy may be particularly difficult to read and understand, proxies may use the DisplayName as value for the Item Description Property as it will be easier to understand by a human user.
A node of Variable Node class in the OPC UA server is represented in the Data Access COM UA Proxy as an Item.
The DisplayName of the OPC UA node is used as the Name for each Item in the Data Access COM UA Proxy.
The NodeId of the OPC UA node is used as the ItemId for each Item in the Data Access COM UA Proxy. But the ‘=’ character is replaced with ‘-’ in the string. E.g. NodeId: ns=4,i=10, ItemID = “ns-4;i-10” or NodeId: ns=4,s=FL102, ItemID = “ns-4,s-FL102”
Each Item in the Data Access COM UA Proxy is assigned the following properties based on the node attributes or its references:
Standard Properties:
- Item Canonical Data Type (Property ID: 1): The combined value of the DataType attribute and the ValueRank attribute of the node in the OPC UA Server is assigned to this property (see A.4.3.2).
- Item Value (Property ID: 2): The value of the Value attribute of the node in the OPC UA Server is assigned to this property. Details on Value mapping are in A.4.3.2
- Item Quality (Property ID: 3): The StatusCode of the Value obtained for the node in the OPC UA Server is assigned to this property. Details on Quality mapping are in A.4.3.3
- Item Timestamp (Property ID: 4): The SourceTimestamp or ServerTimestamp of the Value obtained for the node in the OPC UA Server is assigned to this property. Details on Timestamp mapping are in A.4.3.4
- Item Access Rights (Property ID: 5): The value of the AccessLevel attribute of the node in the OPC UA Server is assigned to this property based on the following mapping:
- CurrentRead -> OPC_READABLE
- CurrentWrite -> OPC_WRITABLE
The other AccessLevel provided by OPC are ignored
- Server Scan Rate (Property ID: 6): The value of the MinimumSamplingInterval attribute of the node in the OPC UA Server is assigned to this property.
- Item EU Type (Property ID: 7): The EU Type value is assigned based on the references of the node in the OPC UA Server:
Analog(1) : if the node in the OPC UA Server references a EURange property node, then it is assigned the Analog EU Type.
Enumerated(2): if the node in the OPC UA Server references a EnumStrings property node, then it is assigned the Enumerated EU Type.
Empty(0): For a node in the OPC UA Server that does not meet above criteria, the type is set as 0 (Empty)
- EU Info ( Property ID: 8): if the node in the OPC UA Server references an EnumStrings property node, then the enumerated values of the property node is assigned to this property.
- EU Units (Property ID: 100): if the node in the OPC UA Server references a EngineeringUnits property node, then the value of the EngineeringUnits property node is assigned the EU Units property.
- Item Description (Property ID: 101): The value of the DisplayName attribute of the node in the OPC UA Server is assigned to this property.
- High EU (Property ID: 102): if the node in the OPC UA Server references a EURange property node, then the ‘High’ value of the property node is assigned to this property.
- Low EU (Property ID: 103): if the node in the OPC UA Server references a EURange property node, then the ‘Low’ value of the property node is assigned to this property.
- High Instrument Range ( Property ID: 104): if the node in the OPC UA Server references an InstrumentRange property node, then the ‘High’ value of the property node is assigned to this property.
- Low Instrument Range ( Property ID: 105): if the node in the OPC UA Server references an InstrumentRange property node, then the ‘Low’ value of the property node is assigned to this property.
- Contact Close Label ( Property ID: 106): if the node in the OPC UA Server references a FalseState property node, then the value of the property node is assigned to this property.
- Contact Open Label ( Property ID: 107): if the node in the OPC UA Server references a TrueState property node, then the value of the property node is assigned to this property.
- Item Time Zone ( Property ID: 108): if the node in the OPC UA Server references a TimeZone property node, then the ‘Offset’ value of the property node is assigned to this property.
New Properties:
- UA BuiltIn Type (Property ID: 610): The identifier value of the DataType node associated with the DataType attribute of the node in the OPC UA Server is assigned to this property.
- UA Data Type Id (Property ID: 611): The complete NodeId value (namespace and identifier) of the DataType node associated with the DataType attribute of the node in the OPC UA Server is assigned to this property.
- UA Value Rank (Property ID: 612): The value of the ValueRank attribute of the node in the OPC UA Server is assigned to this property.
- UA Browse Name (Property ID: 613): The value of the BrowseName attribute of the node in the OPC UA Server is assigned to this property.
- UA Description (Property ID: 614): The value of the Description attribute of the node in the OPC UA Server is assigned to this property.
For generating ItemIDs, the Proxy uses Namespace Indices. To assure that Clients can persist these ItemIDs, the Namespace Indices must never change. To accomplish this the Proxy has to persist its Namespace Table and only append entries but never change existing ones.
The Proxy also has to provide a translation from the current Namespace Table in the Server to the persisted Namespace Table.
If you move or copy the Proxy to another machine, the Namespace Table has to be copied to this machine as well.