Clause 5 defines the NodeClassesused to define Nodesin the OPC UAAddressSpace. NodeClassesare derived from a common Base NodeClass. This NodeClassis defined first, followed by those used to organise the AddressSpaceand then by the NodeClassesused to represent Objects.

The NodeClassesdefined to represent Objectsfall into three categories: those used to define instances, those used to define types for those instances and those used to define data types. Subclause 6.3describes the rules for subtyping and 6.4the rules for instantiation of the type definitions.

The OPC UA Address Space Model defines a Base NodeClassfrom which all other NodeClassesare derived. The derived NodeClassesrepresent the various components of the OPC UA Object Model (see 4.2). The Attributesof the Base NodeClassare specified in Table 7. There are no Referencesspecified for the Base NodeClass.

Table 7– Base NodeClass

Name

Use

Data Type

Description

Attributes

NodeId

M

NodeId

See 5.2.2

NodeClass

M

NodeClass

See 5.2.3

BrowseName

M

QualifiedName

See 5.2.4

DisplayName

M

LocalizedText

See 5.2.5

Description

O

LocalizedText

See 5.2.6

WriteMask

O

AttributeWriteMask

See 5.2.7

UserWriteMask

O

AttributeWriteMask

See 5.2.8

RolePermissions

O

RolePermissionType[]

See 5.2.9

UserRolePermissions

O

RolePermissionType[]

See 5.2.10

AccessRestrictions

O

AccessRestrictionsType

See 5.2.11

References

No Referencesspecified for this NodeClass

Nodesare unambiguously identified using a constructed identifier called the NodeId. Some Serversmay accept alternative NodeIdsin addition to the canonical NodeIdrepresented in this Attribute. A Servershall persist the NodeId of a Node, that is, it shall not generate new NodeIdswhen rebooting. The structure of the NodeIdis defined in 8.2.

The NodeClass Attributeidentifies the NodeClassof a Node. Its data type is defined in 8.30.

Nodeshave a BrowseName Attributethat is used as a non-localised human-readable name when browsing the AddressSpaceto create paths out of BrowseNames. The TranslateBrowsePathsToNodeIds Servicedefined in OPC 10000-4can be used to follow a path constructed of BrowseNames.

A BrowseNameshould never be used to display the name of a Node. The DisplayNameshould be used instead for this purpose.

Unlike NodeIds, the BrowseNamecannot be used to unambiguously identify a Node. Different Nodesmay have the same BrowseName.

Subclause 8.3defines the structure of the BrowseName. It contains a namespace and a string. The namespace is provided to make the BrowseNameunique in some cases in the context of a Node(e.g. Propertiesof a Node) although not unique in the context of the Server. If different organizations define BrowseNamesfor Properties, the namespace of the BrowseNameprovided by the organization makes the BrowseNameunique, although different organizations may use the same string having a slightly different meaning.

Serversmay often choose to use the same namespace for the NodeIdand the BrowseName. However, if they want to provide a standard Property, itsBrowseNameshall have the namespace of the standards body although the namespace of the NodeIdreflects something else, for example the local Server.

It is recommended that standard bodies defining standard type definitions use their namespace for the NodeIdof the TypeDefinitionNodeas well as for the BrowseNameof the TypeDefinitionNode.

The string-part of the BrowseNameis case sensitive. That is, Clientsshall consider them case sensitive. Serversare allowed to handle BrowseNamespassed in Servicerequests as case insensitive. Examples are the TranslateBrowsePathsToNodeIds Serviceor Eventfilter.

The DisplayName Attributecontains the localised name of the Node. Clientsshould use this Attributeif they want to display the name of the Nodeto the user. They should not use the BrowseNamefor this purpose. The Servermay maintain one or more localised representations for each DisplayName. Clientsnegotiate the locale to be returned when they open a session with the Server. Refer to OPC 10000-4for a description of session establishment and locales. Subclause 8.5defines the structure of the DisplayName. The string part of the DisplayNameis restricted to 512 characters.

The optional Description Attributeshall explain the meaning of the Nodein a localised text using the same mechanisms for localisation as described for the DisplayNamein 5.2.5.

The optional WriteMask Attributeexposes the possibilities of a client to write the Attributesof the Node. The WriteMask Attributedoes not take any user access rights into account, that is, although an Attributeis writable this may be restricted to a certain user/user group.

If the OPC UA Serverdoes not have the ability to get the WriteMaskinformation for a specific Attributefrom the underlying system, it should state that it is writable. If a write operation is called on the Attribute, the Servershould transfer this request and return the corresponding StatusCodeif such a request is rejected. StatusCodesare defined in OPC 10000-4.

The AttributeWriteMask DataTypeis defined in 0.

The optional UserWriteMask Attributeexposes the possibilities of a client to write the Attributesof the Nodetaking user access rights into account. It uses the AttributeWriteMask DataTypewhich is defined in 0.

The UserWriteMask Attributecan only further restrict the WriteMask Attribute, when it is set to not writable in the general case that applies for every user.

Clientscannot assume an Attributecan be written based on the UserWriteMask Attribute.It is possible that the Servermay return an access denied error due to some server specific change which was not reflected in the state of this Attributeat the time the Clientaccessed it.

The optional RolePermissions Attributespecifies the Permissionsthat apply to a Nodefor all Roleswhich have access to the Node. The value of the Attributeis an array of RolePermissionType Structures(see Table 8).

Table 8– RolePermissionType

Name

Type

Description

RolePermissionType

Structure

Specifies the Permissionsfor a Role

roleId

NodeId

The NodeIdof the Role Object.

permissions

PermissionType

A mask specifying which Permissionsare available to the Role.

Serversmay allow administrators to write to the RolePermissions Attribute.

If not specified, the value of DefaultRolePermissions Propertyfrom the NamespaceMetadata Objectassociated with the Nodeshall be used instead. If the NamespaceMetadata Objectdoes not define the Propertyor does not exist, then the Servershould not publish any information about how it manages Permissions.

If a Serversupports Permissionsfor a particular Namespaceit shall add the DefaultRolePermissions Propertyto the NamespaceMetadata Objectfor that Namespace(see Figure 8). If a particular Nodein the Namespaceneeds to override the default values, the Serveradds the RolePermissions Attribute to the Node. TheDefaultRolePermissions Propertyand RolePermissions Attribute shall only be readable by administrators. If a Serverallows the Permissionsto be changed these values shall be writeable. If the Serverallows the Permissionsto be overridden for a particular Nodebut does not currently have any Node Permissionsconfigured, then the value of the Attributeshall be an empty array. If the administrator wishes to remove overridden Permissions, an empty array shall be written to this Attribute. Serversshall prevent Permissionsfrom being changed in such a way as to render the Serverinoperable.

If a Serverpublishes information about the Rolesfor aNamespaceassigned to the current Session,it shall add the DefaultUserRolePermissions Property to the NamespaceMetadata Objectfor that Namespace. The value of this Propertyshall be a readonly list of Permissionsfor each Roleassigned to the current Session. If a particular Nodein the Namespaceoverrides the default RolePermissions the Servershall also override theDefaultUserRolePermissions by adding the UserRolePermissions Attribute to the Node. If the Serverallows the Permissionsto be overridden for a particular Nodebut does not currently have any Node Permissionsconfigured, then the Server shall return the value of the DefaultUserRolePermissions Propertyfor the Node Namespace.

If a Serverimplements a vendor specific Role Permissionmodel for a Namespace,it shall not add the DefaultRolePermissions orDefaultUserRolePermissions Properties to the NamespaceMetadata Object.

image011.png

Figure 8– Permissions in the Address Space

The optional UserRolePermissions Attributespecifies the Permissionsthat apply to a Nodefor all Rolesgranted to current Session. The value of the Attributeis an array of RolePermissionType Structures(see Table 8).

Clientsmay determine their effective Permissionsby logically ORing the Permissionsfor each Rolein the array.

The value of this Attributeis derived from the rules used by the Serverto map Sessionsto Roles. This mapping may be vendor specific or it may use the standard Rolemodel defined in 4.8.

This Attribute shall not be writeable.

If not specified, the value of DefaultUserRolePermissions Propertyfrom the Namespace Metadata Objectassociated with the Nodeis used instead. If the NamespaceMetadata Objectdoes not define the Propertyor does not exist, then the Serverdoes not publish any information about Rolesmapped to the current Session.

The optional AccessRestrictions Attributespecifies the AccessRestrictionsthat apply to a Node. Its data type is defined in 8.56. If a Serversupports AccessRestrictionsfor a particular Namespaceit adds the DefaultAccessRestrictions Propertyto the NamespaceMetadata Objectfor that Namespace(see Figure 8). If a particular Nodein the Namespaceneeds to override the default value the Serveradds the AccessRestrictions Attribute to the Node.

If a Serverimplements a vendor specific access restriction model for a Namespace,it does not add the DefaultAccessRestrictions Property to the NamespaceMetadata Object.

Referencesare defined as instances of ReferenceType Nodes. ReferenceType Nodesare visible in the AddressSpaceand are defined using the ReferenceType NodeClassas specified in Table 9. In contrast, a Referenceis an inherent part of a Nodeand no NodeClassis used to represent References.

This standard defines a set of ReferenceTypesprovided as an inherent part of the OPC UAAddress Space Model. These ReferenceTypesare defined in Clause 7and their representation in the AddressSpaceis defined in OPC 10000-5. Serversmay also define ReferenceTypes. In addition, OPC 10000-4defines NodeManagement Servicesthat allow Clientsto add ReferenceTypesto the AddressSpace.

Table 9– ReferenceType NodeClass

Name

Use

Data Type

Description

Attributes

Base NodeClass Attributes

M

--

Inherited from the Base NodeClass. See 5.2.

IsAbstract

M

Boolean

A boolean Attributewith the following values:

TRUEit is an abstract ReferenceType, i.e. no Referenceof this type shall exist, only of its subtypes.

FALSEit is not an abstract ReferenceType, i.e. Referencesof this type can exist.

Symmetric

M

Boolean

A boolean Attributewith the following values:

TRUEthe meaning of the ReferenceTypeis the same as seen from both the SourceNodeand the TargetNode.

FALSEthe meaning of the ReferenceTypeas seen from the TargetNodeis the inverse of that as seen from the SourceNode.

InverseName

O

LocalizedText

The inverse name of the Reference, which is the meaning of the ReferenceTypeas seen from the TargetNode.

References

HasProperty

0..*

Used to identify the Properties (see 5.3.3.2).

HasSubtype

0..*

Used to identify subtypes (see 5.3.3.3).

Standard Properties

NodeVersion

O

String

The NodeVersion Propertyis used to indicate the version of a Node.

The NodeVersion Propertyis updated each time a Referenceis added or deleted to the Nodethe Propertybelongs to. Attributevalue changes do not cause the NodeVersionto change. Clientsmay read the NodeVersion Propertyor subscribe to it to determine when the structure of a Nodehas changed.

The ReferenceType NodeClassinherits the base Attributesfrom the Base NodeClassdefined in 5.2. The inherited BrowseName Attributeis used to specify the meaning of the ReferenceTypeas seen from the SourceNode. For example, the ReferenceTypewith the BrowseName“Contains” is used in Referencesthat specify that the SourceNodecontains the TargetNode. The inherited DisplayName Attributecontains a translation of the BrowseName.

The BrowseNameof a ReferenceTypeshall be unique in a Server. It is not allowed that two different ReferenceTypeshave the same BrowseName.

The IsAbstract Attributeindicates if the ReferenceTypeis abstract. Abstract ReferenceTypescannot be instantiated and are used only for organizational reasons, for example to specify some general semantics or constraints that its subtypes inherit.

The Symmetric Attributeis used to indicate whether or not the meaning of the ReferenceTypeis the same for both the SourceNodeand TargetNode.

If a ReferenceTypeis symmetric, the InverseName Attributeshall be omitted. Examples of symmetric ReferenceTypesare “Connects To” and “Communicates With”. Both imply the same semantic coming from the SourceNodeor the TargetNode. Therefore both directions are considered to be forward References.

If the ReferenceTypeis non-symmetric and not abstract, the InverseName Attributeshall be set. The InverseName Attributespecifies the meaning of the ReferenceTypeas seen from the TargetNode. Examples of non-symmetric ReferenceTypesinclude “Contains” and “Contained In”, and “Receives From” and “Sends To”.

Referencesthat use the InverseName, such as “Contained In” References, are referred to as inverse References.

Figure 9provides examples of symmetric and non-symmetric Referencesand the use of the BrowseName and the InverseName.

image012.png

Figure 9– Symmetric and Non-Symmetric References

It might not always be possible for Serversto instantiate both forward and inverse Referencesfor non-symmetric ReferenceTypesas shown in Figure 9. When they do, the Referencesare referred to as bidirectional. Although not required, it is recommended that all hierarchical Referencesbe instantiated as bidirectional to ensure browse connectivity. A bidirectional Referenceis modelled as two separate References.

As an example of a unidirectional Reference, it is often the case that a signal sink knows its signal source, but this signal source does not know its signal sink. The signal sink would have a “Sourced By” Referenceto the signal source, without the signal source having the corresponding “Sourced To” inverse Referencesto its signal sinks.

The DisplayNameand the InverseNameare the only standardised places to indicate the semantic of a ReferenceType. There may be more complex semantics associated with a ReferenceTypethan can be expressed in those Attributes(e.g. the semantic of HasSubtype). This standard does not specify how this semantic should be exposed. However, the Description Attributecan be used for this purpose. This standard provides a semantic for the ReferenceTypesspecified in Clause 7.

A ReferenceTypecan have constraints restricting its use. For example, it can specify that starting from NodeA and only following Referencesof this ReferenceTypeor one of its subtypes, it shall never be able to return to A, that is, a “No Loop” constraint.

This standard does not specify how those constraints could or should be made available in the AddressSpace. Nevertheless, for the standard ReferenceTypes, some constraints are specified in Clause 7. This standard does not restrict the kind of constraints valid for a ReferenceType. It can, for example, also affect an ObjectType. The restriction that a ReferenceTypecan only be used by relating Nodesof some NodeClasseswith a defined cardinality is a special constraint of a ReferenceType.

HasSubtype Referencesand HasProperty Referencesare the only ReferenceTypesthat may be used with ReferenceType Nodesas SourceNode. ReferenceType Nodesshall not be the SourceNodeof other types of References.

HasProperty Referencesare used to identify the Propertiesof a ReferenceTypeand shall only refer to Nodesof the Variable NodeClass.

The Property NodeVersionis used to indicate the version of the ReferenceType.

There are no additional Propertiesdefined for ReferenceTypesin this standard. Additional parts this series of standards may define additional Propertiesfor ReferenceTypes.

HasSubtype Referencesare used to define subtypes of ReferenceTypes. It is not required to provide the HasSubtype Referencefor the supertype, but it is required that the subtype provides the inverse Referenceto its supertype. The following rules for subtyping apply.

  1. The semantic of a ReferenceType(e.g. “spans a hierarchy”) is inherited to its subtypes and can be refined there (e.g. “spans a special hierarchy”). The DisplayName, and also the InverseNamefor non-symmetric ReferenceTypes, reflect the specialization.
  2. If a ReferenceTypespecifies some constraints (e.g. “allow no loops”) this is inherited and can only be refined (e.g. inheriting “no loops” could be refined as “shall be a tree – only one parent”) but not lowered (e.g. “allow loops”).
  3. The constraints concerning which NodeClassescan be referenced are also inherited and can only be further restricted. That is, if a ReferenceType“A” is not allowed to relate an Objectwith an ObjectType, this is also true for its subtypes.
  4. A ReferenceTypeshall have exactly one supertype, except for the References ReferenceTypedefined in 7.2as the root type of the ReferenceTypehierarchy. The ReferenceTypehierarchy does not support multiple inheritances.

Underlying systems are often large and Clientsoften have an interest in only a specific subset of the data. They do not need, or want, to be burdened with viewing Nodesin the AddressSpacefor which they have no interest.

To address this problem, this standard defines the concept of a View. Each Viewdefines a subset of the Nodesin the AddressSpace. The entire AddressSpaceis the default View. Each Nodein a Viewmay contain only a subset of its References, as defined by the creator of the View. The View Nodeacts as the root for the Nodesin the View. Viewsare defined using the View NodeClass, which is specified in Table 10.

All Nodescontained in a Viewshall be accessible starting from the View Nodewhen browsing in the context of the View. It is not expected that all containing Nodescan be browsed directly from the View Node but rather browsed from other Nodescontained in theView.

A View Nodemay not only be used as additional entry point into the AddressSpacebut as a construct to organize the AddressSpaceand thus as the only entry point into a subset of the AddressSpace. Therefore Clientsshall not ignore View Nodeswhen exposing the AddressSpace. Simple Clientsthat do not deal with Viewsfor filtering purposes can, for example, handle a View Nodelike an Objectof type FolderType(see 5.5.3).

Table 10– View NodeClass

Name

Use

Data Type

Description

Attributes

Base NodeClass Attributes

M

--

Inherited from the Base NodeClass. See 5.2.

ContainsNoLoops

M

Boolean

If set to “true” this Attributeindicates that by following the Referencesin the context of the Viewthere are no loops, i.e. starting from a Node“A” contained in the Viewand following the forward Referencesin the context of the View Node“A” will not be reached again. It does not specify that there is only one path starting from the View Nodeto reach a Nodecontained in the View.

If set to “false” this Attributeindicates that following Referencesin the context of the Viewmay lead to loops.

EventNotifier

M

Byte

The EventNotifier Attributeis used to indicate if the Nodecan be used to subscribe to Eventsor to read / write historic Events.

The EventNotifieris an 8-bit unsigned integer with the structure defined in the following table.

Field

Bit

Description

SubscribeTo Events

0

Indicates if it can be used to subscribe to Events(0 means cannot be used to subscribe to Events, 1 means can be used to subscribe to Events)

Reserved

1

Reserved for future use. Shall always be zero.

HistoryRead

2

Indicates if the history of the Eventsis readable(0 means not readable, 1 means readable)

HistoryWrite

3

Indicates if the history of theEventsis writable(0 means not writable, 1 means writable)

Reserved

4:7

Reserved for future use. Shall always be zero

The second two bits also indicate if the history of the Eventsis available via the OPC UA Server.

References

HierarchicalReferences

0..*

Top level Nodesin a Vieware referenced by hierarchical References(see 7.3).

HasProperty

0..*

HasProperty Referencesidentify the Propertiesof the View.

Standard Properties

NodeVersion

O

String

The NodeVersion Propertyis used to indicate the version of a Node.

The NodeVersion Propertyis updated each time a Referenceis added or deleted to the Nodethe Propertybelongs to. Attributevalue changes do not cause the NodeVersionto change. Clientsmay read the NodeVersion Propertyor subscribe to it to determine when the structure of a Nodehas changed.

ViewVersion

O

UInt32

The version number for the View. When Nodesare added to or removed from a View, the value of the ViewVersion Propertyis updated. Clientsmay detect changes to the composition of a Viewusing this Property. The value of the ViewVersion shall always be greater than 0.

The View NodeClassinherits the base Attributesfrom the Base NodeClassdefined in 5.2. It also defines two additional Attributes.

The mandatory ContainsNoLoops Attributeis set to false if the Serveris not able to identify if the Viewcontains loops or not.

The mandatory EventNotifier Attribute identifies if the Viewcan be used to subscribe to Eventsthat either occur in the content of the Viewor as ModelChangeEvents(see 9.32) of the content of the Viewor to read / write the history of the Events. A Viewthat supports Eventsshall provide all Eventsthat occur in any Objectused as EventNotifierthat is part of the content of the View. In addition, it shall provide all ModelChangeEventsthat occur in the context of the View.

To avoid recursion, i.e. getting all Eventsof the Server, the Server Objectdefined in OPC 10000-5shall never be part of any Viewsince it provides all Eventsof the Server.

Viewsare defined by the Server. The browsing and querying Servicesdefined in OPC 10000-4expect the NodeIdof a View Nodeto provide these Servicesin the context of the View.

HasProperty Referencesare used to identify the Propertiesof a View. The Property NodeVersionis used to indicate the version of the View Node. The ViewVersion Propertyindicates the version of the content of the View. In contrast to the NodeVersion, the ViewVersion Propertyis updated even if Nodesnot directly referenced by the View Nodeare added to or deleted from the View. This Propertyis optional because it might not be possible for Serversto detect changes in the Viewcontents. Serversmay also generate a ModelChangeEvent,described in 9.32, if Nodesare added to or deleted from the View. There are no additional Propertiesdefined for Viewsin this document. Additional parts of this series of standards may define additional Propertiesfor Views.

Viewscan be the SourceNodeof any hierarchical Reference. They shall not be the SourceNodeof any non-hierarchical Reference.

Objectsare used to represent systems, system components, real-world objects and software objects. Objectsare defined using the Object NodeClass, specified in Table 11.

Table 11– Object NodeClass

Name

Use

Data Type

Description

Attributes

Base NodeClass Attributes

M

--

Inherited from the Base NodeClass. See 5.2.

EventNotifier

M

EventNotifierType

The EventNotifier Attributeis used to indicate if the Nodecan be used to subscribe to Eventsor the read / write historic Events.

The EventNotifierType is defined in 0.

References

HasComponent

0..*

HasComponent Referencesidentify the DataVariables, the Methodsand Objectscontained in the Object.

HasProperty

0..*

HasProperty Referencesidentify the Propertiesof the Object.

HasModellingRule

0..1

Objectscan point to at most one ModellingRule Objectusing a HasModellingRule Reference(see 6.4.4for details on ModellingRules).

HasTypeDefinition

1

TheHasTypeDefinition Reference points to the type definition of the Object. Each Objectshall have exactly one type definition and therefore be the SourceNodeof exactly one HasTypeDefinition Referencepointing to an ObjectType. See 4.5for a description of type definitions.

HasEventSource

0..*

The HasEventSource Referencepoints to event sources of the Object. Referencesof this type can only be used for Objectshaving their “SubscribeToEvents” bit set in the EventNotifier Attribute. See 7.17for details.

HasNotifier

0..*

The HasNotifier Referencepoints to notifiers of the Object. Referencesof this type can only be used for Objectshaving their “SubscribeToEvents” bit set in the EventNotifier Attribute. See 7.18for details.

Organizes

0..*

This Referenceshould be used only for Objectsof the ObjectType FolderType(see 5.5.3).

<other References>

0..*

Objectsmay contain other References.

Standard Properties

NodeVersion

O

String

The NodeVersion Propertyis used to indicate the version of a Node.

The NodeVersion Propertyis updated each time a Referenceis added or deleted to the Nodethe Propertybelongs to. Attributevalue changes do not cause the NodeVersionto change. Clientsmay read the NodeVersion Propertyor subscribe to it to determine when the structure of a Nodehas changed.

Icon

O

Image

The Icon Propertyprovides an image that can be used by Clientswhen displaying the Node. It is expected that the Icon Propertycontains a relatively small image.

NamingRule

O

NamingRuleType

The NamingRuleProperty defines the NamingRuleof a ModellingRule(see 6.4.4.2.1for details). This Propertyshall only be used for Objectsof the type ModellingRuleTypedefined in 6.4.4.

The Object NodeClassinherits the base Attributesfrom the Base NodeClassdefined in 5.2.

The mandatory EventNotifier Attribute identifies whether the Objectcan be used to subscribe to Eventsor to read and write the history of the Events.

The Object NodeClassuses the HasComponent Referenceto define the DataVariables, Objectsand Methodsof an Object.

It uses the HasProperty Referenceto define the Propertiesof an Object. The Property NodeVersionis used to indicate the version of the Object. The Property Iconprovides an icon of the Object. The Property NamingRuledefines the NamingRuleof a ModellingRuleand shall only be applied to Objectsof type ModellingRuleType. There are no additional Propertiesdefined for Objectsin this document. Additional parts of this series of standards may define additional Propertiesfor Objects.

To specify its ModellingRule, an Objectcan use at most one HasModellingRule Referencepointing to a ModellingRule Object. ModellingRulesare defined in 6.4.4.

HasNotifierand HasEventSource Referencesare used to provide information about eventing and can only be applied to Objectsused as event notifiers. Details are defined in 7.16and 7.18.

The HasTypeDefinition Referencepoints to the ObjectTypeused as type definition of the Object.

Objectsmay use any additional Referencesto define relationships to other Nodes. No restrictions are placed on the types of Referencesused or on the NodeClassesof the Nodesthat may be referenced. However, restrictions may be defined by the ReferenceTypeexcluding its use for Objects. Standard ReferenceTypesare described in Clause 7.

If the Objectis used as an InstanceDeclaration(see 4.5) then all Nodesreferenced with forward hierarchical Referencesdirection shall have unique BrowseNamesin the context of this Object.

If the Objectis created based on an InstanceDeclarationthen it shall have the same BrowseNameas its InstanceDeclaration.

ObjectTypesprovide definitions for Objects. ObjectTypesare defined using the ObjectType NodeClass, which is specified in Table 12.

Table 12– ObjectType NodeClass

Name

Use

Data Type

Description

Attributes

Base NodeClass Attributes

M

--

Inherited from the Base NodeClass. See 5.2.

IsAbstract

M

Boolean

A boolean Attributewith the following values:

TRUEit is an abstract ObjectType, i.e. no Objectsof this type shall exist, only Objectsof its subtypes.

FALSEit is not an abstract ObjectType, i.e. Objectsof this type can exist.

References

HasComponent

0..*

HasComponent Referencesidentify the DataVariables, the Methods, and Objectscontained in the ObjectType.

If and how the referenced Nodesare instantiated when an Objectof this type is instantiated, is specified in 6.4.

HasProperty

0..*

HasProperty Referencesidentify the Propertiesof the ObjectType. If and how the Propertiesare instantiated when an Objectof this type is instantiated, is specified in 6.4.

HasSubtype

0..*

HasSubtype Referencesidentify ObjectTypesthat are subtypes of this type. The inverse SubtypeOf Referenceidentifies the parent type of this type.

GeneratesEvent

0..*

GeneratesEvent Referencesidentify the type of Eventsinstances of this type may generate.

<other References>

0..*

ObjectTypesmay contain other Referencesthat can be instantiated by Objectsdefined by this ObjectType.

Standard Properties

NodeVersion

O

String

The NodeVersion Propertyis used to indicate the version of a Node.

The NodeVersion Propertyis updated each time a Referenceis added or deleted to the Nodethe Propertybelongs to. Attributevalue changes do not cause the NodeVersionto change. Clientsmay read the NodeVersion Propertyor subscribe to it to determine when the structure of a Nodehas changed.

Icon

O

Image

The Icon Propertyprovides an image that can be used by Clientswhen displaying the Node. It is expected that the Icon Propertycontains a relatively small image.

The ObjectType NodeClassinherits the base Attributesfrom the Base NodeClassdefined in 5.2. The additional IsAbstract Attributeindicates if the ObjectTypeis abstract or not.

The ObjectType NodeClassuses the HasComponent Referencesto define the DataVariables, Objects, and Methodsfor it.

The HasProperty Referenceis used to identify the Properties. The Property NodeVersionis used to indicate the version of the ObjectType. The Property Iconprovides an icon of the ObjectType. There are no additional Propertiesdefined for ObjectTypes in this document. Additional parts of this series of standards may define additional Propertiesfor ObjectTypes.

HasSubtype Referencesare used to subtype ObjectTypes. ObjectTypesubtypes inherit the general semantics from the parent type. The general rules for subtyping apply as defined in Clause 6. It is not required to provide the HasSubtype Referencefor the supertype, but it is required that the subtype provides the inverse Referenceto its supertype.

GeneratesEvent Referencesidentify the type of Eventsthat instances of the ObjectTypemay generate. These Objectsmay be the source of an Eventof the specified type or one of its subtypes. Serversshould make GeneratesEvent Referencesbidirectional References. However, it is allowed to be unidirectional when the Serveris not able to expose the inverse direction pointing from the EventTypeto each ObjectTypesupporting the EventType. Note that the EventNotifier Attributeof an Objectand the GeneratesEvent Referencesof its ObjectTypeare completely unrelated. Objectsthat can generate Eventsmight not be used as Objectsto which Clientssubscribe to get the corresponding Eventnotifications.

GeneratesEvent Referencesare optional, i.e. Objectsmay generate Eventsof an EventTypethat is not exposed by its ObjectType.

ObjectTypesmay use any additional Referencesto define relationships to other Nodes. No restrictions are placed on the types of Referencesused or on the NodeClassesof the Nodesthat may be referenced. However, restrictions may be defined by the ReferenceTypeexcluding its use for ObjectTypes. Standard ReferenceTypesare described in Clause 7.

All Nodesreferenced with forward hierarchical Referencesshall have unique BrowseNamesin the context of an ObjectType (see 4.5).

The ObjectType FolderTypeis formally defined in OPC 10000-5. Its purpose is to provide Objectsthat have no other semantic than organizing of the AddressSpace. A special ReferenceTypeis introduced for those Folder Objects, the Organizes ReferenceType. The SourceNodeof such a Referenceshould always be a Viewor an Objectof the ObjectType FolderType; the TargetNodecan be of any NodeClass. Organizes Referencescan be used in any combination with HasChild References(HasComponent, HasProperty, etc.; see 7.5) and do not prevent loops. Thus, they can be used to span multiple hierarchies.

Objectsare always based on an ObjectType, i.e. they have a HasTypeDefinition Referencepointing to its ObjectType.

Clientscan create Objectsusing the AddNodes Servicedefined in OPC 10000-4. The Servicerequires specifying the TypeDefinitionNodeof the Object. An Objectcreated by the AddNodes Servicecontains all components defined by its ObjectTypedependent on the ModellingRulesspecified for the components. However, the Servermay add additional components and Referencesto the Objectand its components that are not defined by the ObjectType. This behaviour is Serverdependent. The ObjectTypeonly specifies the minimum set of components that shall exist for each Objectof an ObjectType.

In addition to the AddNodes Service ObjectTypesmay have a special Methodwith the BrowseNameCreate”. This Method is used to create an Objectof this ObjectType. This Methodmay be useful for the creation of Objectswhere the semantic of the creation should differ from the default behaviour expected in the context of the AddNodes Service. For example, the values should directly differ from the default values or additional Objectsshould be added, etc. The input and output arguments of this Methoddepend on the ObjectType; the only commonality is the BrowseNameidentifying that this Methodwill create an Objectbased on the ObjectType. Serversshould not provide a Methodon an ObjectTypewith the BrowseNameCreate” for any other purpose than creating Objectsof the ObjectType.

Two types of Variablesare defined, Propertiesand DataVariables. Although they differ in the way they are used as described in 4.4and have different constraints described in the remainder of 5.6they use the same NodeClassdescribed in 5.6.2. The constraints of Propertiesbased on this NodeClassare defined in 5.6.3, the constraints of DataVariables in 5.6.4.

Variablesare used to represent values which may be simple or complex. Variablesare defined by VariableTypes, as specified in 5.6.5.

Variablesare always defined as Propertiesor DataVariablesof other Nodesin the AddressSpace. They are never defined by themselves. A Variableis always part of at least one other Node, but may be related to any number of other Nodes. Variablesare defined using the Variable NodeClass, specified in Table 13.

Table 13– Variable NodeClass

Name

Use

Data Type

Description

Attributes

Base NodeClass Attributes

M

--

Inherited from the Base NodeClass. See 5.2.

Value

M

Defined by the DataType Attribute

The most recent value of the Variablethat the Serverhas. Its data type is defined by the DataType Attribute. It is the only Attributethat does not have a data type associated with it. This allows all Variablesto have a value defined by the same Value Attribute.

DataType

M

NodeId

NodeIdof the DataTypedefinition for the Value Attribute. Standard DataTypesare defined in Clause 8.

ValueRank

M

Int32

This Attributeindicates whether the Value Attributeof the Variableis an array and how many dimensions the array has.

It may have the following values:

n > 1: the Value is an array with the specified number of dimensions.

OneDimension (1): The value is an array with one dimension.

OneOrMoreDimensions (0): The value is an array with one or more dimensions.

Scalar (−1): The value is not an array.

Any (−2): The value can be a scalar or an array with any number of dimensions.

ScalarOrOneDimension (−3): The value can be a scalar or a one dimensional array.

All DataTypes are considered to be scalar, even if they have array-like semantics like ByteString and String.

ArrayDimensions

O

UInt32[]

This Attributespecifies the maximum supported length of each dimension. If the maximum is unknown the value shall be 0.

The number of elements shall be equal to the value of the ValueRank Attribute. This Attributeshall be null if ValueRank≤ 0.

For example, if a Variableis defined by the following C array:

Int32 myArray[346];

then this Variable’s DataTypewould point to an Int32 and the Variable’s ValueRankhas the value 1 and the ArrayDimensionsis an array with one entry having the value 346.

The maximum number of elements of an array transferred on the wire is 2147483647 (max Int32).

AccessLevel

M

AccessLevelType

The AccessLevel Attributeis used to indicate how the Valueof a Variablecan be accessed (read/write) and if it contains current and/or historic data. The AccessLeveldoes not take any user access rights into account, i.e. although the Variableis writable this may be restricted to a certain user / user group.

The AccessLevelType is defined in 8.57.

UserAccessLevel

M

AccessLevelType

The UserAccessLevel Attributeis used to indicate how the Valueof a Variablecan be accessed (read/write) and if it contains current or historic data taking user access rights into account.

The AccessLevelType is defined in 8.57.

MinimumSamplingInterval

O

Duration

The MinimumSamplingInterval Attributeindicates how “current” the Valueof the Variablewill be kept. It specifies (in milliseconds) how fast the Servercan reasonably sample the value for changes (see OPC 10000-4for a detailed description of sampling interval).

A MinimumSamplingIntervalof 0 indicates that the Serveris to monitor the item continuously. A MinimumSamplingIntervalof -1 means indeterminate.

Historizing

M

Boolean

The Historizing Attributeindicates whether the Serveris actively collecting data for the history of the Variable. This differs from the AccessLevel Attributewhich identifies if the Variablehas any historical data. A value of TRUE indicates that the Serveris actively collecting data. A value of FALSE indicates the Serveris not actively collecting data. Default value is FALSE.

AccessLevelEx

O

AccessLevelExType

The AccessLevelEx Attributeis used to indicate how the Valueof a Variablecan be accessed (read/write), if it contains current and/or historic data and its atomicity. The AccessLevelExdoes not take any user access rights into account, i.e. although the Variableis writable this may be restricted to a certain user / user group. The AccessLevelExis an extended version of the AccessLevel attribute and as such contains the 8 bits of the AccessLevel attribute as the first 8 bits.

The AccessLevelExis a 32-bit unsigned integer with the structure defined in the 8.58.

If this Attribute is not provided the information provided by these additional Fields is unknown.

References

HasModellingRule

0..1

Variablescan point to at most one ModellingRule Objectusing a HasModellingRule Reference(see 6.4.4for details on ModellingRules).

HasProperty

0..*

HasProperty Referencesare used to identify the Propertiesof a DataVariable.

Propertiesare not allowed to be the SourceNodeof HasProperty References.

HasComponent

0..*

HasComponent Referencesare used by complex DataVariablesto identify their composed DataVariables.

Propertiesare not allowed to use this Reference.

HasTypeDefinition

1

TheHasTypeDefinition Reference points to the type definition of the Variable. Each Variableshall have exactly one type definition and therefore be the SourceNodeof exactly one HasTypeDefinition Referencepointing to a VariableType. See 4.5for a description of type definitions.

<other References>

0..*

Data Variablesmay be the SourceNodeof any other References.

Propertiesmay only be the SourceNodeof any non-hierarchical Reference.

Standard Properties

NodeVersion

O

String

The NodeVersion Propertyis used to indicate the version of a DataVariable. It does not apply to Properties.

The NodeVersion Propertyis updated each time a Referenceis added or deleted to the Nodethe Propertybelongs to. Attributevalue changes except for the DataType Attributedo not cause the NodeVersionto change. Clientsmay read the NodeVersion Propertyor subscribe to it to determine when the structure of a Nodehas changed.

Although the relationship of a Variableto its DataTypeis not modelled using References, changes to the DataType Attributeof a Variablelead to an update of the NodeVersion Property.

LocalTime

O

TimeZoneDataType

The LocalTime Propertyis only used for DataVariables. It does not apply to Properties.

This Propertyis a structure containing the Offset and the DaylightSavingInOffset flag. The Offset specifies the time difference (in minutes) between the SourceTimestamp (UTC) associated with the value and the time at the location in which the value was obtained. The SourceTimestamp is defined in OPC 10000-4.

If DaylightSavingInOffset is TRUE, then Standard/Daylight savings time (DST) at the originating location is in effect and Offset includes the DST correction. If FALSE then the Offset does not include DST correction and DST may or may not have been in effect.

AllowNulls

O

Boolean

The AllowNulls Propertyis only used for DataVariables. It does not apply to Properties.

This Propertyspecifies if a null value is allowed for the Value Attributeof the DataVariable. If it is set to true, the Servermay return null values and accept writing of null values. If it is set to false, the Servershall never return a null value and shall reject any request writing a null value.

If this Propertyis not provided, it is Server-specific if null values are allowed or not.

ValueAsText

O

LocalizedText

It is used for DataVariableswith a finite set of LocalizedTextsassociated with its value. For example any DataVariableshaving an Enumeration DataType.

This optional Propertyprovides the localized text representation of the value. It can be used by Clientsonly interested in displaying the text to subscribe to the Propertyinstead of the value attribute.

MaxStringLength

O

UInt32

Only used for DataVariableshaving a String DataType.

This optional Propertyindicates the maximum number of bytes supported by the DataVariable.

MaxCharacters

O

UInt32

Only used for DataVariableshaving a String DataType.

This optional Propertyindicates the maximum number of Unicode characters supported by the DataVariable.

MaxByteStringLength

O

UInt32

Only used for DataVariableshaving a ByteString DataType.

This optional Propertyindicates the maximum number of bytes supported by the DataVariable.

MaxArrayLength

O

UInt32

Only used for DataVariableshaving its ValueRank Attributenot set to scalar.

This optional Propertyindicates the maximum length of an array supported by the DataVariable. In a multidimensional array it indicates the overall length. For example, a three-dimensional array of 2 x 3 x 10 has the array length of 60.

NOTE In order to expose the length of an array of bytes do not use the DataType ByteStringbut an array of the DataType Byte. In that case the MaxArrayLengthapplies.

EngineeringUnits

O

EUInformation

Only used for DataVariableshaving a Number DataType.

This optional Propertyindicates the engineering units for the value of the DataVariable (e.g. hertz or seconds). Details about the Propertyand what engineering units should be used are defined in OPC 10000-8. The DataType EUInformationis also defined in OPC 10000-8.

The Variable NodeClassinherits the base Attributesfrom the Base NodeClassdefined in 5.2.

The Variable NodeClassalso defines a set of Attributesthat describe the Variable’sRuntime value. The Value Attributerepresents the Variablevalue. The DataType, ValueRankand ArrayDimensions Attributesprovide the capability to describe simple and complex values.

The AccessLevel Attributeindicates the accessibility of the Valueof a Variablenot taking user access rights into account. If the OPC UA Serverdoes not have the ability to get the AccessLevelinformation from the underlying system then it should state that it is readable and writable. If a read or write operation is called on the Variablethen the Servershould transfer this request and return the corresponding StatusCodeeven if such a request is rejected. StatusCodesare defined in OPC 10000-4.

The SemanticChangeflag of the AccessLevel Attributeis used for Propertiesthat may change and define semantic aspects of the parent Node. For example, the EngineeringUnit Propertydescribes the semantic of a DataVariable, whereas the Icon Propertydoes not. In this example, if the EngineeringUnit Propertymay change while the Server is running, the SemanticChangeflag shall be set for it.

Serversthat support Eventsubscriptions shall generate a SemanticChangeEvent whenever a Propertywith SemanticChangeflag set changes.

If a Variablehaving a Propertywith SemanticChangeflag set is used in a Subscriptionand the Propertyvalue changes, then the SemanticsChangedbit of the StatusCodeshall be set as defined in OPC 10000-4. Clientssubscribing to a Variableshould look at the StatusCodeto identify if the semantic has changed and retrieve the relevant Propertiesbefore processing the value returned from the Subscription.

The UserAccessLevel Attributeindicates the accessibility of the Valueof a Variabletaking user access rights into account. If the OPC UA Serverdoes not have the ability to get any user access rights related information from the underlying system then it should use the same bit mask as used in the AccessLevel Attribute. The UserAccessLevel Attributecan restrict the accessibility indicated by the AccessLevel Attribute, but not exceed it. Clientsshould not assume access rights based on the UserAccessLevel Attribute. For example it is possible that the Serverreturns an error due to some server specific change which was not reflected in the state of this Attributeat the time the Clientaccessed the Variable.

The MinimumSamplingInterval Attributespecifies how fast the Servercan reasonably sample the valuefor changes. The accuracy of this value (the ability of the Serverto attain “best case” performance) can be greatly affected by system load and other factors.

The Historizing Attributeindicates whether the Serveris actively collecting data for the history of the Variable. See OPC 10000-11for details on historizing Variables.

Clientsmay read or write Variablevalues, or monitor them for value changes, as specified in OPC 10000-4. OPC 10000-8defines additional rules when using the Servicesfor automation data.

To specify its ModellingRule, a Variablecan use at most one HasModellingRule Referencepointing to a ModellingRule Object. ModellingRulesare defined in 6.4.4.

If the Variableis created based on an InstanceDeclaration(see 4.5) it shall have the same BrowseNameas its InstanceDeclaration.

The other Referencesare described separately for Propertiesand DataVariablesin the remainder of 5.6

Propertiesare used to define the characteristics of Nodes. Propertiesare defined using the Variable NodeClass, specified in Table 13. However, they restrict their use.

Propertiesare the leaf of any hierarchy; therefore they shall not be the SourceNodeof any hierarchical References. This includes the HasComponentor HasProperty Reference, that is, Properties do not contain Propertiesand cannot expose their complex structure. However, they may be the SourceNodeof any non-hierarchical References.

The HasTypeDefinition Referencepoints to the VariableTypeof the Property. Since Propertiesare uniquely identified by their BrowseName, all Propertiesshall point to the PropertyType defined in OPC 10000-5.

Propertiesshall always be defined in the context of another Nodeand shall be the TargetNodeof at least one HasProperty Reference. To distinguish them from DataVariables, they shall not be the TargetNodeof any HasComponent Reference. Thus, a HasProperty Referencepointing to a Variable Nodedefines this Nodeas a Property.

The BrowseNameof a Propertyis always unique in the context of a Node. It is not permitted for a Nodeto refer to two Variablesusing HasProperty Referenceshaving the same BrowseName.

DataVariablesrepresent the content of an Object. DataVariablesare defined using the Variable NodeClass, specified in Table 13.

DataVariables identify their Propertiesusing HasProperty References. Complex DataVariablesuse HasComponent Referencesto expose their component DataVariables.

The Property NodeVersionindicates the version of the DataVariable.

The Property LocalTimeindicates the difference between the SourceTimestamp of the value and the standard time at the location in which the value was obtained.

The Property AllowNullsindicates if null values are allowed for the Value Attribute.

The Property ValueAsTextprovides a localized text representation for enumeration values.

The Property MaxStringLengthindicates the maximum number of bytes of a Stringvalue. If a Serverdoes not impose a maximum number of bytes or is not able to determine the maximum number of bytes this Propertyshall not be provided. If this Propertyis provided then the MaxCharacters Propertyshall not be provided.

The Property MaxCharactersindicates the maximum number of Unicode characters of a string value. If a Serverdoes not impose a maximum number of Unicode characters or is not able to determine the maximum number of Unicode characters this Propertyshall not be provided. If this Propertyis provided then the MaxStringLength Propertyshall not be provided.

The Property MaxByteStringLengthindicates the maximum number of bytes of a ByteStringvalue. If a Serverdoes not impose a maximum number of bytes or is not able to determine the maximum number of bytes this Propertyshall not be provided.

The Property MaxArrayLengthindicates the maximum allowed array length of the value.

The Property EngineeringUnitsindicates the engineering units of the value. There are no additional Propertiesdefined for DataVariablesin this part of this document. Additional parts of this series of standards may define additional Propertiesfor DataVariables. OPC 10000-8defines a set of Propertiesthat can be used for DataVariables.

DataVariablesmay use additional Referencesto define relationships to other Nodes. No restrictions are placed on the types of Referencesused or on the NodeClassesof the Nodesthat may be referenced. However, restrictions may be defined by the ReferenceTypeexcluding its use for DataVariables. Standard ReferenceTypesare described in Clause 7.

A DataVariableis intended to be defined in the context of an Object. However, complex DataVariablesmay expose other DataVariables, and ObjectTypesand complex VariableTypesmay also contain DataVariables. Therefore each DataVariableshall be the TargetNodeof at least one HasComponent Referencecoming from an Object, an ObjectType, a DataVariableor a VariableType. DataVariablesshall not be the TargetNodeof any HasProperty References. Therefore, a HasComponent Referencepointing to a Variable Nodeidentifies it as a DataVariable.

The HasTypeDefinition Referencepoints to the VariableTypeused as type definition of the DataVariable.

If the DataVariable is used as InstanceDeclaration(see 4.5) all Nodesreferenced with forward hierarchical Referencesshall have unique BrowseNamesin the context of this DataVariable.

VariableTypesare used to provide type definitions for Variables. VariableTypesare defined using the VariableType NodeClass, as specified in Table 14.

Table 14– VariableType NodeClass

Name

Use

Data Type

Description

Attributes

Base NodeClass Attributes

M

--

Inherited from the Base NodeClass. See 5.2

Value

O

Defined by the DataType attribute

The default Valuefor instances of this type.

DataType

M

NodeId

NodeIdof the data type definition for instances of this type.

ValueRank

M

Int32

This Attributeindicates whether the Value Attributeof the VariableTypeis an array and how many dimensions the array has.

It may have the following values:

n > 1: the Value is an array with the specified number of dimensions.

OneDimension (1): The value is an array with one dimension.

OneOrMoreDimensions (0): The value is an array with one or more dimensions.

Scalar (−1): The value is not an array.

Any (−2): The value can be a scalar or an array with any number of dimensions.

ScalarOrOneDimension (−3): The value can be a scalar or a one dimensional array.

NOTE All DataTypes are considered to be scalar, even if they have array-like semantics like ByteString and String.

ArrayDimensions

O

UInt32[]

This Attributespecifies the length of each dimension for an array value. The Attribute specifies the maximum supported length of each dimension. If the maximum is unknown the value is 0.

The number of elements shall be equal to the value of the ValueRank Attribute. This Attributeshall be null if ValueRank≤ 0.

For example, if a VariableTypeis defined by the following C array:

Int32 myArray[346];

then this VariableType’s DataTypewould point to an Int32, the VariableType’s ValueRankhas the value 1 and the ArrayDimensionsis an array with one entry having the value 346.

IsAbstract

M

Boolean

A boolean Attributewith the following values:

TRUEit is an abstract VariableType, i.e. no Variableof this type shall exist, only of its subtypes.

FALSEit is not an abstract VariableType, i.e. Variablesof this type can exist.

References

HasProperty

0..*

HasProperty Referencesare used to identify the Propertiesof the VariableType. The referenced Nodesmay be instantiated by the instances of this type, depending on the ModellingRulesdefined in 6.4.4.

HasComponent

0..*

HasComponent Referencesare used for complex VariableTypesto identify their containing DataVariables. Complex VariableTypescan only be used for DataVariables. The referenced Nodesmay be instantiated by the instances of this type, depending on the ModellingRulesdefined in 6.4.4.

HasSubtype

0..*

HasSubtype Referencesidentify VariableTypesthat are subtypes of this type. The inverse subtype of Referenceidentifies the parent type of this type.

GeneratesEvent

0..*

GeneratesEvent Referencesidentify the type of Eventsinstances of this type may generate.

<other References>

0..*

VariableTypesmay contain other Referencesthat can be instantiated by Variablesdefined by this VariableType. ModellingRulesare defined in 6.4.4.

Standard Properties

NodeVersion

O

String

The NodeVersion Propertyis used to indicate the version of a Node.

The NodeVersion Propertyis updated each time a Referenceis added or deleted to the Nodethe Propertybelongs to. Attributevalue changes except for the DataType Attributedo not cause the NodeVersionto change. Clientsmay read the NodeVersion Propertyor subscribe to it to determine when the structure of a Nodehas changed.

Although the relationship of a VariableTypeto its DataTypeis not modelled using References, changes to the DataType Attributeof a VariableTypelead to an update of the NodeVersion Property.

The VariableType NodeClassinherits the base Attributesfrom the Base NodeClassdefined in 5.2. The VariableType NodeClassalso defines a set of Attributesthat describe the default or initial value of its instance Variables. The Value Attributerepresents the default value. The DataType, ValueRankand ArrayDimensions Attributesprovide the capability to describe simple and complex values. The IsAbstract Attributedefines if the type can be directly instantiated.

The VariableType NodeClassuses HasProperty Referencesto define the Propertiesand HasComponent Referencesto define DataVariables. Whether they are instantiated depends on the ModellingRulesdefined in 6.4.4.

The Property NodeVersionindicates the version of the VariableType. There are no additional Propertiesdefined for VariableTypes in this document. Additional parts of this series of standards may define additional Propertiesfor VariableTypes. OPC 10000-8defines a set of Propertiesthat can be used for VariableTypes.

HasSubtype Referencesare used to subtype VariableTypes. VariableTypesubtypes inherit the general semantics from the parent type. The general rules for subtyping are defined in Clause 6. It is not required to provide the HasSubtype Referencefor the supertype, but it is required that the subtype provides the inverse Referenceto its supertype.

GeneratesEvent Referencesidentify that Variables of the VariableTypemay be the source of an Eventof the specified EventTypeor one of its subtypes. Serversshould make GeneratesEvent Referencesbidirectional References. However, it is allowed to be unidirectional when the Serveris not able to expose the inverse direction pointing from the EventTypeto each VariableTypesupporting the EventType.

GeneratesEvent Referencesare optional, i.e. Variablesmay generate Eventsof an EventTypethat is not exposed by its VariableType.

VariableTypesmay use any additional Referencesto define relationships to other Nodes. No restrictions are placed on the types of Referencesused or on the NodeClassesof the Nodesthat may be referenced. However, restrictions may be defined by the ReferenceTypeexcluding its use for VariableTypes. Standard ReferenceTypesare described in Clause 7.

All Nodesreferenced with forward hierarchical Referencesshall have unique BrowseNamesin the context of the VariableType (see 4.5).

Variablesare always based on a VariableType, i.e. they have a HasTypeDefinition Referencepointing to its VariableType.

Clientscan create Variablesusing the AddNodes Servicedefined in OPC 10000-4. The Servicerequires specifying the TypeDefinitionNodeof the Variable. A Variablecreated by the AddNodes Servicecontains all components defined by its VariableTypedependent on the ModellingRulesspecified for the components. However, the Servermay add additional components and Referencesto the Variableand its components that are not defined by the VariableType. This behaviour is Serverdependent. The VariableTypeonly specifies the minimum set of components that shall exist for each Variableof a VariableType.

Methodsdefine callable functions. Methodsare invoked using the Call Servicedefined in OPC 10000-4. Method invocations are not represented in the AddressSpace. Method invocations always run to completion and always return responses when complete. Methodsare defined using the Method NodeClass, specified in Table 15.

Table 15– Method NodeClass

Name

Use

Data Type

Description

Attributes

Base NodeClass Attributes

M

--

Inherited from the Base NodeClass. See 5.2.

Executable

M

Boolean

The Executable Attributeindicates if the Methodis currently executable (“False” means not executable, “True” means executable).

The Executable Attributedoes not take any user access rights into account, i.e. although the Methodis executable this may be restricted to a certain user / user group.

UserExecutable

M

Boolean

The UserExecutable Attributeindicates if the Methodis currently executable taking user access rights into account (“False” means not executable, “True” means executable).

References

HasProperty

0..*

HasProperty Referencesidentify the Propertiesfor the Method.

HasModellingRule

0..1

Methodscan point to at most one ModellingRule Objectusing a HasModellingRule Reference(see 6.4.4for details on ModellingRules).

GeneratesEvent

0..*

GeneratesEvent Referencesidentify the type of Eventsthat will be generated whenever the Methodis called.

AlwaysGeneratesEvent

0..*

AlwaysGeneratesEvent Referencesidentify the type of Eventsthat shall be generated whenever the Methodis called.

<other References>

0..*

Methodsmay contain other References.

Standard Properties

NodeVersion

O

String

The NodeVersion Propertyis used to indicate the version of a Node.

The NodeVersion Propertyis updated each time a Referenceis added or deleted to the Nodethe Propertybelongs to. Attributevalue changes do not cause the NodeVersionto change. Clientsmay read the NodeVersion Propertyor subscribe to it to determine when the structure of a Nodehas changed.

InputArguments

O

Argument[]

The InputArguments Property is used to specify the arguments that shall be used by a client when calling the Method.

OutputArguments

O

Argument[]

The OutputArguments Property specifies the result returned from the Methodcall.

The Method NodeClassinherits the base Attributesfrom the Base NodeClassdefined in 5.2. The Method NodeClassdefines no additional Attributes.

The Executable Attributeindicates whether the Methodis executable, not taking user access rights into account. If the OPC UA Servercannot get the Executableinformation from the underlying system, it should state that it is executable. If a Methodis called then the Servershould transfer this request and return the corresponding StatusCodeeven if such a request is rejected. StatusCodesare defined in OPC 10000-4.

The UserExecutable Attributeindicates whether the Methodis executable, taking user access rights into account. If the OPC UA Servercannot get any user rights related information from the underlying system, it should use the same value as used in the Executable Attribute. The UserExecutable Attributecan be set to “False”, even if the Executable Attributeis set to “True”, but it shall be set to “False” if the Executable Attributeis set to “False”. Clientscannot assume a Methodcan be executed based on the UserExecutable Attribute. It is possible that the Servermay return an access denied error due to some Serverspecific change which was not reflected in the state of this Attributeat the time the Clientaccessed it.

Propertiesmay be defined for Methodsusing HasProperty References. The Properties InputArgumentsand OutputArgumentsspecify the input arguments and output arguments of the Method. Both contain an array of the DataType Argumentas specified in 8.6. An empty array or a Propertythat is not provided indicates that there are no input arguments or output arguments for the Method.

The Property NodeVersionindicates the version of the Method. There are no additional Propertiesdefined for Methodsin this document. Additional parts of this series of standards may define additional Propertiesfor Methods.

To specify its ModellingRule, a Methodcan use at most one HasModellingRule Referencepointing to a ModellingRule Object. ModellingRulesare defined in 6.4.4.

GeneratesEvent Referencesidentify that Methodsmay generate an Eventof the specified EventTypeor one of its subtypes for every call of the Method. A Servermay generate one Eventfor each referenced EventTypewhen a Methodis successfully called.

AlwaysGeneratesEvent Referencesidentify that Methodswill generate an Eventof the specified EventTypeor one of its subtypes for every call of the Method. A Servershall always generate one Eventfor each referenced EventTypewhen a Methodis successfully called.

Serversshould make GeneratesEvent Referencesbidirectional References. However, it is allowed to be unidirectional when the Serveris not able to expose the inverse direction pointing from the EventTypeto each Methodgenerating the EventType.

GeneratesEvent Referencesare optional, i.e. the call of a Methodmay produce Eventsof an EventTypethat is not referenced with a GeneratesEvent Referenceby the Method.

Methodsmay use additional Referencesto define relationships to other Nodes. No restrictions are placed on the types of Referencesused or on the NodeClassesof the Nodesthat may be referenced. However, restrictions may be defined by the ReferenceTypeexcluding its use for Methods. Standard ReferenceTypesare described in Clause 7.

A Methodshall always be the TargetNodeof at least one HasComponent Reference. The SourceNodeof these HasComponent Referencesshall be an Objector an ObjectType. If a Methodis called then the NodeIdof one of those Nodesshall be put into the Call Servicedefined in OPC 10000-4as parameter to detect the context of the Methodoperation.

If the Methodis used as InstanceDeclaration(see 4.5) all Nodesreferenced with forward hierarchical Referencesshall have unique BrowseNamesin the context of this Method.

The DataType Model is used to define simple and structured data types. Data types are used to describe the structure of the Value Attributeof Variables and their VariableTypes. Therefore each Variableand VariableTypeis pointing with its DataType Attributeto a Nodeof the DataType NodeClassas shown in Figure 10.

image013.png

Figure 10– Variables, VariableTypes and their DataTypes

In many cases, the NodeIdof the DataType Node– the DataTypeId– will be well-known to Clientsand Servers. Clause 8defines DataTypesand OPC 10000-6defines their DataTypeIds. In addition, other organizations may define DataTypesthat are well-known in the industry. Well-known DataTypeIdsprovide for commonality across OPC UA Serversand allow Clientsto interpret values without having to read the type description from the Server. Therefore, Serversmay use well-known DataTypeIdswithout representing the corresponding DataType Nodesin their AddressSpaces.

In other cases, DataTypesand their corresponding DataTypeIdsmay be vendor-defined. Serversshould attempt to expose the DataType Nodesand the information about the structure of those DataTypesfor Clientsto read, although this information might not always be available to the Server.

Figure 11illustrates the Nodesused in the AddressSpaceto describe the structure of a DataType. The DataTypepoints to an Objectof type DataTypeEncodingType. Each DataTypecan have several DataTypeEncoding, for example “Default”, “UA Binary” and “XML” encoding. Services in OPC 10000-4allow Clientsto request an encoding or choosing the “Default” encoding. Each DataTypeEncodingis used by exactly one DataType, that is, it is not permitted for two DataTypesto point to the same DataTypeEncoding.

image014.png

Figure 11– DataType Model

Since the NodeIdof the DataTypeEncodingwill be used in some Mappings to identify the DataTypeand it’s encoding as defined in OPC 10000-6, those NodeIdsmay also be well-known for well-known DataTypeIds.

Different kinds of DataTypesare handled differently regarding their encoding and according to whether this encoding is represented in the AddressSpace.

Built-in DataTypesare a fixed set of DataTypes(see OPC 10000-6for a complete list of Built-inDataTypes). They have no encodings visible in the AddressSpacesince the encoding should be known to all OPC UA products. Examples of Built-in DataTypesare Int32(see 8.26) and Double(see 8.12).

Simple DataTypesare subtypes of the Built-in DataTypes. They are handled on the wire like the Built-in DataType, i.e. they cannot be distinguished on the wire from their Built-insupertypes. Since they are handled like Built-in DataTypesregarding the encoding they cannot have encodings defined in the AddressSpace. Clientscan read the DataType Attributeof a Variableor VariableTypeto identify the Simple DataTypeof the Value Attribute. An example of a Simple DataTypeis Duration. It is handled on the wire as a Doublebut the Client can read the DataType Attributeand thus interpret the value as defined by Duration(see 8.13).

Structured DataTypesare DataTypesthat represent structured data and are not defined as Built-in DataTypes. Structured DataTypesinherit directly or indirectly from the DataType Structuredefined in 8.33. Structured DataTypesmay have several encodings and the encodings are exposed in the AddressSpace. How the encoding of Structured DataTypesis handled on the wire is defined in OPC 10000-6. The encoding of the Structured DataTypeis transmitted with each value, thus Clientsare aware of the DataTypewithout reading the DataType Attribute. The encoding has to be transmitted so the Client is able to interpret the data. An example of a Structured DataTypeis Argument(see 8.6).

Enumeration DataTypesare DataTypesthat represent discrete sets of named values. Enumerations are always encoded as Int32 on the wire as defined in OPC 10000-6. EnumerationDataTypesinherit directly or indirectly from the DataType Enumerationdefined in 8.14. Enumerations have no encodings exposed in the AddressSpace. To expose the human-readable representation of an enumerated value the DataType Nodemay have the EnumStrings Propertythat contains an array of LocalizedText. The Integer representation of the enumeration value points to a position within that array. EnumValues Propertycan be used instead of the EnumStringsto support integer representation of enumerations that are not zero-based or have gaps. It contains an array of a Structured DataTypecontaining the integer representation as well as the human-readable representation. An example of an enumeration DataTypecontaining a sparse list of Integers is NodeClasswhich is defined in 8.30.

In addition to the DataTypes described above,abstract DataTypesare also supported, which do not have any encodings and cannot be exchanged on the wire. Variablesand VariableTypesuse abstract DataTypesto indicate that their Valuemay be any one of the subtypes of the abstract DataType. An example of an abstract DataTypeis Integer which is defined in 8.24.

The DataType NodeClassdescribes the syntax of a Variable Value. DataTypesare defined using the DataType NodeClass, as specified in Table 16.

Table 16– DataType NodeClass

Name

Use

Data Type

Description

Attributes

Base NodeClass Attributes

M

--

Inherited from the Base NodeClass. See 5.2.

IsAbstract

M

Boolean

A boolean Attributewith the following values:

TRUEit is an abstract DataType.

FALSEit is not an abstract DataType.

DataTypeDefinition

O

DataTypeDefinition

The DataTypeDefinition Attributeis used to provide the meta data and encoding information for custom DataTypes. The abstract DataTypeDefinition DataTypeis defined in 8.48.

Structure and Union DataTypes

The Attributeis mandatory for DataTypesderived from Structureand Union. For such DataTypes, the Attributecontains a structure of the DataType StructureDefinition. The StructureDefinition DataTypeis defined in 8.49. It is a subtype of DataTypeDefinition.

Enumeration and OptionSet DataTypes

The Attributeis mandatory for DataTypesderived from Enumeration, OptionSetand subtypes of UInteger representing an OptionSet. For such DataTypes, the Attributecontains a structure of the DataType EnumDefinition. The EnumDefinition DataTypeis defined in 8.50. It is a subtype of DataTypeDefinition.

References

HasProperty

0..*

HasProperty Referencesidentify the Propertiesfor the DataType.

HasSubtype

0..*

HasSubtype References may be used to span a data type hierarchy.

HasEncoding

0..*

HasEncoding References identify the encodings of the DataTyperepresented as Objectsof type DataTypeEncodingType.

Only concrete Structured DataTypesmay use HasEncoding References. Abstract, Built-in, Enumeration,and Simple DataTypesare not allowed to be the SourceNodeof a HasEncoding Reference.

Each concrete Structured DataTypeshall point to at least one DataTypeEncoding Objectwith the BrowseName“Default Binary” or “Default XML” having the NamespaceIndex0. The BrowseNameof the DataTypeEncoding Objectsshall be unique in the context of a DataType, i.e. a DataTypeshall not point to two DataTypeEncodingshaving the same BrowseName.

Standard Properties

NodeVersion

O

String

The NodeVersion Propertyis used to indicate the version of a Node.

The NodeVersion Propertyis updated each time a Referenceis added or deleted to the Nodethe Propertybelongs to. Attributevalue changes do not cause the NodeVersionto change. Clients may read the NodeVersion Propertyor subscribe to it to determine when the structure of a Nodehas changed. Clientsshall not use the content for programmatic purposes except for equality comparisions.

EnumStrings

O

LocalizedText[]

The EnumStrings Propertyonly applies for Enumeration DataTypes. It shall not be applied for other DataTypes. If the EnumValues Propertyis provided, the EnumStrings Propertyshall not be provided.

Each entry of the array of LocalizedTextin this Propertyrepresents the human-readable representation of an enumerated value. The Integer representation of the enumeration value points to a position of the array.

EnumValues

O

EnumValueType[]

The EnumValues Propertyonly applies for Enumeration DataTypes. It shall not be applied for other DataTypes. If the EnumStrings Propertyis provided, the EnumValues Propertyshall not be provided.

Using the EnumValues Propertyit is possible to represent Enumerations with integers that are not zero-based or have gaps (e.g. 1, 2, 4, 8, and 16).

Each entry of the array of EnumValueTypein this Propertyrepresents one enumeration value with its integer notation, human-readable representation and help information.

OptionSetValues

O

LocalizedText[]

The OptionSetValues Propertyonly applies for OptionSet DataTypes and UInteger DataTypes.

An OptionSet DataTypeis used to represent a bit mask and the OptionSetValues Propertycontains the human-readable representation for each bit of the bit mask.

The OptionSetValues Propertyprovides an array of LocalizedTextcontaining the human-readable representation for each bit.

The DataType NodeClassinherits the base Attributesfrom the Base NodeClassdefined in 5.2. The IsAbstract Attribute specifies if the DataTypeis abstract or not. Abstract DataTypescan be used in the AddressSpace, i.e. Variablesand VariableTypescan point with their DataType Attributeto an abstract DataType. However, concrete values can never be of an abstract DataTypeand shall always be of a concrete subtype of the abstract DataType.

HasProperty Referencesare used to identify the Propertiesof a DataType. The Property NodeVersionis used to indicate the version of the DataType. The Property EnumStringscontains human-readable representations of enumeration values and is only applied to Enumeration DataTypes. Instead of the EnumStrings Propertyan Enumeration DataTypecan also use the EnumValues Propertyto represent Enumerationswith integer values that are not zero-based or containing gaps. There are no additional Propertiesdefined for DataTypesin this standard. Additional parts of this series of standards may define additional Propertiesfor DataTypes.

HasSubtype Referencesmay be used to expose a data type hierarchy in the AddressSpace. The semantic of subtyping is only defined to the point, that a Server may provide instances of the subtype instead of the DataType. Clientsshould not make any assumptions about any other semantic with that information. For example, it might not be possible to cast a value of one data type to its base data type. Serversneed not provide HasSubtype References, even if their DataTypesspan a type hierarchy. Some restrictions apply for subtyping enumeration DataTypes as defined in 8.14.

HasEncoding Referencespoint from the DataTypeto its DataTypeEncodings. Each concrete Structured DataTypecan point to many DataTypeEncodings, but each DataTypeEncodingshall belong to one DataType, that is, it is not permitted for two DataType Nodesto point to the same DataTypeEncoding Objectusing HasEncoding References.

An abstract DataTypeis not the SourceNodeof a HasEncoding Reference. The DataTypeEncodingof an abstract DataTypeis provided by its concrete subtypes.

DataType Nodesshall not be the SourceNodeof other types of References. However, they may be the TargetNodeof other References.

If a DataType Nodeis exposed in the AddressSpace, it shall provide its DataTypeEncodingsusing HasEncoding References. These Referencesshall be bi-directional. Figure 12provides an example how DataTypesare modelled in the AddressSpace.

image015.png

Figure 12– Example of DataType Modelling

The information on how to encode the DataTypeis provided in the Attribute DataTypeDefinitionof the DataType Node. The content of this Attributeshall not be changed once it had been provided to Clientssince Clientsmight persistently cache this information. If the encoding of a DataTypeneeds to be changed conceptually a new DataTypeneeds to be provided, meaning that a new NodeIdshall be used for the DataType. Since Clientsidentify the DataTypevia the DataTypeEncodings, also the NodeIdsfor the DataTypeEncodingsof the DataTypeshall be changed, when the encoding changes.

Table 17summarises all Attributesdefined in this document and points out which NodeClassesuse them either in an optional (O) or mandatory (M) way.

Table 17– Overview of Attributes

Attribute

Variable

Variable Type

Object

Object Type

Reference Type

DataType

Method

View

AccessLevel

M

AccessLevelEx

O

ArrayDimensions

O

O

AccessRestrictions

O

O

O

O

O

O

O

O

BrowseName

M

M

M

M

M

M

M

M

ContainsNoLoops

M

DataType

M

M

DataTypeDefinition

O

Description

O

O

O

O

O

O

O

O

DisplayName

M

M

M

M

M

M

M

M

EventNotifier

M

M

Executable

M

Historizing

M

InverseName

O

IsAbstract

M

M

M

M

MinimumSamplingInterval

O

NodeClass

M

M

M

M

M

M

M

M

NodeId

M

M

M

M

M

M

M

M

RolePermissions

O

O

O

O

O

O

O

O

Symmetric

M

UserAccessLevel

M

UserExecutable

M

UserRolePermissions

O

O

O

O

O

O

O

O

UserWriteMask

O

O

O

O

O

O

O

O

Value

M

O

ValueRank

M

M

WriteMask

O

O

O

O

O

O

O

O