This standard defines ReferenceTypesas an inherent part of the OPC UA Address Space Model. Figure 33informally describes the hierarchy of these ReferenceTypes. Other parts of this series of standards may specify additional ReferenceTypes. The remainder of 7defines the ReferenceTypes. OPC 10000-5defines their representation in the AddressSpace.

image036.png

Figure 33– Standard ReferenceType Hierarchy

The References ReferenceTypeis an abstract ReferenceType; only subtypes of it can be used.

There is no semantic associated with this ReferenceType. This is the base type of all ReferenceTypes. All ReferenceTypesshall be a subtype of this base ReferenceType– either direct or indirect. The main purpose of this ReferenceTypeis allowing simple filter and queries in the corresponding Servicesof OPC 10000-5.

There are no constraints defined for this abstract ReferenceType.

The HierarchicalReferences ReferenceTypeis an abstract ReferenceType; only subtypes of it can be used and they shall be a non-symmetric Reference.

The semantic of HierarchicalReferencesis to denote that Referencesof HierarchicalReferencesspan a hierarchy. It means that it may be useful to present Nodesrelated with Referencesof this type in a hierarchical-like way. HierarchicalReferencesdoes not forbid loops. For example, starting from Node“A” and following HierarchicalReferences itmay be possible to browse to Node“A”, again.

It is not permitted to have a Propertyas SourceNodeof a Referenceof any subtype of this abstract ReferenceType.

It is not allowed that the SourceNodeand the TargetNodeof a Referenceof the ReferenceType HierarchicalReferencesare the same, that is, it is not allowed to have self-references using HierarchicalReferences.

The NonHierarchicalReferences ReferenceTypeis an abstract ReferenceType; only subtypes of it can be used.

The semantic of NonHierarchicalReferencesis to denote that its subtypes do not span a hierarchy and should not be followed when trying to present a hierarchy. To distinguish Hierarchicaland NonHierarchical References, all concrete ReferenceTypesshall inherit from either hierarchical Referencesor Non-hierarchical References, either direct or indirect.

There are no constraints defined for this abstract ReferenceType.

The HasChild ReferenceTypeis an abstract ReferenceType; only subtypes of it can be used. It is a subtype of HierarchicalReferences.

The semantic is to indicate that Referencesof this type span a non-looping hierarchy.

Starting from Node“A” and only following Referencesof the subtypes of the HasChild ReferenceTypeit shall never be possible to return to “A”. But it is allowed that following the Referencesthere may be more than one path leading to another Node“B”.

The Aggregates ReferenceTypeis an abstract ReferenceType; only subtypes of it can be used. It is a subtype of HasChild.

The semantic is to indicate a part (the TargetNode) belongs to the SourceNode. It does not specify the ownership of the TargetNode.

There are no constraints defined for this abstract ReferenceType.

The HasComponent ReferenceTypeis a concrete ReferenceTypethat can be used directly. It is a subtype of the Aggregates ReferenceType.

The semantic is a part-of relationship. The TargetNodeof a Referenceof the HasComponent ReferenceTypeis a part of the SourceNode. This ReferenceTypeis used to relate Objectsor ObjectTypeswith their containing Objects, DataVariables, and Methods. This ReferenceTypeis also used to relate complex Variables or VariableTypeswith their DataVariables.

Like all other ReferenceTypes, this ReferenceTypedoes not specify anything about the ownership of the parts, although it represents a part-of relationship semantic. That is, it is not specified if the TargetNodeof a Referenceof the HasComponent ReferenceTypeis deleted when the SourceNodeis deleted.

The TargetNodeof this ReferenceTypeshall be a Variable, an Objector a Method.

If the TargetNodeis a Variable, the SourceNodeshall be an Object, an ObjectType, a DataVariableor a VariableType. By using the HasComponent Reference, the Variableis defined as DataVariable.

If the TargetNodeis an Objector a Method, the SourceNodeshall be an Objector ObjectType.

The HasProperty ReferenceTypeis a concrete ReferenceTypethat can be used directly. It is a subtype of the Aggregates ReferenceType.

The semantic is to identify the Propertiesof a Node. Propertiesare described in 4.4.2.

The SourceNodeof this ReferenceTypecan be of any NodeClass. The TargetNodeshall be a Variable. By using the HasProperty Reference, the Variableis defined as Property. Since Propertiesshall not have Properties, a Propertyshall never be the SourceNodeof a HasProperty Reference.

The HasOrderedComponent ReferenceTypeis a concrete ReferenceTypethat can be used directly. It is a subtype of the HasComponent ReferenceType.

The semantic of the HasOrderedComponent ReferenceType– besides the semantic of the HasComponent ReferenceType– is that when browsing from a Nodeand following Referencesof this type or its subtype all Referencesare returned in the Browse Servicedefined in OPC 10000-4in a well-defined order. The order is Server-specific, but the Clientcan assume that the Serveralways returns them in the same order.

There are no additional constraints defined for this ReferenceType.

The HasSubtype ReferenceTypeis a concrete ReferenceTypethat can be used directly. It is a subtype of the HasChild ReferenceType.

The semantic of this ReferenceTypeis to express a subtype relationship of types. It is used to span the ReferenceTypehierarchy, whose semantic is specified in 5.3.3.3; a DataTypehierarchy is specified in 5.8.3, and other subtype hierarchies are specified in Clause 6.

The SourceNodeof Referencesof this type shall be an ObjectType, a VariableType, a DataTypeor a ReferenceTypeand the TargetNodeshall be of the same NodeClassas the SourceNode. Each ReferenceTypeshall be the TargetNodeof at most one Referenceof type HasSubtype.

The Organizes ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of HierarchicalReferences.

The semantic of this ReferenceTypeis to organise Nodesin the AddressSpace. It can be used to span multiple hierarchies independent of any hierarchy created with the non-looping Aggregates References.

The SourceNodeof Referencesof this type shall be an Object, ObjectTypeor a View.If it is an Objectthen it should be an Objectof the ObjectType FolderTypeor one of its subtypes (see 5.5.3).

The TargetNodeof this ReferenceTypecan be of any NodeClass.

The HasModellingRule ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of NonHierarchicalReferences.

The semantic of this ReferenceTypeis to bind the ModellingRuleto an Object, Variableor Method. The ModellingRulemechanisms are described in 6.4.4.

The SourceNodeof this ReferenceTypeshall be an Object, Variableor Method. The TargetNodeshall be an Objectof the ObjectType“ModellingRule” or one of its subtypes.

Each Nodeshall be the SourceNodeof at most one HasModellingRule Reference.

The HasTypeDefinition ReferenceType is a concrete ReferenceType and can be used directly. It is a subtype of NonHierarchicalReferences.

The semantic of this ReferenceTypeis to bind an Objector Variableto its ObjectType orVariableType,respectively.The relationships between types and instances are described in 4.5.

The SourceNodeof this ReferenceTypeshall be an Objector Variable. If the SourceNodeis an Object, then the TargetNodeshall be an ObjectType; if the SourceNodeis a Variable, then the TargetNodeshall be a VariableType.

Each Variableand each Objectshall be the SourceNodeof exactly one HasTypeDefinition Reference.

The HasEncoding ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of NonHierarchicalReferences.

The semantic of this ReferenceTypeis to reference DataTypeEncodingsof a subtype of the Structure DataType.

The SourceNodeof Referencesof this type shall be a subtype of the Structure DataType.

The TargetNodeof this ReferenceTypeshall be an Objectof the ObjectType DataTypeEncodingTypeor one of its subtypes (see 5.8.4).

The GeneratesEvent ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of NonHierarchicalReferences.

The semantic of this ReferenceTypeis to identify the types of Eventsinstances of ObjectTypes or VariableTypesmay generate and Methodsmay generate on each Methodcall.

The SourceNodeof Referencesof this type shall be an ObjectType, a VariableTypeor a Method InstanceDeclaration.

The TargetNodeof this ReferenceTypeshall be an ObjectTyperepresenting EventTypes, that is, the BaseEventTypeor one of its subtypes.

The AlwaysGeneratesEvent ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of GeneratesEvent.

The semantic of this ReferenceTypeis to identify the types of Events Methodshave to generate on each Methodcall.

The SourceNodeof Referencesof this type shall be a Method InstanceDeclaration.

The TargetNodeof this ReferenceTypeshall be an ObjectTyperepresenting EventTypes, that is, the BaseEventTypeor one of its subtypes.

The HasEventSource ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of HierarchicalReferences.

The semantic of this ReferenceTypeis to relate event sources in a hierarchical, non-looping organization. This ReferenceTypeand any subtypes are intended to be used for discovery of Eventgeneration in a Server. They are not required to be present for a Serverto generate an Eventfrom its source (causing the Event) to its notifying Nodes. In particular, the root notifier of a Server, the Server Objectdefined in OPC 10000-5, is always capable of supplying all Eventsfrom a Serverand as such has implied HasEventSource Referencesto every event source in a Server.

The SourceNodeof this ReferenceTypeshall be an Object or Viewthat is a source of Event Subscriptions. A source of Event Subscriptionsis an Objector Viewthat has its “SubscribeToEvents” bit set within the EventNotifier Attribute. The SourceNodemay also be an ObjectTypewhen referencing an InstanceDeclarationwhere an instance of the ObjectTypecontaining the InstanceDeclarationgenerates events. Note the ObjectTypeis not considered a source of Event Subscriptions.

The TargetNodeof this ReferenceTypecan be a Nodeof any NodeClassthat can generate event notifications via a subscription to the reference source.

Starting from Node“A” and only following Referencesof the HasEventSource ReferenceTypeor of its subtypes it shall never be possible to return to “A”. But it is permitted that, following the References, there may be more than one path leading to another Node“B”.

The HasNotifier ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of HasEventSource.

The semantic of this ReferenceTypeis to relate Object Nodesthat are notifiers with other notifier Object Nodes. The ReferenceTypeis used to establish a hierarchical organization of event notifying Objects. It is a subtype of the HasEventSource ReferenceTypedefined in 7.16.

The TargetNodeof this ReferenceTypeshall be Objectsthat are a source of Event Subscriptions.

If the TargetNodeof a Referenceof this type generates an Event, then this Eventshall also be provided in the SourceNodeof the Reference.

An example of a possible organization of Event Referencesis represented in Figure 34. In this example an unfiltered Eventsubscription directed to the “Pump” Objectwill provide the Eventsources “Start” and “Stop” to the subscriber. An unfiltered Eventsubscription directed to the “Area 1” Objectwill provide Eventsources from “Machine B”, “Tank A” and all notifier sources below “Tank A”.

image037.png

Figure 34– Event Reference Example

A second example of a more complex organization of Event Referencesis represented in Figure 35. In this example, explicit Referencesare included from the Server’s Server Object, which is a source of all Server Events. A second Eventorganization has been introduced to collect the Eventsrelated to “Tank Farm 1”. An unfiltered Eventsubscription directed to the “Tank Farm 1” Objectwill provide Eventsources from “Tank B”, “Tank A” and all notifier sources below “Tank B” and “Tank A”.

image038.png

Figure 35– Complex Event Reference Example

The HasInterface ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of the NonHierarchical ReferenceType.

The semantic of this ReferenceTypeis to show the availability of the Interfaceon the SourceNode. The Interfaceconcept is described in 4.9.2.

The SourceNodeof this ReferenceTypeshall be an Objector ObjectType. Interfacesshall not be a SourceNode. The TargetNodeshall be of a subtype of the BaseInterfaceType.

One SourceNodecan refer to multiple Interfaces.

The HasAddIn ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of the HasComponent ReferenceType.

The semantic of this ReferenceTypeis to bind an AddInto another Nodethat is the source of this Reference. The AddInconcept is described in 4.9.3.

The SourceNodeof this ReferenceTypeshall be an Objector ObjectType. The TargetNodeshall be an Object.

One SourceNodecan refer to multiple AddIns.

The IsDeprecated ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of the NonHierarchicalReferences ReferenceType.

The semantic of this ReferenceTypeis to indicate that a Nodehas been deprecated from an information model.

The SourceNodeof this ReferenceTypeshall be a Nodeof any NodeClass. The TargetNodeshall be an Object which represents the information model version where the Node was first deprecated. The DisplayNameand Descriptionof the TargetNodeshould suggest the information model version and other suggestions.

The HasStructuredComponent ReferenceTypeis a concrete ReferenceTypeand can be used directly. It is a subtype of the HasComponent ReferenceType.

The semantic of this ReferenceTypeis to indicate that a VariableTypeor Variablealso exposes its Structurefields as Variablesin the information model.

The SourceNodeof this ReferenceTypeshall be a VariableTypeor a Variablehaving a Structure DataType.

When the Valueof the SourceNodeis a scalar then the TargetNodeshall be a Variable which represents afieldoftheStructure DataType. The BrowseNameof a DataVariablewhich is exposed shall be the same as the field name oftheStructure DataType. The NamespaceIndexof the BrowseNameshall be the same as the NamespaceIndexof the Structure DataTypewhich first defines the field. The exposed fields shall be the same DataTypeand ValueRankas the field in the Structure. The Valueis expected to represent the value of the Structure’sfield.

When the Valueof the SourceNodeis an array then the BrowseNameof the TargetNodeshall be <V[N]> where ‘V’ is the BrowseName of the Parent Node and ‘N’ shall be the array index number of the DataTypeof the Structure. The NamespaceIndexof the BrowseNameshall be the same as the NamespaceIndexof the Structure DataTypewhich first defines the field. For multidimensional arrays the BrowseNameshall be <V[M][N][…]>. The Valueis expected to represent the value of the array index which the BrowseNamedescribes. An example of this is shown in Figure 36. In this example ‘MyStructuredVariable’ has a Structure DataTypewith 2 fields, ‘FieldX’ and ‘FieldY’ and an array size of 2.

image039.png

Figure 36– Example of using HasStructuredComponent ReferencyType

The ReferenceType HasStructuredComponentcan be used to expose the entries of a multi-dimensional array of a Variableas subvariables. The same is true for the ModellingRule ExposesItsArray. However, both concepts handle this differently, as described in this section.

Using the HasStructuredComponent ReferenceType, the BrowseNameof the subvariable is defined and reflects the place in the array. That is, if the order in the array is changing, e.g. by deleting the first entry, the values of the correponding subvariables change, and the subvariable with the highest index is removed. When subscribing to a subvariable, the Clientalways get the value assigned to the place in the array. The same behaviour can be achieved when subscribing to the corresponding IndexRangeon the parent Variable.

Using the ExposesItsArray ModellingRule, the BrowseNameof the subvariables are not defined and do not reflect the place in the array. That is, if the order in the array is changing, e.g. by deleting the first entry, the values of the corresponding subvariables do not change, and the subvariable containing the first entry is removed. When subscribing to a subvariable, the order of the array is not considered. Even if the order is changing, the Clientsubscribing to the subvariable will observe the original subscribed content.

In Figure 37, an example is given, visualizing the differences. VariableA uses HasStructuredComponent. When the first entry in the array is deleted, the Values of the Variablesrepresenting the first and second entry are changed accordingly, and the third Variableis deleted.

VariableB uses ExposesItsArray. When the first entry in the array is deleted, the values of the Variablesoriginally representing the second and third entry of the array do not change, but the Variablerepresenting the first entry is deleted.

image040.png

Figure 37– Difference between HasStructuredComponent and ExposesItsArray

The AssociatedWith ReferenceTypeis a concrete ReferenceTypethat can be used directly. It is a subtype of the NonHierarchicalReferences ReferenceType. The AssociatedWith referenceissymmetricandhasnoInverseName.

The semantic of this ReferenceTypeis to provide some generic association between two Objects.

The SourceNodeand TargetNodeof Referencesof this type shall be Objects.