OPC UA provides a framework that can be used to represent complex information as Objectsin an AddressSpacewhich can be accessed with standard services. These Objectsconsist of Nodesconnected by References. Different classes of Nodesconvey different semantics. For example, a Variable Noderepresents a value that can be read or written. The Variable Nodehas an associated DataTypethat can define the actual value, such as a string, float, structure etc. It can also describe the Variablevalue as a variant. A Method Noderepresents a function that can be called. Every Nodehas a number of Attributesincluding a unique identifier called a NodeIdand non-localized name called as BrowseName. An Objectrepresenting a ‘Reservation’ is shown in Figure 3.

image007.png

Figure 3– A Basic Object in an OPC UA Address Space

Objectand Variable Nodesrepresent instances and they always reference a TypeDefinition(ObjectTypeor VariableType) Nodewhich describes their semantics and structure. Figure 4illustrates the relationship between an instance and its TypeDefinition.

The type Nodesare templates that define all of the children that can be present in an instance of the type. In the example in Figure 4the PersonTypeObjectTypedefines two children: First Name and Last Name. All instances of PersonType are expected to have the same children with the same BrowseNames. Within a type the BrowseNamesuniquely identify the children. This means Clientapplications can be designed to search for children based on the BrowseNamesfrom the type instead of NodeIds. This eliminates the need for manual reconfiguration of systems if a Clientuses types that multiple Serversimplement.

OPC UA also supports the concept of sub-typing. This allows a modeller to take an existing type and extend it. There are rules regarding sub-typing defined in OPC 10000-3, but in general they allow the extension of a given type or the restriction of a DataType. For example, the modeller may decide that the existing ObjectTypein some cases needs an additional Variable. The modeller can create a subtype of the ObjectTypeand add the Variable. A Clientthat is expecting the parent type can treat the new type as if it was of the parent type. Regarding DataTypes, subtypes can only restrict. If a Variableis defined to have a numeric value, a sub type could restrict it to a float.

image008.png

Figure 4– The Relationship between Type Definitions and Instances

Referencesallow Nodesto be connected in ways that describe their relationships. All Referenceshave a ReferenceTypethat specifies the semantics of the relationship. Referencescan be hierarchical or non-hierarchical. Hierarchical references are used to create the structure of Objectsand Variables. Non-hierarchical are used to create arbitrary associations. Applications can define their own ReferenceTypeby creating subtypes of an existing ReferenceType. Subtypes inherit the semantics of the parent but may add additional restrictions. Figure 5depicts several References,connecting different Objects.

image009.png

Figure 5– Examples of References between Objects

The figures above use a notation that was developed for the OPC UA specification. The notation is summarized in Figure 6. UML representations can also be used; however, the OPC UA notation is less ambiguous because there is a direct mapping from the elements in the figures to Nodesin the AddressSpaceof an OPC UA Server.

image010.png

Figure 6– The OPC UA Information Model Notation

A complete description of the different types of Nodes and References can be found in OPC 10000-3and the base structure is described in OPC 10000-5.

OPC UA specification defines a very wide range of functionality in its basic information model. It is not expected that all Clientsor Serverssupport all functionality in the OPC UA specifications. OPC UA includes the concept of Profiles, which segment the functionality into testable certifiable units. This allows the definition of functional subsets (that are expected to be implemented) within a companion specification. The Profilesdo not restrict functionality, but generate requirements for a minimum set of functionalities (see OPC 10000-7)

OPC UA allows information from many different sources to be combined into a single coherent AddressSpace. Namespaces are used to make this possible by eliminating naming and id conflicts between information from different sources. Namespaces in OPC UA have a globally unique string called a NamespaceUri and a locally unique integer called a NamespaceIndex. The NamespaceIndex is only unique within the context of a Sessionbetween an OPC UA Clientand an OPC UA Server. The Servicesdefined for OPC UA use the NamespaceIndex to specify the Namespace for qualified values.

There are two types of values in OPC UA that are qualified with Namespaces: NodeIds and QualifiedNames. NodeIds are globally unique identifiers for Nodes. This means the same Nodewith the same NodeId can appear in many Servers. This, in turn, means Clients can have built in knowledge of some Nodes. OPC UA Information Modelsgenerally define globally unique NodeIdsfor the TypeDefinitionsdefined by the Information Model.

QualifiedNames are non-localized names qualified with a Namespace. They are used for the BrowseNamesof Nodesand allow the same names to be used by different information models without conflict. TypeDefinitionsare not allowed to have children with duplicate BrowseNames; however, instances do not have that restriction.

An OPC UA companion specification for an industry specific vertical market describes an Information Modelby defining ObjectTypes, VariableTypes, DataTypesand ReferenceTypesthat represent the concepts used in the vertical market, and potentially also well-defined Objects as entry points into the AddressSpace.

The OPC 10000-100specification is an extension of the overall OPC Unified Architecture specification series and defines the information model associated with Devices. The model is intended to provide a unified view of Devicesirrespective of the underlying Deviceprotocols. Controllers are physical or logical Devicesand the Devicesmodel is therefore used as base for the IEC 61131-3 information model.

The Devicesinformation model specifies different ObjectTypesand procedures used to represent Devicesand related components like the communication infrastructure in an OPC UA Address Space. The main use cases are Deviceconfiguration and diagnostic, but it allows a general and standardized way for any kind of application to access Devicerelated information. The following examples illustrate the concepts used in this specification. See OPC 10000-100for the complete definition of the Devicesinformation model.

Figure 7shows an example for a temperature controller represented as Device Object. The component ParameterSetcontains all Variablesdescribing the Device. The component MethodSetcontains all Methodsprovided by the Device. Both components are inherited from the TopologyElementTypewhich is the root Objecttype of the Device Objecttype hierarchy. Objects of the type FunctionalGroupTypeare used to group the Parametersand Methods of the Device into logical groups. The FunctionalGroupTypeand the grouping concept are defined in OPC 10000-100but the groups are Device type specific i.e. the groups ProcessData and Configuration are defined by the TemperatureControllerTypein this example.

image011.png

Figure 7– OPC UA DevicesExample

Another OPC 10000-100concept used in this specification is described in Figure 8. The ConfigurableObjectTypeis used to provide a way to group subcomponents of a Device and to indicate which types of subcomponents can be instantiated. The allowed types are referenced from the SupportedTypesfolder. This information can be used by configuration clients to allow a user to select the type to instantiate as subcomponent of the Device.

image012.png

Figure 8– OPC UA DevicesExample

The SupportedTypesFolder can contain different subsets of ObjectTypesfor different instances of the ModularControlerTypedepending on their current configuration since the list contains only types that can be instantiated for the current configuration. The example expects that only one CPU can be used in the ModularControlerTypeand this CPU is already configured. The SupportedTypesFolder on the ModularControlerTypecontains all possible types including CPU types that can be used in the ModularControlerType.