If you’re someone that’s new to OPC UA, one of the first things that I’d recommend you do is to study the OPC UA Address Space. The OPC UA address space is a standardized way for OPC UA Servers to represent processes, systems, and information to Client devices. In this article, I’ll review the key components of an OPC UA address space.
Processes, systems, and information are represented as Objects in OPC UA. Objects are collections of nodes, simple or complex, that together can represent both the state of the process and the process environment.
Nodes are the basic elements of the UA address space model. Nodes are categorized by a Class and composed of a set of attributes and one or more references to other nodes. Of the eight Node Classes defined in OPC UA, the two most important are the Object NodeClass and the Variable Node Class.
A node of the Object NodeClass is an organizing node that a designer uses to represent an entire real world machine, process, system, or some component of it. The root node of every UA address space is always a node of the Object NodeClass.
Variables of the Variable NodeClass are the only nodes in an OPC UA address space that contain data values. A node of the Variable NodeClass contains either a real world data value or a meta-data value that characterizes a node. A node with meta-data is known as a property and is referenced from the node it characterizes by a hasProperty reference. Properties characterize nodes with meta-data like engineering units, maximum or minimum value, last configuration time, or any other data the address space designer wishes to include.
Every node of an OPC UA Node Class is described by one or more of the twenty-one predefined attributes. Some attributes used by all Node Classes include:
- Node Class – The node category or Class for the node
- Node Description – A Local Language description of the node
- Node Identifier – The unambiguous identifier for the node
- Node Display Name – The text string used to display the name of the node
References are essentially pointers that relate nodes to one another. A reference is of a specific type and identifies both the source node and the target node. Some of the most common reference types include the hasTypeDefinition type, which identifies the type definition; the hasComponent type, which implies that a node is, in some fashion, an element of another node; and the hasProperty type, which identifies that there is a node which contains some information characterizing the source node.
A snippet of an address space is presented in the following figure. This address space snippet illustrates how a node can be a component of another node and how a variable can have a type definition and a property. The variable OvenTemp is a component of the Heat Sensor Object. It has a type definition that defines it, and a property reference to a maximum temperature. The MaxTemp property value characterizes the variable OvenTemp node by storing the maximum oven temperature.
The address spaces used by most automation technologies are flat. Modbus RTU, Modbus TCP, EtherNet/IP, and PROFINET IO are all examples of relatively flat address spaces. Either there are no organizing elements in these protocols or they have very limited organizational elements. None of these technologies offers OPC UA Client devices the ability to browse through the structure of a device, identify components, discover relationships, and signal what information they need and when.
All of this is unique to OPC UA, and it all begins with this very sophisticated address space model.