OPC UA Object Types

OPC UA object types define class like structures in OPC UA namespace that can be instantiated and added to the server address space.

circle-info

For more information on UPC UA Object Types, see the OPC Foundation Referencearrow-up-right.

It is possible to create an instance of an object type by using the resource type Cybus::Node::OpcuaObject

Service Commissioning File Example

---
description: demo for OPC UA objecttype nodes

metadata:
    name: OPC UA Objecttypes demo

resources:
    opcuaServer:
        type: Cybus::Server::Opcua
        properties:
            hostname: 192.168.178.46
            securityModes: ['None', 'SignAndEncrypt']
            nodesetFiles: ['di', 'machinery', 'ia', 'machineTool']
            securityPolicies: ['None', 'Basic256Sha256']
            allowAnonymous: true
            port: 4841

    parentNodeRoot:
        type: Cybus::Node::Opcua
        properties:
            parent: !ref opcuaServer
            browseName: cybus
            nodeId: ns=1;s=cybus
            nodeType: Object

    #######################################################
    #
    # Sample of an insance of an
    # machine tool type. The type "MachineToolType" is
    # defined in the MachineTool Umati namespace
    #
    #######################################################
    testMachineToolType:
        type: Cybus::Node::OpcuaObject
        properties:
            parent: !ref parentNodeRoot
            browseName: MyMachineToolTypeTest
            objectTypeName: MachineToolType
            sourceNamespaceUrl: 'http://opcfoundation.org/UA/MachineTool/'

Output Format

The server provides the structure of the object types and its values as a JSON structure as the example:

_metadata

contains all metadata on a node. The nodeclass corresponds to the node-opcua Nodeclass enum documented here: http://node-opcua.github.io/api_doc/2.0.0/enums/nodeclass.htmlarrow-up-right> On nodes of type “Variable” the dataType entry indicates the OPC UA native data type documented here: http://node-opcua.github.io/api_doc/2.0.0/enums/datatype.htmlarrow-up-right>

_children

contains child objects in the OPC UA object tree

_value

contains the plain serialized value as JSON

Writing Updates

Writing updates to the OPC UA object type can be achieved by publishing to the <ObjectNodeName>/write topic. The same JSON structure can be used with updated data in the _value items. For data updates on U/INT64 please review the section on BigInt datatypes in OPC UA Server documentation. It is not necessary to update the complete structure. You can also only write a JSON structure that contains the direct value update. To update all values for the example structure above, only the following structure would be required:

Last updated

Was this helpful?