Figure 35 depicts the ObjectTypes of the message and transport protocol mapping independent part of the PubSub configuration model, their main components and their relations.

image038.png

Figure 35 – PubSub Configuration Model Overview

An instance of the PublishSubscribeType with the name PublishSubscribe represents the root Object for all PubSub related Objects. It manages a list of PubSubConnectionType Objects and the PublishedDataSetType Objects through the PublishedDataSets folder.

On the Publisher side, a PublishedDataSet represents the information to publish and the DataSetWriter represents the transport settings for creating DataSetMessages for delivery through a Message Oriented Middleware.

On the Subscriber side, a DataSetReader represents the transport settings for receiving DataSetMessages from a Message Oriented Middleware and the SubscribedDataSet represents the information to dispatch the received DataSets in the Subscriber.

The configuration can be done through Methods or product specific configuration tools. The DataSetFolderType can be used to organize the PublishedDataSetType Objects in a tree of folders.

Figure 36 shows an example configuration with the root Object PublishSubscribe that is a component of the Server Object.

image039.png

Figure 36 – PubSub Example Objects

The example defines two PublishedDataSets published through one connection and one group and one DataSetReader used to subscribe one DataSet.

Figure 37 depicts the information flow and the related ObjectTypes from the PubSub Information M odel. The boxes in the lower part of the figure are examples for blocks necessary to implement the information flow in a Publisher.

image040.png

Figure 37 – PubSub Information Flow

The PublishedDataSetType represents the selection and configuration of Variables or Events. An Event notification or a snapshot of the Variables comprises a DataSet. A DataSet is the content of a DataSetMessage created by a DataSetWriter. Examples of concrete PublishedDataSetTypes are PublishedEventsType and PublishedDataItemsType. An instance of PublishedDataSetType has a list of DataSetWriters used to produce DataSetMessages sent via the Message Oriented Middleware. The DataSetMetaData describes the content of a DataSet.

Instances of the PubSubConnectionType represent settings associated with Message Oriented Middleware. A connection manages a list of WriterGroupType Objects and transport protocol mapping specific parameters.

Instances of the WriterGroupType contain instances of DataSetWriter Objects that share settings such as security configuration, encoding or timing of NetworkMessages. A group manages a list of DataSetWriterType Objects that define the payload of the NetworkMessages created from the group settings.

DataSetWriters represent the configuration necessary to create DataSetMessages contained as payload in NetworkMessages.

DataSetReaders represent the configuration necessary to receive and process DataSetMessages on the Subscriber side.

NetworkMessages are sent through a transport like AMQP, MQTT or OPC UA UDP. Other transport protocols can be added as subtypes without changing the base model.

The definition of the PubSub related ObjectTypes does not prescribe how the instances are created or configured or how dynamic the configuration can be. A Publisher may have a preconfigured number of PublishedDataSets and DataSetWriters where only protocol specific settings can be configured. If a Publisher allows dynamic creation of Objects like DataSets and DataSetWriters, this can be done through product specific configuration tools or through the standardized configuration Methods defined in this specification.

Publishers and Subscribers may be configurable through vendor-specific engineering tools or with the configuration Methods and parameters described in this standard. This allows a standard OPC UA Client based configuration tool to configure an OPC UA Server that is a Publisher and/or Subscriber.

Configuration parameters are exposed as Variables of the configurable Objects. Methods for creation of Objects have input arguments for mandatory Variables. Optional Variables are not contained in the input arguments of Methods for Object creation. Optional Variables are created with a default value if they are supported for the Object or required for the current configuration. The default value can be changed by writing to the Variable after creation. Newly created Objects shall have the Status Disabled_0 if they are created with the standard Methods.

Variables that can be configured shall have the CurrentWrite flag set in the AccessLevel Attribute. The UserAccessLevel may be limited based on the rights of the user of the OPC UA Client.

Configuration changes shall be applied in a batch to avoid inconsistencies between different configuration parameters. The mechanism to apply changes in a batch operation is to allow changes only when the related Object has the Status Disabled_0 and to apply the new configuration settings when the Status is changed to Operational_2. Therefore write operations to configuration parameters shall be rejected with Bad_InvalidState if the Status is not Disabled_0. Changes to PublishedDataSet configurations shall be rejected with Bad_InvalidState if not all related DataSetWriters have the Status Disabled_0.

Figure 38 depicts the PublishSubscribeType and the components used to represent the PublishSubscribe Object.

image041.png

Figure 38 – PublishSubscribe Object Types Overview

The PublishSubscribe Object is the root node for all PubSub related configuration Objects. It is an instance of the PublishSubscribeType and a component of the Server Object.

The PublishSubscribeType contains the entry point for PublishedDataSet configuration, the entry point for PubSub connections. In addition, it provides Methods for connection management.

An instance of this ObjectType represents the root Object for all PubSub related configuration and metadata Objects. The one instance of this ObjectType that represents the root Object is defined in 8.4. The ObjectType is formally defined in Table 103.

Table 103 – PublishSubscribeType Definition

Attribute

Value

BrowseName

PublishSubscribeType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of PubSubKeyServiceType defined in 8.2.

HasPubSub‌Connection

Object

<ConnectionName>

PubSubConnectionType

Optional‌Placeholder

HasComponent

Method

SetSecurityKeys

Defined in 9.1.3.3.

Optional

HasComponent

Method

AddConnection

Defined in 9.1.3.4.

Optional

HasComponent

Method

RemoveConnection

Defined in 9.1.3.5.

Optional

HasComponent

Object

PublishedDataSets

DataSetFolderType

Mandatory

HasComponent

Object

Status

PubSubStatusType

Mandatory

HasComponent

Object

Diagnostics

PubSubDiagnosticsRootType

Optional

HasProperty

Variable

SupportedTransportProfiles

String[]

PropertyType

Mandatory

The PublishSubscribeType ObjectType is a concrete type and can be used directly.

The configured connection Objects are added as components to the instance of the PublishSubscribeType. Connection Objects may be configured with product specific configuration tools or added and removed through the Methods AddUadpConnection, AddBrokerConnection and RemoveConnection. The PubSubConnectionType is defined in 9.1.5.2. The HasPubSubConnection ReferenceType is defined in 9.1.3.6.

The PublishedDataSets Object contains the configured PublishedDataSets. The DataSetFolderType is defined in 9.1.4.5.1. The DataSetFolderType can be used to build a tree of DataSetFolders.

The Status Object provides the current operational status of the PublishSubscribe functionality. The PubSubStatusType is defined in 9.1.10. The state machine for the status and the relation to other PubSub Objects like PubSubConnection, PubSubGroup, DataSetWriter and DataSetReader are defined in 6.2.1.

The Diagnostics Object provides the current diagnostic information for the PublishSubscribe Object. The PubSubDiagnosticsRootType is defined in 9.1.11.7.

The SupportedTransportProfiles Property provides a list of TransportProfileUris supported by the Server. The TransportProfileUris are defined in OPC 10000-7.

This Method is used to push the security keys for a SecurityGroup into a Publisher or Subscriber. It is used if Publisher or Subscriber have no OPC UA Client functionality.

Encryption is required for this Method. The Method shall return Bad_SecurityModeInsufficient if the communication is not encrypted.

Signature

SetSecurityKeys (

[in]String SecurityGroupId

[in]String SecurityPolicyUri

[in]IntegerId CurrentTokenId

[in]ByteString CurrentKey

[in]ByteString[]FutureKeys

[in]Duration TimeToNextKey

[in]Duration KeyLifetime

);

Argument

Description

SecurityGroupId

The identifier for the SecurityGroup.

SecurityPolicyUri

The URI for the set of algorithms and key lengths used to secure the messages. The SecurityPolicies are defined in OPC 10000-7.

CurrentTokenId

The SecurityTokenId that appears in the header of messages secured with the CurrentKey. It starts at 1 and is incremented by 1 each time the KeyLifetime elapses even if no keys are requested. If the CurrentTokenId increments past the maximum value of UInt32 it restarts a 1.

If the PubSub Object has key material from previous SetSecurityKeys Method calls, the CurrentTokenId is used to match the existing list with the fetched list and to eliminate duplicates.

If the CurrentTokenId is unknown, the existing list shall be discarded and replaced.

CurrentKey

The current key used to secure the messages. This key is not used directly since the protocol associated with the PubSubGroup(s) specifies an algorithm to generate distinct keys for different types of cryptography operations.

FutureKeys

An ordered list of future keys that are used when the KeyLifetime elapses. The SecurityTokenId associated with the first key in the list is 1 more than the CurrentTokenId. All following keys have a SecurityTokenId that is incremented by 1 for every key returned.

TimeToNextKey

The time, in milliseconds, before the CurrentKey is expected to expire.

If a Publisher uses this Method to get the keys from a SKS, the TimeToNextKey and KeyLifetime are used to calculate the time the Publisher shall use the next key. The TimeToNextKey defines the time when to switch from CurrentKey to FutureKeys and the KeyLifetime defines when to switch from one future key to the next future key.

For a Subscriber the TimeToNextKey and KeyLifetime are used to calculate the time the Subscriber must expect that the Publishers use the next key. Due to network latency, out of order delivery and the use of keys for several Publishers, a Subscriber must expect some overlap time where NetworkMessages are received that are using the previous or the next key.

TimeToNextKey and KeyLifetime are also used to calculate the time until Publisher and Subscriber must fetch new keys.

KeyLifetime

The lifetime of a key in milliseconds.

The returned keys may expire earlier if the keys are discarded for some reason. An unplanned key rotation is indicated in the NetworkMessage header before the next key is used to give the Subscriber some time to fetch new keys.

If the CurrentTokenId in the message is not recognized the receiver shall call this Method again to get new keys.

Method Result Codes

ResultCode

Description

Bad_NotFound

The SecurityGroupId is unknown.

Bad_UserAccessDenied

The caller is not allowed to set the keys for the SecurityGroup.

Bad_SecurityModeInsufficient

The communication channel is not using encryption.

This Method is used to add a new PubSubConnection Object to the PublishSubscribe Object.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddConnection (

[in]PubSubConnectionDataTypeConfiguration

[out]NodeId ConnectionId

);

Argument

Description

Configuration

Configuration parameters for the PubSubConnection. The parameters and the PubSubConnectionDataType are defined in 6.2.6.

ConnectionId

The NodeId of the new connection.

Method Result Codes

ResultCode

Description

Bad_InvalidArgument

The Server is not able to apply the name. The name may be too long or may contain invalid character.

Bad_BrowseNameDuplicated

An Object with the name already exists.

Bad_ResourceUnavailable

The Server has not enough resources to add the PubSubConnection Object.

Bad_UserAccessDenied

The Session user is not allowed to create a PubSubConnection Object.

This Method is used to remove a PubSubConnection Object from the PublishSubscribe Object.

A successful removal of the PubSubConnection Object removes all associated group, DataSetWriter and DataSetReader Objects. Before the Objects are removed, their state is set to Disabled_0.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

RemoveConnection (

[in]NodeIdConnectionId

);

Argument

Description

ConnectionId

NodeId of the PubSubConnection Object to remove from the Server

Method Result Codes

ResultCode

Description

Bad_NodeIdUnknown

The ConnectionId is unknown.

Bad_UserAccessDenied

The Session user is not allowed to delete the PubSubConnection Object.

The HasPubSubConnection ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the HasComponent ReferenceType.

The SourceNode of References of this type shall be the PublishSubscribe Object defined in 8.4.

The TargetNode of this ReferenceType shall be an Object of type PubSubConnectionType defined in 9.1.5.2.

The representation of the HasPubSubConnection ReferenceType in the AddressSpace is specified in Table 104.

Table 104 – HasPubSubConnection ReferenceType

Attributes

Value

BrowseName

HasPubSubConnection

InverseName

PubSubConnectionOf

Symmetric

False

IsAbstract

False

References

NodeClass

BrowseName

Comment

Subtype of HasComponent defined in OPC 10000-5.

Figure 39 depicts the ObjectTypes of the published DataSet model and their components.

image042.png

Figure 39 – Published DataSet Overview

Instances of the DataSetFolderType are used to organize PublishedDataSetType Objects in a tree of DataSetFolders. The configuration can be made through Methods or can be made by product specific configuration tools.

The PublishedDataSetType defines the information necessary for a Subscriber to understand and decode DataSetMessages received from the Publisher for a DataSet and to detect changes of the DataSet semantic and metadata.

The types derived from the PublishedDataSetType define the source of information for a DataSet in the OPC UA Server AddressSpace like Variables or Events.

This ObjectType is the base type for PublishedDataSets. It defines the metadata and the configuration version of the DataSets sent as DataSetMessages through DataSetWriters.

The PublishedDataSetType is the base type for configurable DataSets. Derived types like PublishedDataItemsType and PublishedEventsType defines how to collect the DataSet to be published. For PublishedDataItemsType this is a list of monitored Variables. For PublishedEventsType this is an Event selection. The list of monitored Variables or the list of selected EventFields defines the content and metadata of the PublishedDataSetType Object.

If the content of the DataSet is defined by a product specific configuration and the source of the DataSet is not known, the PublishedDataSetType can be used directly to expose the PublishedDataSet in the AddressSpace of the Publisher.

The PublishedDataSetType is formally defined in Table 105.

Table 105 – PublishedDataSetType Definition

Attribute

Value

BrowseName

PublishedDataSetType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in OPC 10000-5.

DataSetToWriter

Object

<DataSetWriterName>

DataSetWriterType

Optional‌Placeholder

HasProperty

Variable

ConfigurationVersion

Configuration‌VersionDataType

PropertyType

Mandatory

HasProperty

Variable

DataSetMetaData

DataSetMeta‌DataType

PropertyType

Mandatory

HasProperty

Variable

DataSetClassId

Guid

PropertyType

Optional

HasComponent

Object

ExtensionFields

ExtensionFieldsType

Optional

The PublishedDataSetType ObjectType is a concrete type and can be used directly. It can be used to expose a PublishedDataSet where the data collection is not visible in the AddressSpace.

The Object has a list of DataSetWriters. A DataSetWriter sends DataSetMessages created from DataSets through a Message Oriented Middleware. The link between the PublishedDataSet Object and a DataSetWriter shall be created when an instance of the DataSetWriterType is created. The DataSetWriterType is defined in 9.1.7.2. If a DataSetWriter is created for the PublishedDataSet, it is added to the list using the ReferenceType DataSetToWriter. The DataSetToWriter ReferenceType is defined in 9.1.4.2.5. If a DataSetWriter for the PublishedDataSet is removed from a group, the Reference to this DataSetWriter shall also be removed from this list. The group model is defined in 9.1.6.

The Property ConfigurationVersion is related to configuration of the DataSet produced by the PublishedDataSet Object. The PublishedDataSet parameters affecting the version are defined in the concrete types derived from this base type. The ConfigurationVersionDataType and the rules for setting the version are defined in 6.2.2.1.5.

The Property DataSetMetaData provides the information necessary to decode DataSetMessages on the Subscriber side if the DataSetMessages are not self-describing. The information in this Property is automatically updated if the ConfigurationVersion is changed based on DataSet configuration change. The DataSetMetaDataType is defined in 6.2.2.1.2. The Name field in the DataSetMetaDataType shall match the name of the PublishedDataSetType Object if the DataSetMetaData is not based on a DataSetClass.

The MajorVersion part of the ConfigurationVersion contained in the DataSetMessage must match the ConfigurationVersion of the DataSetMetaData available on the Subscriber side.

The DataSetClassId is the globally unique identifier for a DataSetClass. The optional Property shall be present if the DataSetClassId of the DataSetMetaData is not null. If the DataSetClassId is set, the Publisher shall reject any configuration changes that change the DataSetMetaData.

The ExtensionFields Object allows the configuration of fields with values to be included in the DataSet in case the existing AddressSpace of the Publisher does not provide the necessary information. The extension fields are added as Properties to the ExtensionFields Object. For PublishedDataItemsType base PublishedDataSets, an extension field is included as a Variable in the published DataSet. For PublishedEventsType base PublishedDataSets, an extension field is included into the SelectedFields for the DataSet.

The ExtensionFieldsType is formally defined in Table 106. It allows the configuration of fields with values to be included in the DataSet in case the existing AddressSpace of the Publisher does not provide the necessary information.

Table 106 – ExtensionFieldsType Definition

Attribute

Value

BrowseName

ExtensionFieldsType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in OPC 10000-5.

HasProperty

Variable

<ExtensionFieldName>

BaseDataType

PropertyType

OptionalPlaceholder

HasComponent

Method

AddExtensionField

Defined in 9.1.4.2.3.

Mandatory

HasComponent

Method

RemoveExtensionField

Defined in 9.1.4.2.4.

Mandatory

The ExtensionFieldsType ObjectType is a concrete type and can be used directly.

The configured list of extension fields is exposed through Properties and managed through the Methods AddExtensionField and RemoveExtensionField. An ExtensionField is not automatically included in the DataSet. The ExtensionField must be added to the DataSet after creation.

Metadata that normally appear in message headers can be included to the body by adding extension fields with well-known QualifiedNames. These well-known QualifiedNames are shown in Table 107. The qualifying namespace is the OPC UA namespace.

Table 107 – Well-Known Extension Field Names

Name

Type

Description

PublisherId

BaseDataType

The PublisherId from the Connection Object.

DataSetName

String

The Name from the DataSetMetaData.

DataSetClassId

Guid

The DataSetClassId from the DataSetMetaData.

MajorVersion

UInt32

The MajorVersion from the ConfigurationVersion

MinorVersion

UInt32

The MinorVersion from the ConfigurationVersion

DataSetWriterId

BaseDataType

The DataSetWriterId from the DataSetWriterTransport Object.

MessageSequenceNumber

UInt16

The sequence number from the DataSetMessage.

If a well-known name is used the value placed in the message body is dynamically generated from the current settings. The value set in the AddExtensionField Method is ignored. Subtypes of DataSetWriterTransportType may extend this list.

This Method is used to add a Property to the Object ExtensionFields.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddExtensionField (

[in]QualifiedNameFieldName

[in]BaseDataTypeFieldValue

[out]NodeId FieldId

);

Argument

Description

FieldName

Name of the field to add.

FieldValue

The value of the field to add.

FieldId

The NodeId of the added field Property.

Method Result Codes

ResultCode

Description

Bad_NodeIdExists

A field with the name already exists.

Bad_InvalidArgument

The Server is not able to apply the Name. The Name may be too long or may contain invalid characters.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

This Method is used to remove a Property from the Object ExtensionFields.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

RemoveExtensionField (

[in]NodeId FieldId

);

Argument

Description

FieldId

The NodeId field Property to remove.

Method Result Codes

ResultCode

Description

Bad_NodeIdUnknown

A field with the NodeId does not exist.

Bad_NodeIdInvalid

The FieldId is not a NodeId of a Property of the ExtensionFieldsType Object.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

The DataSetToWriter ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the HierarchicalReferences ReferenceType.

The SourceNode of References of this type shall be an Object of ObjectType PublishedDataSetType or an ObjectType that is a subtype of PublishedDataSetType defined in 9.1.4.2.1.

The TargetNode of this ReferenceType shall be an Object of the ObjectType DataSetWriterType defined in 9.1.7.1.

Each DataSetWriter Object shall be the TargetNode of exactly one DataSetToWriter Reference.

Servers shall provide the inverse Reference that relates a DataSetWriter Object back to a PublishedDataSetType Object.

The representation of the DataSetToWriter ReferenceType in the AddressSpace is specified in Table 108.

Table 108 – DataSetToWriter ReferenceType

Attributes

Value

BrowseName

DataSetToWriter

InverseName

WriterToDataSet

Symmetric

False

IsAbstract

False

References

NodeClass

BrowseName

Comment

Subtype of HierarchicalReferences defined in OPC 10000-5.

The PublishedDataItemsType is used to select a list of OPC UA Variables as the source for the creation of DataSets sent through one or more DataSetWriters.

The PublishedDataItemsType is formally defined Table 109.

Table 109 – PublishedDataItemsType Definition

Attribute

Value

BrowseName

PublishedDataItemsType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of PublishedDataSetType defined in 9.1.4.2.

HasProperty

Variable

PublishedData

PublishedVariable‌DataType[]

PropertyType

Mandatory

HasComponent

Method

AddVariables

Defined in 9.1.4.3.2.

Optional

HasComponent

Method

RemoveVariables

Defined in 9.1.4.3.3.

Optional

The PublishedDataItemsType ObjectType is a concrete type and can be used directly.

The PublishedData is defined in 6.2.2.6.1. Existing entries in the array can be changed by writing the new settings to the Variable Value. A new Value shall be rejected with Bad_OutOfRange if the array size would be changed. Entries in the array can be added and removed with the Methods AddVariables and RemoveVariables.

The index into the list of entries in the PublishedData has an important role for Subscribers and for configuration tools. It is used as a handle to reference the entry in configuration actions like RemoveVariable or the Value in DataSetMessages received by Subscribers. The index may change after configuration changes. Changes are indicated by the ConfigurationVersion and applications working with the index shall always check the ConfigurationVersion before using the index.

This Method is used to add Variables to the PublishedData Property. The PublishedData contains a list of published Variables of a PublishedDataItemsType Object. The information provided in the input Arguments and information available for the added Variables is also used to create the content of the DataSetMetaData Property. The mapping to the DataSetMetaData is described for the input Arguments.

Variables shall be added at the end of the list in PublishedData. This ensures that Subscribers are only affected by the change if they are interested in the added Variables.

If at least one Variable was added to the PublishedData, the MinorVersion of the ConfigurationVersion shall be updated. The ConfigurationVersionDataType and the rules for setting the version are defined in 6.2.2.1.5.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddVariables (

[in]ConfigurationVersionDataType ConfigurationVersion

[in]String[] FieldNameAliases

[in]Boolean[] PromotedFields

[in]PublishedVariableDataType[] VariablesToAdd

[out]ConfigurationVersionDataType NewConfigurationVersion

[out] StatusCode[] AddResults

);

Argument

Description

ConfigurationVersion

Configuration version of the DataSet. The configuration version must match the entire current configuration version of the Object when the Method call is processed. If it does not match, the result Bad_InvalidState shall be returned.

The ConfigurationVersionDataType is defined in 6.2.2.1.5.

FieldNameAliases

The names assigned to the selected Variables for the fields in the DataSetMetaData and in the DataSetMessages for tagged message encoding. The size and the order of the array shall match the VariablesToAdd.

The string shall be used to set the name field in the FieldMetaData that is part of the DataSetMetaData.

PromotedFields

The flags indicating if the corresponding field is promoted to the DataSetMessage header. The size and the order of the array shall match the VariablesToAdd.

The flag is used to set the PromotedField flag in the fieldFlags parameter in the FieldMetaData.

VariablesToAdd

Array of Variables to add to PublishedData and the related configuration settings. Successfully added variables are appended to the end of the list of published variables configured in the PublishedData Property. Failed variables are not added to the list.

The PublishedVariableDataType is defined in 6.2.2.6.1.

The parameters builtInType, dataType, valueRank and arrayDimensions of the FieldMetaData are filled from corresponding Variable Attributes.

NewConfigurationVersion

Returns the new configuration version of the PublishedDataSet.

AddResults

The result codes for the variables to add.

Variables exceeding the maximum number of items in the Object are rejected with Bad_TooManyVariables.

Method Result Codes

ResultCode

Description

Bad_NothingToDo

An empty list of variables was passed in.

Bad_InvalidState

The configuration version did not match the current state of the object.

Bad_NotWritable

The DataSet is based on a DataSetClass and the size of the PublishedData array cannot be changed.

Bad_UserAccessDenied

The Session user is not allowed to configure the object.

Operation Result Codes

ResultCode

Description

Bad_NodeIdInvalid

See OPC 10000-4 for the description of this result code.

Bad_NodeIdUnknown

See OPC 10000-4 for the description of this result code.

Bad_IndexRangeInvalid

See OPC 10000-4 for the description of this result code.

Bad_IndexRangeNoData

See OPC 10000-4 for the description of this result code.

If the ArrayDimensions have a fixed length that cannot change and no data exists within the range of indexes specified, Bad_IndexRangeNoData is returned in AddVariables. Otherwise, if the length of the array is dynamic, the Publisher shall insert this status in a DataSet if no data exists within the range.

Bad_TooManyVariables

The Publisher has reached its maximum number of items for the PublishedDataItemsType object.

This Method is used to remove Variables from the PublishedData list. It contains the list of published Variables of a PublishedDataItemsType Object.

A caller shall read the current Values of PublishedData and ConfigurationVersion prior to calling this Method, to ensure the use of the correct index of the Variables that are being removed.

If at least one Variable was successfully removed from the PublishedData, the MajorVersion of the ConfigurationVersion shall be updated. The ConfigurationVersionDataType and the rules for setting the version are defined in 6.2.2.1.5.

The order of the remaining Variables in the PublishedData shall be preserved.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

RemoveVariables (

[in]ConfigurationVersionDataType ConfigurationVersion

[in]UInt32[] VariablesToRemove

[out]ConfigurationVersionDataType NewConfigurationVersion

[out] StatusCode[] RemoveResults

);

Argument

Description

ConfigurationVersion

Configuration version of the DataSet. The configuration version and the indices passed in through VariablesToRemove must match the entire current configuration version of the Object when the Method call is processed. If it does not match, the result Bad_InvalidState shall be returned. The ConfigurationVersionDataType is defined in 6.2.2.1.5.

VariablesToRemove

Array of indices of Variables to remove from the list of Variables configured in PublishedData of the PublishedDataItemsType. This matches the list of fields configured in the DataSetMetaData of the PublishedDataSetType.

NewConfigurationVersion

Returns the new configuration version of the DataSet.

RemoveResults

The result codes for each of the variables to remove.

Method Result Codes

ResultCode

Description

Bad_NothingToDo

An empty list of variables was passed in.

Bad_InvalidState

The configuration version did not match the current state of the Object.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

Operation Result Codes

ResultCode

Description

Bad_InvalidArgument

The passed index was invalid.

This PublishedDataSetType is used to configure the collection of OPC UA Events.

The PublishedEventsType is formally defined in Table 110.

Table 110 – PublishedEventsType Definition

Attribute

Value

BrowseName

PublishedEventsType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of PublishedDataSetType defined in 9.1.4.2.1.

HasProperty

Variable

EventNotifier

NodeId

PropertyType

Mandatory

HasProperty

Variable

SelectedFields

SimpleAttributeOperand[]

PropertyType

Mandatory

HasProperty

Variable

Filter

ContentFilter

PropertyType

Mandatory

HasComponent

Method

ModifyFieldSelection

Defined in 9.1.4.4.2.

Optional

The PublishedEventsType ObjectType is a concrete type and can be used directly.

The EventNotifier is defined in 6.2.2.7.1.

The SelectedFields is defined in 6.2.2.7.2.

The index into the list of entries in the SelectedFields has an important role for Subscribers. It is used as handle to reference the Event field in DataSetMessages received by Subscribers. The index may change after configuration changes. Changes are indicated by the ConfigurationVersion and applications working with the index shall always check the ConfigurationVersion before using the index. If a change of the SelectedFields adds additional fields, the MinorVersion of the ConfigurationVersion shall be updated. If a change of the SelectedFields removes fields, the MajorVersion of the ConfigurationVersion shall be updated. The Property ConfigurationVersion is defined in the base ObjectType PublishedDataSetType.

The Filter is defined in 6.2.2.7.3. A change of the Filter does not affect the ConfigurationVersion since the content of the DataSet does not change.

This Method is used to modify the event field selection of a PublishedEventsType Object.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

ModifyFieldSelection (

[in]ConfigurationVersionDataType ConfigurationVersion

[in]String[] FieldNameAliases

[in]Boolean[] PromotedFields

[in]SimpleAttributeOperand[] SelectedFields

[out]ConfigurationVersionDataType NewConfigurationVersion

);

Argument

Description

ConfigurationVersion

Configuration version of the DataSet. The configuration version must match the entire current configuration version of the Object when the Method call is processed. If it does not match, the result Bad_InvalidState shall be returned.

The ConfigurationVersionDataType is defined in 6.2.2.1.5.

FieldNameAliases

The names assigned to the selected fields in the DataSetMetaData and in the DataSetMessages for tagged message encoding. The size and the order of the array must match the SelectedFields.

The string is used to set the name field in the FieldMetaData that is part of the DataSetMetaData.

PromotedFields

The flags indicating if the corresponding field is promoted to the DataSetMessage header. The size and the order of the array shall match the SelectedFields.

The flag is used to set the corresponding field in the FieldMetaData that is part of the DataSetMetaData.

SelectedFields

The selection of Event fields contained in the DataSet generated for an Event and sent through the DataSetWriter. The SimpleAttributeOperand DataType is defined in OPC 10000-4.

A change to the selected fields requires a change of the ConfigurationVersion.

NewConfigurationVersion

Return the new configuration version of the DataSet.

Method Result Codes

ResultCode

Description

Bad_InvalidState

The configuration version did not match the current state of the Object.

Bad_EventFilterInvalid

The event filter is not valid.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

The DataSetFolderType is formally defined Table 111.

Table 111 – DataSetFolderType Definition

Attribute

Value

BrowseName

DataSetFolderType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of FolderType defined in OPC 10000-5.

Organizes

Object

<DataSetFolderName>

DataSetFolderType

OptionalPlaceholder

HasComponent

Object

<PublishedDataSetName>

PublishedDataSetType

OptionalPlaceholder

HasComponent

Method

AddPublishedDataItems

Defined in 9.1.4.5.2.

Optional

HasComponent

Method

AddPublishedEvents

Defined in 9.1.4.5.3.

Optional

HasComponent

Method

AddPublishedDataItemsTemplate

Defined in 9.1.4.5.4.

Optional

HasComponent

Method

AddPublishedEventsTemplate

Defined in 9.1.4.5.5.

Optional

HasComponent

Method

RemovePublishedDataSet

Defined in 9.1.4.5.6.

Optional

HasComponent

Method

AddDataSetFolder

Defined in 9.1.4.5.7.

Optional

HasComponent

Method

RemoveDataSetFolder

Defined in 9.1.4.5.8.

Optional

The DataSetFolderType ObjectType is a concrete type and can be used directly.

Instances of the DataSetFolderType can contain PublishedDataSets or other instances of the DataSetFolderType. This can be used to build a tree of Folder Objects used to group the configured PublishedDataSets.

The PublishedDataSetType Objects are added as components to the instance of the DataSetFolderType. An instance of a PublishedDataSetType is referenced only from one DataSetFolder. If the DataSetFolder is deleted, all referenced PublishedDataSetType Objects are deleted with the folder.

PublishedDataSetType Objects may be configured with product specific configuration tools or added and removed through the Methods AddPublishedDataItems, AddPublishedEvents and RemovePublishedDataSet. The PublishedDataSetType is defined in 9.1.4.2.1.

This Method is used to create a PublishedDataSets Object of type PublishedDataItemsType and to add it to the DataSetFolderType Object. The configuration parameters passed in with this Method are further described in the PublishedDataItemsType defined in 9.1.4.3.1 and the PublishedDataSetType defined in 9.1.4.2.

The settings in the VariablesToAdd are used to configure the data acquisition for the DataSet and are used to initialize the PublishedData Property of the PublishedDataItemsType.

The DataSetMetaData of the PublishedDataSetType is created from meta-data of the Variables referenced in VariablesToAdd and the settings in FieldNameAliases and FieldFlags.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddPublishedDataItems (

[in]String Name

[in]String[] FieldNameAliases

[in]DataSetFieldFlags[] FieldFlags

[in]PublishedVariableDataType[] VariablesToAdd

[out] NodeId DataSetNodeId

[out]ConfigurationVersionDataType ConfigurationVersion

[out] StatusCode[] AddResults

);

Argument

Description

Name

Name of the Object to create.

FieldNameAliases

The names assigned to the selected Variables for the fields in the DataSetMetaData and in the DataSetMessages for tagged message encoding. The size and the order of the array shall match the VariablesToAdd.

The string shall be used to set the name field in the FieldMetaData that is part of the DataSetMetaData.

The name shall be unique in the DataSet.

FieldFlags

The field flags assigned to the selected Variables for the fields in the DataSetMetaData. The size and the order of the array shall match the VariablesToAdd.

The flag is used to set the corresponding field in the FieldMetaData that is part of the DataSetMetaData.

VariablesToAdd

Array of Variables to add to PublishedData and the related configuration settings. Successfully added variables are appended to the end of the list of published variables configured in the PublishedData Property. Failed variables are not added to the list.

The PublishedVariableDataType is defined in 6.2.2.6.1.

DataSetNodeId

NodeId of the created PublishedDataSets Object.

ConfigurationVersion

Returns the initial configuration version of the DataSet.

AddResults

The result codes for the variables to add.

Variables exceeding the maximum number of items in the Object are rejected with Bad_TooManyMonitoredItems.

Method Result Codes

ResultCode

Description

Bad_InvalidState

The current state of the Object does not allow a configuration change.

Bad_BrowseNameDuplicated

A data set Object with the name already exists.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

Bad_InvalidArgument

The Server is not able to apply the Name. The Name may be too long or may contain invalid characters.

Operation Result Codes

ResultCode

Description

Bad_NodeIdInvalid

See OPC 10000-4 for the description of this result code.

Bad_NodeIdUnknown

See OPC 10000-4 for the description of this result code.

Bad_IndexRangeInvalid

See OPC 10000-4 for the description of this result code.

Bad_IndexRangeNoData

See OPC 10000-4 for the description of this result code.

If the ArrayDimensions have a fixed length that cannot change and no data exists within the range of indexes specified, Bad_IndexRangeNoData is returned in AddVariables. Otherwise if the length of the array is dynamic, the Publisher shall insert this status in a DataSet if no data exists within the range.

Bad_TooManyMonitoredItems

The Server has reached its maximum number of items for the PublishedDataItemsType object.

Bad_DuplicateName

The passed field name alias already exists.

This Method is used to add a PublishedEventsType Object to the DataSetFolderType Object. The configuration parameters passed in with this Method are further described in the PublishedEventsType defined in 9.1.4.4.1 and the PublishedDataSetType defined in 9.1.4.2.

The settings in the EventNotifier, SelectedFields and Filter are used to configure the data acquisition for the DataSet and are used to initialize the corresponding Properties of the PublishedEventsType.

The DataSetMetaData of the PublishedDataSetType is created from meta-data of the selected Event fields and the settings in FieldNameAliases and FieldFlags.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddPublishedEvents (

[in]String Name

[in]NodeId EventNotifier

[in]String[] FieldNameAliases

[in]DataSetFieldFlags[] FieldFlags

[in]SimpleAttributeOperand[]SelectedFields

[in]ContentFilter Filter

[out]ConfigurationVersionDataTypeConfigurationVersion

[out] NodeId DataSetNodeId

);

Argument

Description

Name

Name of the DataSet Object to create.

EventNotifier

The NodeId of the Object in the event notifier tree of the OPC UA Server that is used to collect Events from.

FieldNameAliases

The names assigned to the selected fields in the DataSetMetaData and in the DataSetMessages for tagged message encoding. The size and the order of the array shall match the SelectedFields.

The string is used to set the name field in the FieldMetaData that is part of the DataSetMetaData.

FieldFlags

The field flags assigned to the selected fields in the DataSetMetaData. The size and the order of the array shall match the SelectedFields.

The flag is used to set the corresponding field in the FieldMetaData that is part of the DataSetMetaData.

SelectedFields

The selection of Event Fields contained in the DataSet generated for an Event and sent through the DataSetWriter. The SimpleAttributeOperand DataType is defined in OPC 10000-4.

Filter

The filter applied to the Events. It allows the reduction of the DataSets generated from Events through a filter like filtering for a certain EventType. The ContentFilter DataType is defined in OPC 10000-4.

ConfigurationVersion

Returns the initial configuration version of the PublishedDataSets.

DataSetNodeId

NodeId of the created PublishedDataSets Object.

Method Result Codes

ResultCode

Description

Bad_InvalidState

The current state of the Object does not allow a configuration change.

Bad_NodeIdExists

A data set Object with the name already exists.

Bad_NodeIdUnknown

The Event notifier node is not known in the Server.

Bad_EventFilterInvalid

The Event filter is not valid.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

Bad_InvalidArgument

The Server is not able to apply the Name. The Name may be too long or may contain invalid characters.

This Method is used to create a PublishedDataSets Object of type PublishedDataItemsType and to add it to the DataSetFolderType Object. The configuration parameters passed in with this Method are further described in the PublishedDataItemsType defined in 9.1.4.3.1 and the PublishedDataSetType defined in 9.1.4.2.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddPublishedDataItemsTemplate (

[in]String Name

[in]DataSetMetaDataType DataSetMetaData

[in]PublishedVariableDataType[] VariablesToAdd

[out] NodeId DataSetNodeId

[out] StatusCode[] AddResults

);

Argument

Description

Name

Name of the Object to create.

DataSetMetaData

The DataSetMetaData predefined by the caller. The initial setting shall not be changed by the Publisher. If the dataSetClassId of the DataSetMetaData is not null, the DataSetClassId Property of the PublishedDataSetType shall be created and initialized with the dataSetClassId value.

The name of the PublishedDataSet Object is defined by the name in the DataSetMetaData.

VariablesToAdd

Array of variable settings for the data acquisition for the fields in the DataSetMetaData.

The size of the array shall match the size of the fields array in the DataSetMetaData.

The substituteValue in the VariablesToAdd entries shall be configured.

For failed variables the publishedVariable field of entry in the resulting PublishedData Property shall be set to a null NodeId.

If there is no Variable available for a field in the DataSetMetaData the publishedVariable field for the entry shall be set to a null NodeId.

The PublishedVariableDataType is defined in 6.2.2.6.1.

DataSetNodeId

NodeId of the created PublishedDataSets Object.

AddResults

The result codes for the variables to add.

Method Result Codes

ResultCode

Description

Bad_InvalidState

The current state of the Object does not allow a configuration change.

Bad_BrowseNameDuplicated

A data set Object with the name already exists.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

Bad_InvalidArgument

The VariablesToAdd parameter does not match the array size of the fields in the DataSetMetaData or the configuration of the VariablesToAdd contains invalid settings.

Bad_TooManyMonitoredItems

The Object cannot be created since the number of items in the PublishedDataSet exceeds the capabilities of the Publisher.

Operation Result Codes

ResultCode

Description

Bad_NodeIdInvalid

See OPC 10000-4 for the description of this result code.

Bad_NodeIdUnknown

See OPC 10000-4 for the description of this result code.

Bad_IndexRangeInvalid

See OPC 10000-4 for the description of this result code.

Bad_IndexRangeNoData

See OPC 10000-4 for the description of this result code.

If the ArrayDimensions have a fixed length that cannot change and no data exists within the range of indexes specified, Bad_IndexRangeNoData is returned in AddVariables. Otherwise if the length of the array is dynamic, the Publisher shall insert this status in a DataSet if no data exists within the range.

Bad_TooManyMonitoredItems

The Server has reached its maximum number of items for the PublishedDataItemsType Object.

Bad_DuplicateName

The passed field name alias already exists.

This Method is used to add a PublishedEventsType Object to the DataSetFolderType Object. The configuration parameters passed in with this Method are further described in the PublishedEventsType defined in 9.1.4.4.1 and the PublishedDataSetType defined in 9.1.4.2.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddPublishedEventsTemplate (

[in]String Name

[in]DataSetMetaDataType DataSetMetaData

[in]NodeId EventNotifier

[in]SimpleAttributeOperand[]SelectedFields

[in]ContentFilter Filter

[out] NodeId DataSetNodeId

);

Argument

Description

Name

Name of the Object to create.

DataSetMetaData

The DataSetMetaData predefined by the caller. The initial setting shall not be changed by the Publisher. If the dataSetClassId of the DataSetMetaData is not null, the DataSetClassId Property of the PublishedDataSetType shall be created and initialized with the dataSetClassId value.

The name of the PublishedDataSet Object is defined by the name in the DataSetMetaData.

EventNotifier

The NodeId of the Object in the event notifier tree of the OPC UA Server that is used to collect Events from.

SelectedFields

The selection of Event Fields contained in the DataSet generated for an Event and sent through the DataSetWriter.

The size of the array shall match the size of the fields array in the DataSetMetaData.

If there is no Event field available for a field in the DataSetMetaData the browsePath field for the SimpleAttributeOperand entry shall be set to null.

The SimpleAttributeOperand DataType is defined in OPC 10000-4.

Filter

The filter applied to the Events. It allows the reduction of the DataSets generated from Events through a filter like filtering for a certain EventType. The ContentFilter DataType is defined in OPC 10000-4.

DataSetNodeId

NodeId of the created PublishedDataSets Object.

Method Result Codes

ResultCode

Description

Bad_InvalidState

The current state of the Object does not allow a configuration change.

Bad_NodeIdExists

A DataSet Object with the name already exists.

Bad_NodeIdUnknown

The Event notifier node is not known in the Server.

Bad_EventFilterInvalid

The Event filter is not valid.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

Bad_InvalidArgument

The Server is not able to apply the Name. The Name may be too long or may contain invalid characters.

This Method is used to remove a PublishedDataSetType Object from the DataSetFolderType Object.

A successful removal of the PublishedDataSetType Object removes all associated DataSetWriter Objects. Before the Objects are removed, their state is changed to Disabled_0

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

RemovePublishedDataSet (

[in]NodeIdDataSetNodeId

);

Argument

Description

DataSetNodeId

NodeId of the PublishedDataSets Object to remove from the Server. The DataSetId is either returned by the AddPublishedDataItems or AddPublishedEvents Methods or can be discovered by browsing the list of configured PublishedDataSets in the PublishSubscribe Object.

Method Result Codes

ResultCode

Description

Bad_NodeIdUnknown

The DataSetNodeId is unknown.

Bad_UserAccessDenied

The Session user is not allowed to delete a PublishedDataSetType.

This Method is used to add a DataSetFolderType Object to a DataSetFolderType Object.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddDataSetFolder (

[in]StringName

[out]NodeIdDataSetFolderNodeId

);

Argument

Description

Name

Name of the Object to create.

DataSetFolderNodeId

NodeId of the created DataSetFolderType Object.

Method Result Codes

ResultCode

Description

Bad_BrowseNameDuplicated

A folder Object with the name already exists.

Bad_InvalidArgument

The Server is not able to apply the Name. The Name may be too long or may contain invalid characters.

Bad_UserAccessDenied

The Session user is not allowed to add a folder.

This Method is used to remove a DataSetFolderType Object from the parent DataSetFolderType Object.

A successful removal of the DataSetFolderType Object removes all associated PublishedDataSetType Objects and their associated DataSetWriter Objects. Before the Objects are removed, their state is changed to Disabled_0

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

RemoveDataSetFolder (

[in]NodeIdDataSetFolderNodeId

);

Argument

Description

DataSetFolderNodeId

NodeId of the DataSetFolderType Object to remove from the Server.

Method Result Codes

ResultCode

Description

Bad_NodeIdUnknown

The DataSetFolderNodeId is unknown.

Bad_UserAccessDenied

The Session user is not allowed to delete a data set.

Figure 40 depicts the ObjectType for the PubSub connection model and its components and the relations to other parts of the model.

image043.png

Figure 40 – PubSubConnectionType Overview

This ObjectType is a concrete type for Objects representing PubSubConnections. A PubSubConnection is a combination of protocol selection, protocol settings and addressing information. The PubSubConnectionType is formally defined in Table 112.

Table 112 – PubSubConnectionType Definition

Attribute

Value

BrowseName

PubSubConnectionType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in OPC 10000-5.

HasProperty

Variable

PublisherId

BaseDataType

PropertyType

Mandatory

HasComponent

Variable

TransportProfileUri

String

SelectionListType

Mandatory

HasProperty

Variable

ConnectionProperties

KeyValuePair[]

PropertyType

Mandatory

HasComponent

Object

Address

NetworkAddressType

Mandatory

HasComponent

Object

TransportSettings

ConnectionTransportType

Optional

HasWriterGroup

Object

<WriterGroupName>

WriterGroupType

OptionalPlaceholder

HasReaderGroup

Object

<ReaderGroupName>

ReaderGroupType

OptionalPlaceholder

HasComponent

Object

Status

PubSubStatusType

Mandatory

HasComponent

Object

Diagnostics

PubSubDiagnostics‌ConnectionType

Optional

HasComponent

Method

AddWriterGroup

Defined in 9.1.5.3.

Optional

HasComponent

Method

AddReaderGroup

Defined in 9.1.5.4.

Optional

HasComponent

Method

RemoveGroup

Defined in 9.1.5.5.

Optional

The PublisherId is defined in 6.2.6.1.

The TransportProfileUri is defined in 6.2.6.2. The Property is initialized with the default transport protocol for the Address during the creation of the connection. The SelectionValues Property of the SelectionListType shall contain the list of supported TransportProfileUris. The SelectionListType is defined in OPC 10000-5.

The ConnectionProperties is defined in 6.2.6.4.

The Address is defined in 6.2.6.3. The abstract NetworkAddressType is defined in A.3.1. The default type used for concrete instances is the NetworkAddressUrlType defined in A.3.2. It represents the Address in the form of a URL String.

The transport protocol mapping specific setting settings are provided in the optional Object TransportSettings. The ConnectionTransportType is defined in 9.1.5.6. The Object shall be present if the transport protocol mapping defines specific parameters.

The configured WriterGroup and ReaderGroup Objects are added as components to the instance of the PubSubConnectionType. PubSubGroup Objects may be configured with product specific configuration tools or added and removed through the OPC UA Methods AddWriterGroup, AddReaderGroup and RemoveGroup.

The Status Object provides the current operational status of the connection. The PubSubStatusType is defined in 9.1.10. The state machine for the status and the relation to other PubSub Objects like PublishSubscribe, PubSubGroup, DataSetWriter and DataSetReader are defined in 6.2.1.

The Diagnostics Object provides the current diagnostic information for a PubSubConnectionType Object. The PubSubDiagnosticsConnectionType is defined in 9.1.11.8.

This Method is used to add a new WriterGroup Object to an instance of the PubSubConnection.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddWriterGroup (

[in]WriterGroupDataType Configuration

[out]NodeId GroupId

);

Argument

Description

Configuration

Configuration parameters for the WriterGroup. The parameters and the WriterGroupDataType are defined in 6.2.5.

GroupId

The NodeId of the new WriterGroup Object.

Method Result Codes

ResultCode

Description

Bad_InvalidArgument

The Server is not able to apply the GroupName. The name may be too long or may contain invalid character.

Bad_BrowseNameDuplicated

An Object with the name already exists in the connection.

Bad_ResourceUnavailable

The Server does not have enough resources to add the group.

Bad_UserAccessDenied

The Session user does not have rights to create the group.

This Method is used to add a new ReaderGroup Object to an instance of the PubSubConnection.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddReaderGroup (

[in]ReaderGroupDataType Configuration

[out]NodeId GroupId

);

Argument

Description

Configuration

Configuration parameters for the ReaderGroup. The parameters and the ReaderGroupDataType are defined in 6.2.7.

GroupId

The NodeId of the new ReaderGroup Object.

Method Result Codes

ResultCode

Description

Bad_InvalidArgument

The Server is not able to apply the GroupName. The name may be too long or may contain invalid character.

Bad_BrowseNameDuplicated

An Object with the name already exists in the connection.

Bad_ResourceUnavailable

The Server does not have enough resources to add the group.

Bad_UserAccessDenied

The Session user does not have rights to create the group.

This Method is used to remove a PubSubGroup Object from the connection.

A successful removal of the PubSubGroup Object removes all associated DataSetWriter or DataSetReader Objects. Before the Objects are removed, their state is set to Disabled_0.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

RemoveGroup (

[in]NodeIdGroupId

);

Argument

Description

GroupId

NodeId of the group to remove from the connection

Method Result Codes

ResultCode

Description

Bad_NodeIdUnknown

The GroupId is unknown.

Bad_UserAccessDenied

The Session user does not have rights to delete the group.

This ObjectType is the abstract base type for Objects representing transport protocol mapping specific settings for PubSubConnections. The ConnectionTransportType is formally defined in Table 113.

Table 113 – ConnectionTransportType Definition

Attribute

Value

BrowseName

ConnectionTransportType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType

Figure 41 depicts the ObjectType for the PubSub group model and its components and the relations to other parts of the model.

image044.png

Figure 41 – PubSubGroupType Overview

This ObjectType is the abstract base type for Objects representing communication groupings for PubSub connections. The PubSubGroupType is formally defined in Table 114.

Table 114 – PubSubGroupType Definition

Attribute

Value

BrowseName

PubSubGroupType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in OPC 10000-5.

HasProperty

Variable

SecurityMode

MessageSecurityMode

PropertyType

Mandatory

HasProperty

Variable

SecurityGroupId

String

PropertyType

Optional

HasProperty

Variable

SecurityKeyServices

EndpointDescription[]

PropertyType

Optional

HasProperty

Variable

MaxNetworkMessageSize

UInt32

PropertyType

Mandatory

HasProperty

Variable

GroupProperties

KeyValuePair[]

PropertyType

Mandatory

HasComponent

Object

Status

PubSubStatusType

Mandatory

The SecurityMode is defined in 6.2.4.2.

The SecurityGroupId is defined in 6.2.4.3. If the SecurityMode is not NONE_1, the Property shall provide the SecurityGroupId. The value of the Property is null or the Property is not present if the SecurityMode is NONE_1.

The SecurityKeyServices parameter is defined in 6.2.4.4. If the SecurityMode is not NONE_1, the Property shall provide the list of Security Key Services for the SecurityGroupId.

The MaxNetworkMessageSize is defined in 6.2.4.5.

The GroupProperties is defined in 6.2.4.6.

The Status Object provides the current operational status of the group. The PubSubStatusType is defined in 9.1.10. The state machine for the status and the relation to other PubSub Objects like PubSubConnection, DataSetWriter and DataSetReader are defined in 6.2.1.

Instances of WriterGroupType contain settings for a group of DataSetWriters. The WriterGroupType is formally defined in Table 115.

Table 115 – WriterGroupType Definition

Attribute

Value

BrowseName

WriterGroupType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of PubSubGroupType defined in 9.1.6.2

HasProperty

Variable

WriterGroupId

UInt16

PropertyType

Mandatory

HasProperty

Variable

PublishingInterval

Duration

PropertyType

Mandatory

HasProperty

Variable

KeepAliveTime

Duration

PropertyType

Mandatory

HasProperty

Variable

Priority

Byte

PropertyType

Mandatory

HasProperty

Variable

LocaleIds

LocaleId[]

PropertyType

Mandatory

HasProperty

Variable

HeaderLayoutUri

String

PropertyType

Mandatory

HasComponent

Object

TransportSettings

WriterGroupTransportType

Optional

HasComponent

Object

MessageSettings

WriterGroupMessageType

Optional

HasDataSetWriter

Object

<DataSetWriterName>

DataSetWriterType

OptionalPlaceholder

HasComponent

Object

Diagnostics

PubSubDiagnostics‌WriterGroupType

Optional

HasComponent

Method

AddDataSetWriter

Defined in 9.1.6.4.

Optional

HasComponent

Method

RemoveDataSetWriter

Defined in 9.1.6.5.

Optional

The WriterGroupId is defined in 6.2.5.1.

The PublishingInterval is defined in 6.2.5.2.

The KeepAliveTime is defined in 6.2.5.3.

The Priority is defined in 6.2.5.4.

The LocaleIds parameter is defined in 6.2.5.5.

The transport protocol mapping specific setting settings are provided in the optional Object TransportSettings. The WriterGroupTransportType is defined in 9.1.6.7. The Object shall be present if the transport protocol mapping requires specific settings.

The message mapping specific setting settings are provided in the optional Object MessageSettings. The WriterGroupMessageType is defined in 9.1.6.8. The Object shall be present if the message mapping defines specific parameters.

The configured DataSetWriterType Objects are added as components to the instance of the group. DataSetWriterType Objects may be configured with product specific configuration tools or through OPC UA Methods AddDataSetWriter and RemoveDataSetWriter. The DataSetWriterType is defined in 9.1.7.1. The ReferenceType HasDataSetWriter is defined in 9.1.6.6.

The Diagnostics Object provides the current diagnostic information for a WriterGroupType Object. The PubSubDiagnosticsWriterGroupType is defined in 9.1.11.9.

This Method is used to add a new DataSetWriterType Object to an instance of the WriterGroup. A successful creation of the DataSetWriter shall also create a Reference from the related PublishedDataSet Object to the created DataSetWriter.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddDataSetWriter (

[in]DataSetWriterDataType Configuration

[out]NodeId DataSetWriterNodeId

);

Argument

Description

Configuration

Configuration parameters for the DataSetWriter. The parameters and the DataSetWriterDataType are defined in 6.2.3.

DataSetWriterNodeId

The NodeId of the new DataSetWriter Object.

Method Result Codes

ResultCode

Description

Bad_InvalidArgument

The Server is not able to apply the name. The name may be too long or may contain invalid character.

Bad_DataSetIdInvalid

The DataSet specified for the DataSetWriter creation is invalid.

Bad_BrowseNameDuplicated

An Object with the name already exists in the group.

Bad_ResourceUnavailable

The Server has not enough resources to add the DataSetWriter.

Bad_UserAccessDenied

The Session user does not have rights to create the DataSetWriter.

This Method is used to remove a DataSetWriter Object from the group. The state of the DataSetWriter is set to Disabled_0 before removing the Object. A successful removal of the DataSetWriter shall also delete the Reference from the related PublishedDataSetType Object to the removed DataSetWriter.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

RemoveDataSetWriter (

[in]NodeIdDataSetWriterNodeId

);

Argument

Description

DataSetWriterNodeId

NodeId of the DataSetWriter to remove from the group.

Method Result Codes

ResultCode

Description

Bad_NodeIdUnknown

The DataSetWriterNodeId is unknown.

Bad_NodeIdInvalid

The DataSetWriterNodeId is not a NodeId of a DataSetWriter.

Bad_UserAccessDenied

The Session user is not allowed to delete a DataSetWriter.

The HasDataSetWriter ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the HasComponent ReferenceType.

The SourceNode of References of this type shall be an instance of the WriterGroupType defined in 9.1.6.3.

The TargetNode of this ReferenceType shall be an instance of the DataSetWriterType defined in 9.1.7.1.

The representation of the HasDataSetWriter ReferenceType in the AddressSpace is specified in Table 116.

Table 116 – HasDataSetWriter ReferenceType

Attributes

Value

BrowseName

HasDataSetWriter

InverseName

IsWriterInGroup

Symmetric

False

IsAbstract

False

References

NodeClass

BrowseName

Comment

Subtype of HasComponent defined in OPC 10000-5.

This ObjectType is the abstract base type for Objects representing transport protocol mapping specific settings for WriterGroups. The WriterGroupTransportType is formally defined in Table 117.

Table 117 – WriterGroupTransportType Definition

Attribute

Value

BrowseName

WriterGroupTransportType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType

HasSubtype

ObjectType

DatagramWriterGroupTransportType

Defined in 9.3.1.2.

HasSubtype

ObjectType

BrokerWriterGroupTransportType

Defined in 9.3.2.2.

This ObjectType is the abstract base type for Objects representing message mapping specific settings for WriterGroups. The WriterGroupMessageType is formally defined in Table 118.

Table 118 – WriterGroupMessageType Definition

Attribute

Value

BrowseName

WriterGroupMessageType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType

HasSubtype

ObjectType

UadpWriterGroupMessageType

Defined in 9.2.1.1.

HasSubtype

ObjectType

JsonWriterGroupMessageType

Defined in 9.2.2.1.

This ObjectType is a concrete type for Objects representing DataSetReader groupings for PubSub connections. The ReaderGroupType is formally defined in Table 114.

Table 119 – ReaderGroupType Definition

Attribute

Value

BrowseName

ReaderGroupType

IsAbstract

False

References

Node Class

BrowseName

Data Type

TypeDefinition

Modelling Rule

Subtype of PubSubGroupType defined in 9.1.6.2

HasDataSetReader

Object

<DataSetReaderName>

DataSetReaderType

OptionalPlaceholder

HasComponent

Object

Diagnostics

PubSubDiagnostics‌ReaderGroupType

Optional

HasComponent

Object

TransportSettings

ReaderGroupTransportType

Optional

HasComponent

Object

MessageSettings

ReaderGroupMessageType

Optional

HasComponent

Method

AddDataSetReader

Defined in 9.1.6.10.

Optional

HasComponent

Method

RemoveDataSetReader

Defined in 9.1.6.11.

Optional

The configured DataSetReaderType Objects are added as components to the instance of the group. DataSetReaderType Objects may be configured with product specific configuration tools or through OPC UA Methods AddDataSetReader and RemoveDataSetReader. The DataSetReaderType is defined in 9.1.8.1. The ReferenceType HasDataSetReader is defined in 9.1.6.12.

The Diagnostics Object provides the current diagnostic information for a ReaderGroupType Object. The PubSubDiagnosticsReaderGroupType is defined in 9.1.11.10.

The transport protocol mapping specific setting settings are provided in the optional Object TransportSettings. The ReaderGroupTransportType is defined in 9.1.6.13. The Object shall be present if the transport protocol mapping defines specific parameters.

The message mapping specific setting settings are provided in the optional Object MessageSettings. The ReaderGroupMessageType is defined in 9.1.6.14. The Object shall be present if the message mapping defines specific parameters.

This Method is used to add a new DataSetReaderType Object to an instance of the ReaderGroup.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddDataSetReader (

[in]DataSetReaderDataType Configuration

[out]NodeId DataSetReaderNodeId

);

Argument

Description

Configuration

Configuration parameters for the DataSetWriter. The parameters and the DataSetReaderDataType are defined in 6.2.8.

DataSetReaderNodeId

The NodeId of the new DataSetReader Object.

Method Result Codes

ResultCode

Description

Bad_InvalidArgument

The Server is not able to apply the name. The name may be too long or may contain invalid characters.

Bad_BrowseNameDuplicated

An Object with the name already exists in the group.

Bad_ResourceUnavailable

The Server does not have enough resources to add the DataSetReader.

Bad_UserAccessDenied

The Session user does not have rights to create the DataSetReader.

This Method is used to remove a DataSetReader Object from the group. The state of the DataSetReader is set to Disabled_0 before the Object is removed.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

RemoveDataSetReader (

[in]NodeIdDataSetReaderNodeId

);

Argument

Description

DataSetReaderNodeId

NodeId of the DataSetReader to remove from the group.

Method Result Codes

ResultCode

Description

Bad_NodeIdUnknown

The DataSetReaderNodeId is unknown.

Bad_NodeIdInvalid

The DataSetReaderNodeId is not a NodeId of a DataSetReader.

Bad_UserAccessDenied

The Session user does not have rights to delete the DataSetReader.

The HasDataSetReader ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the HasComponent ReferenceType.

The SourceNode of References of this type shall be an instance of the ReaderGroupType defined in 9.1.6.6.

The TargetNode of this ReferenceType shall be an instance of the DataSetReaderType defined in 9.1.8.1.

The representation of the HasDataSetReader ReferenceType in the AddressSpace is specified in Table 120.

Table 120 – HasDataSetReader ReferenceType

Attributes

Value

BrowseName

HasDataSetReader

InverseName

IsReaderInGroup

Symmetric

False

IsAbstract

False

References

NodeClass

BrowseName

Comment

Subtype of HasComponent defined in OPC 10000-5.

This ObjectType is the abstract base type for Objects representing transport protocol mapping specific settings for ReaderGroups. The ReaderGroupTransportType is formally defined in Table 121.

There is currently no transport protocol mapping specific setting defined.

Table 121 – ReaderGroupTransportType Definition

Attribute

Value

BrowseName

ReaderGroupTransportType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType

This ObjectType is the abstract base type for Objects representing message mapping specific settings for ReaderGroups. The ReaderGroupMessageType is formally defined in Table 122.

There is currently no message mapping specific setting defined.

Table 122 – ReaderGroupMessageType Definition

Attribute

Value

BrowseName

ReaderGroupMessageType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType

Figure 42 depicts the ObjectType for the PubSub DataSetWriter model and its components and the relations to other parts of the model.

image045.png

Figure 42 – DataSet Writer Model Overview

An instance of this ObjectType represents the configuration for a DataSetWriter. The DataSetWriterType is formally defined Table 123.

Table 123 – DataSetWriterType Definition

Attribute

Value

BrowseName

DataSetWriterType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in Part 5

HasProperty

Variable

DataSetWriterId

UInt16

PropertyType

Mandatory

HasProperty

Variable

DataSetField‌ContentMask

DataSetField ContentMask

PropertyType

Mandatory

HasProperty

Variable

KeyFrameCount

UInt32

PropertyType

Optional

HasProperty

Variable

DataSetWriterProperties

KeyValuePair[]

PropertyType

Mandatory

HasComponent

Object

TransportSettings

DataSetWriterTransportType

Optional

HasComponent

Object

MessageSettings

DataSetWriterMessageType

Optional

HasComponent

Object

Status

PubSubStatusType

Mandatory

HasComponent

Object

Diagnostics

PubSubDiagnostics‌DataSetWriterType

Optional

The DataSetWriterId is defined in 6.2.3.1.

The DataSetFieldContentMask is defined in 6.2.3.2.

The KeyFrameCount is defined in 6.2.3.3. The Property shall be present for PublishedDataSets that provide cyclic updates of the DataSet.

The DataSetWriterProperties is defined in 6.2.3.4.

The transport protocol mapping specific setting settings are provided in the optional Object TransportSettings. The DataSetWriterTransportType is defined in 9.1.7.3. The Object shall be present if the transport protocol mapping defines specific parameters.

The message mapping specific setting settings are provided in the optional Object MessageSettings. The DataSetWriterMessageType is defined in 9.1.7.4. The Object shall be present if the message mapping defines specific parameters.

The Status Object provides the current operational status of the DataSetWriter. The PubSubStatusType is defined in 9.1.10. The state machine for the status and the relation to other PubSub Objects like PubSubConnection and PubSubGroup is defined in 6.2.1.

The Diagnostics Object provides the current diagnostic information for a DataSetWriterType Object. The PubSubDiagnosticsDataSetWriterType is defined in 9.1.11.11.

This ObjectType is the abstract base type for Objects defining protocol specific transport settings of DataSetMessages. The DataSetWriterTransportType is formally defined Table 124.

Table 124 – DataSetWriterTransportType Definition

Attribute

Value

BrowseName

DataSetWriterTransportType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in Part 5

HasSubtype

ObjectType

BrokerDataSetWriterTransportType

Defined in 9.3.2.3.

This ObjectType is the abstract base type for Objects representing message mapping specific settings for DataSetWriters. The DataSetWriterMessageType is formally defined in Table 125.

Table 125 – DataSetWriterMessageType Definition

Attribute

Value

BrowseName

DataSetWriterMessageType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType

HasSubtype

ObjectType

UadpDataSetWriterMessageType

Defined in 9.2.1.2.

HasSubtype

ObjectType

JsonDataSetWriterMessageType

Defined in 9.2.2.2.

Figure 43 depicts the ObjectType for the PubSub DataSetReader model and its components and the relations to other parts of the model.

image046.png

Figure 43 – DataSet Reader Model Overview

This ObjectType defines receiving behaviour of DataSetMessages and the decoding to DataSets. The DataSetReaderType is formally defined in Table 105.

The SubscribedDataSetType defined in 9.1.9.1 describes the processing of the received DataSet in a Subscriber.

Table 126 – DataSetReaderType Definition

Attribute

Value

BrowseName

DataSetReaderType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in Part 5

HasProperty

Variable

PublisherId

BaseDataType

PropertyType

Mandatory

HasProperty

Variable

WriterGroupId

UInt16

PropertyType

Mandatory

HasProperty

Variable

DataSetWriterId

UInt16

PropertyType

Mandatory

HasProperty

Variable

DataSetMetaData

DataSetMetaDataType

PropertyType

Mandatory

HasProperty

Variable

DataSetFieldContentMask

DataSetFieldContentMask

PropertyType

Mandatory

HasProperty

Variable

MessageReceiveTimeout

Duration

PropertyType

Mandatory

HasProperty

Variable

KeyFrameCount

UInt32

PropertyType

Mandatory

HasProperty

Variable

HeaderLayoutUri

String

PropertyType

Mandatory

HasProperty

Variable

SecurityMode

MessageSecurityMode

PropertyType

Optional

HasProperty

Variable

SecurityGroupId

String

PropertyType

Optional

HasProperty

Variable

SecurityKeyServices

EndpointDescription[]

PropertyType

Optional

HasProperty

Variable

DataSetReaderProperties

KeyValuePair[]

PropertyType

Mandatory

HasComponent

Object

TransportSettings

DataSetReader‌TransportType

Optional

HasComponent

Object

MessageSettings

DataSetReader‌MessageType

Optional

HasComponent

Object

Status

PubSubStatusType

Mandatory

HasComponent

Object

Diagnostics

PubSubDiagnostics‌DataSetReaderType

Optional

HasComponent

Object

SubscribedDataSet

Subscribed‌DataSetType

Mandatory

HasComponent

Method

CreateTargetVariables

Defined in 9.1.8.5.

Optional

HasComponent

Method

CreateDataSetMirror

Defined in 9.1.8.6.

Optional

The Properties PublisherId, WriterGroupId, DataSetWriterId and DataSetClassId define filters for received NetworkMessages. If the value of the Property is set, it is used as filter and all messages that do not match the filter are dropped.

The PublisherId is defined in 6.2.8.1.

The WriterGroupId is defined in 6.2.8.2.

The DataSetWriterId is defined in 6.2.8.3.

The DataSetMetaData is defined in 6.2.8.4. If the DataSetReader receives an updated DataSetMetaData, the DataSetReader shall update the Property DataSetMetaData.

The DataSetFieldContentMask is defined in 6.2.8.5.

The MessageReceiveTimeout is defined in 6.2.8.6.

The SecurityMode is defined in 6.2.8.7. If present or if the value is not INVALID_0, it overwrites the settings on the group.

The SecurityGroupId is defined in 6.2.8.8.

The SecurityKeyServices is defined in 6.2.8.9.

The DataSetReaderProperties is defined in 6.2.8.10.

The transport protocol mapping specific setting settings are provided in the optional Object TransportSettings. The DataSetWriterTransportType is defined in 9.1.8.3. The Object shall be present if the transport protocol mapping defines specific parameters.

The message mapping specific setting settings are provided in the optional Object MessageSettings. The DataSetWriterMessageType is defined in 9.1.8.4. The Object shall be present if the message mapping defines specific parameters.

The Status Object provides the current operational state of the DataSetReader. The PubSubStatusType is defined in 9.1.10. The state machine for the status and the relation to other PubSub Objects like PubSubConnection and PubSubGroup are defined in 6.2.1.

The Diagnostics Object provides the current diagnostic information for a DataSetReaderType Object. The PubSubDiagnosticsDataSetReaderType is defined in 9.1.11.12.

The SubscribedDataSet Object contains the metadata for the subscribed DataSet and the information for the processing of DataSetMessage. The SubscribedDataSetType is defined in 9.1.9.1.

This ObjectType is the abstract base type for Objects defining the transport protocol specific parameters for DataSetReaders. The DataSetReaderTransportType is formally defined in Table 127.

Table 127 – DataSetReaderTransportType Definition

Attribute

Value

BrowseName

DataSetReaderTransportType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in Part 5

HasSubtype

ObjectType

BrokerDataSetReaderTransportType

Defined in 9.3.2.4.

This ObjectType is the abstract base type for Objects representing message mapping specific settings for DataSetReaders. The DataSetReaderMessageType is formally defined in Table 128.

Table 128 – DataSetReaderMessageType Definition

Attribute

Value

BrowseName

DataSetReaderMessageType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType

HasSubtype

ObjectType

UadpDataSetReaderMessageType

Defined in 9.2.1.3.

HasSubtype

ObjectType

JsonDataSetReaderMessageType

Defined in 9.2.2.3.

This Method is used to initially set the SubscribedDataSet to TargetVariablesType and to create the list of target Variables of a SubscribedDataSetType.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

CreateTargetVariables (

[in]ConfigurationVersionDataType ConfigurationVersion

[in]FieldTargetDataType[] TargetVariablesToAdd

[out] StatusCode[] AddResults

);

Argument

Description

ConfigurationVersion

Configuration version of the DataSet. The configuration version passed in through CreateTargetVariables must match the current configuration version in DataSetMetaData Property. If it does not match, the result Bad_InvalidState shall be returned. The ConfigurationVersionDataType is defined in 6.2.2.1.5.

TargetVariablesToAdd

The list of target Variables to write received DataSet fields to. The FieldTargetDataType is defined in 6.2.9.2.3. The succeeded targets are added to the TargetVariables Property.

AddResults

The result codes for the Variables to connect.

Method Result Codes

ResultCode

Description

Bad_NothingToDo

An empty list of Variables was passed in.

Bad_InvalidState

The DataSetReader is not configured yet or the ConfigurationVersion does not match the version in the Publisher.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

Operation Result Codes

ResultCode

Description

Bad_NodeIdInvalid

See OPC 10000-4 for the description of this result code.

Bad_NodeIdUnknown

See OPC 10000-4 for the description of this result code.

Bad_IndexRangeInvalid

See OPC 10000-4 for the description of this result code.

This status code indicates either an invalid ReceiverIndexRange or an invalid WriterIndexRange or if the two settings result in a different size.

Bad_IndexRangeNoData

See OPC 10000-4 for the description of this result code.

If the ArrayDimensions have a fixed length that cannot change and no data exists within the range of indexes specified, Bad_IndexRangeNoData is returned in AddDataConnections.

Bad_TooManyMonitoredItems

The Server has reached its maximum number of items for the DataSetReader object.

Bad_InvalidState

The TargetNodeId is already used by another connection.

Bad_TypeMismatch

The Server shall return a Bad_TypeMismatch error if the data type of the DataSet field is not the same type or subtype of the target Variable DataType. Based on the DataType hierarchy, subtypes of the Variable DataType shall be accepted by the Server. A ByteString is structurally the same as a one dimensional array of Byte. A Server shall accept a ByteString if an array of Byte is expected.

This Method is used to set the SubscribedDataSet to SubscribedDataSetMirrorType used to represents the fields of the DataSet as Variables in the Subscriber Address Space. This Method creates an Object below the SubscribedDataSet and below this Object it creates a Variable Node for every field in the DataSetMetaData.

A Variable representing a field of the DataSet shall be created with the following rules

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

CreateDataSetMirror (

[in]String ParentNodeName

[in]RolePermissionType[]RolePermissions

[out]NodeId ParentNodeId

);

Argument

Description

ParentNodeName

This parameter defines the BrowseName and DisplayName of the parent Node for the Variables representing the fields of the subscribed DataSet.

RolePermissions

Value of the RolePermissions Attribute to be set on the parent Node. This value is also used as RolePermissions for all Variables of the DataSet mirror.

ParentNodeId

NodeId of the created parent Node.

Method Result Codes

ResultCode

Description

Bad_InvalidState

The DataSetReader is not configured yet or the ConfigurationVersion does not match the version in the Publisher.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

This ObjectType defines the metadata for the subscribed DataSet and the information for the processing of DataSetMessages. The SubscribedDataSetType is formally defined in Table 129.

Table 129 – SubscribedDataSetType Definition

Attribute

Value

BrowseName

SubscribedDataSetType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in Part 5

HasSubtype

ObjectType

TargetVariablesType

HasSubtype

ObjectType

SubscribedDataSetMirrorType

This ObjectType defines the metadata for the subscribed DataSet and the information for the processing of DataSetMessages. The TargetVariablesType is formally defined in Table 130.

Table 130 – TargetVariablesType Definition

Attribute

Value

BrowseName

TargetVariablesType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of SubscribedDataSetType defined in 9.1.9.1.

HasProperty

Variable

TargetVariables

FieldTarget‌DataType[]

PropertyType

Mandatory

HasComponent

Method

AddTargetVariables

Defined in 9.1.9.3.

Optional

HasComponent

Method

RemoveTargetVariables

Defined in 9.1.9.4.

Optional

The TargetVariables is defined in 6.2.9.2.

This Method is used to add target Variables to an existing list of target Variables of a TargetVariablesType Object.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

AddTargetVariables (

[in]ConfigurationVersionDataType ConfigurationVersion

[in]FieldTargetDataType[] TargetVariablesToAdd

[out] StatusCode[] AddResults

);

Argument

Description

ConfigurationVersion

Configuration version of the DataSet. The configuration version passed in through AddDataConnections must match the current configuration version in DataSetMetaData Property. If it does not match, the result Bad_InvalidState shall be returned. The ConfigurationVersionDataType is defined in 6.2.2.1.5.

TargetVariablesToAdd

The list of target Variables to write received DataSet fields to. The FieldTargetDataType is defined in 6.2.9.2.3. The succeeded connections are added to the TargetVariables Property.

AddResults

The result codes for the Variables to connect.

Method Result Codes

ResultCode

Description

Bad_NothingToDo

An empty list of Variables was passed in.

Bad_InvalidState

The DataSetReader is not configured yet or the ConfigurationVersion does not match the version in the Publisher.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

Operation Result Codes

ResultCode

Description

Bad_NodeIdInvalid

See OPC 10000-4 for the description of this result code.

Bad_NodeIdUnknown

See OPC 10000-4 for the description of this result code.

Bad_IndexRangeInvalid

See OPC 10000-4 for the description of this result code.

This status code indicates either an invalid ReceiverIndexRange or an invalid WriterIndexRange or if the two settings result in a different size.

Bad_IndexRangeNoData

See OPC 10000-4 for the description of this result code.

If the ArrayDimensions have a fixed length that cannot change and no data exists within the range of indexes specified, Bad_IndexRangeNoData is returned in AddDataConnections.

Bad_TooManyMonitoredItems

The Server has reached its maximum number of items for the DataSetReader object.

Bad_InvalidState

The TargetNodeId is already used by another target Variable.

Bad_TypeMismatch

The Server shall return a Bad_TypeMismatch error if the data type of the DataSet field is not the same type or subtype of the target Variable DataType. Based on the DataType hierarchy, subtypes of the Variable DataType shall be accepted by the Server. A ByteString is structurally the same as a one dimensional array of Byte. A Server shall accept a ByteString if an array of Byte is expected.

This Method is used to remove entries from the list of target Variables of a TargetVariablesType Object.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

RemoveTargetVariables (

[in]ConfigurationVersionDataType ConfigurationVersion

[in]UInt32[] TargetsToRemove

[out] StatusCode[] RemoveResults

);

Argument

Description

ConfigurationVersion

Configuration version of the DataSet. The configuration version passed in through RemoveDataConnections must match the current configuration version in DataSetMetaData Property. If it does not match, the result Bad_InvalidState shall be returned. The ConfigurationVersionDataType is defined in 6.2.2.1.5.

TargetsToRemove

Array of indices of connections to remove from the list of target Variables.

RemoveResults

The result codes for the connections to remove.

Method Result Codes

ResultCode

Description

Bad_NothingToDo

An empty list of Variables was passed in.

Bad_InvalidState

The DataSetReader is not configured yet or the ConfigurationVersion does not match the version in the DataSetMetaData.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

Operation Result Codes

ResultCode

Description

Bad_InvalidArgument

The provided index is invalid.

This ObjectType defines the information for the processing of DataSetMessages as mirror Variables. For each field of the DataSet a mirror Variable is created in the Subscriber AddressSpace. The SubscribedDataSetMirrorType is formally defined in Table 131.

Table 131 – SubscribedDataSetMirrorType Definition

Attribute

Value

BrowseName

SubscribedDataSetMirrorType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of SubscribedDataSetType defined in 9.1.9.1.

An Object of this type shall contain an Object with the ParentNodeName passed to the Method CreateDataSetMirror used to set the SubscribedDataSet into the mirror mode.

This ObjectType is used to indicate and change the status of a PubSub Object like PubSubConnection, DataSetWriter or DataSetReader. The PubSubStatusType is formally defined in Table 132.

Table 132 – PubSubStatusType Definition

Attribute

Value

BrowseName

PubSubStatusType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in OPC 10000-5.

HasComponent

Variable

State

PubSubState

BaseDataVariableType

Mandatory

HasComponent

Method

Enable

Defined in 9.1.10.2.

Optional

HasComponent

Method

Disable

Defined in 9.1.10.3.

Optional

The State Variable provides the current operational state of the PubSub Object. The default value is Disabled_0. The PubSubState Enumeration and the related state machine is defined in 6.2.1.

The State may be changed with product specific configuration tools or with the Methods Enable and Disable.

This Method is used to enable a configured PubSub Object. The related state machine and the transitions triggered by a successful call to this Method are defined in 6.2.1.

The Server shall reject Enable Method calls if the current State is not Disabled_0.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

Enable ();

Method Result Codes

ResultCode

Description

Bad_InvalidState

The state of the Object is not disabled.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

This Method is used to disable a PubSub Object. The related state machine and the transitions triggered by a successful call to this Method are defined in 6.2.1.

The Server shall reject Disable Method calls if the current State is Disabled_0.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

Disable ();

Method Result Codes

ResultCode

Description

Bad_InvalidState

The state of the Object is not operational.

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

PubSub ObjectTypes that require a status Object add a component with the BrowseName Status. It is formally defined in Table 133.

Table 133 – Status Object Definition

Attribute

Value

BrowseName

Status

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

HasTypeDefinition

ObjectType

PubSubStatusType

The following types are used to expose diagnostics information in the PubSub information model. Each level of the PubSub hierarchy shall contain its own diagnostics element in a standardized format. An overview over the proposed diagnostics architecture is given in Figure 44.

image047.png

Figure 44 – PubSub Diagnostics Overview

Figure 45 shows the structure of a Variable which holds a diagnostics counter with defined Properties. The PubSubDiagnosticsCounterType is formally defined in 9.1.11.5.

image048.png

Figure 45 – PubSubDiagnosticsCounterType

The PubSubDiagnosticsType is the base type for the diagnostics objects and is formally defined in Table 134.

Table 134 – PubSubDiagnosticsType

Attribute

Value

BrowseName

PubSubDiagnosticsType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in OPC 10000-5.

HasComponent

Variable

DiagnosticsLevel

DiagnosticsLevel

BaseDataVariableType

Mandatory

HasComponent

Variable

TotalInformation

UInt32

PubSubDiagnosticsCounterType

Mandatory

HasComponent

Variable

TotalError

UInt32

PubSubDiagnosticsCounterType

Mandatory

HasComponent

Method

Reset

Defined in 9.1.11.3.

Mandatory

HasComponent

Variable

SubError

Boolean

BaseDataVariableType

Mandatory

HasComponent

Object

Counters

BaseObjectType

Mandatory

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

The DiagnosticsLevel Variable configures the current diagnostics level used for the Object. The DiagnosticsLevel DataType is defined in 9.1.11.4.

The TotalInformation Variable provides the sum of all counters in this in the Object diagnostics counters with classification Information_0.

The TotalError Variable provides the sum of all counters in this in the Object diagnostics counters with classification Error_1.

The SubError Variable indicates if any statistics Object of the next PubSub layer Objects shows a value > 0 in TotalError.

The Object Counters contains all diagnostics counters for the diagnostics Object. The counters use the VariableType PubSubDiagnosticsCounterType defined in 9.1.11.5. The counter Variables of the PubSubDiagnosticsType are defined in Table 135.

Table 135 – Counters for PubSubDiagnosticsType

BrowseName

Modelling Rule

Diagnostics

Level

Class

Description

StateError

Mandatory

Basic_0

Error_1

PubSubState state machine defined in 6.2.1 changed to Error_3 state

StateOperationalByMethod

Mandatory

Basic_0

Information_0

State changed to Operational_2 state triggered by Enable Method call.

StateOperationalByParent

Mandatory

Basic_0

Information_0

State changed to Operational_2 state triggered by an operational parent

StateOperationalFromError

Mandatory

Basic_0

Information_0

State changed from Error_3 to Operational_2.

StatePausedByParent

Mandatory

Basic_0

Information_0

State changed to Paused_1 state triggered by a paused or disabled parent.

StateDisabledByMethod

Mandatory

Basic_0

Information_0

State changed to Disabled_0 state triggered by Disable Method call.

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType.

The nodes in the Objects Counters and LiveValues may be activated/deactivated by the parameter DiagnosticsLevel in the PubSubDiangosticsType.

The value of a node in the Object Counters shall be set to 0 whenever the counter changes from inactive to active.

The Server should dynamically remove inactive nodes from the Address Space in order to avoid confusion of the user by long lists of counters where only a few of them might be active. In case inactive nodes cannot be removed from the Address Space the Server shall set the StatusCode of the Variable Value to Bad_OutOfService.

This Method is used to set all counters in the Object diagnostics counters to the initial value.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

Reset ();

Method Result Codes

ResultCode

Description

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

PubSub diagnostics are intended to assure users about the correct operation of a PubSub system and to help in the discovery of potential faults. Depending on the situation, not all diagnostic Objects might be needed, and on the other hand providing them requires resources. As a result, diagnostic objects are assigned to different diagnostic levels. Only diagnostic Objects belonging to the currently set diagnostic level or a more severe level have to be provided. This mechanism provides the user the ability to select a suitable diagnostic configuration depending on the application.

The DiagnosticsLevel is an enumeration that specifies the possible diagnostics levels. The possible enumeration values are described in Table 136.

Table 136 – DiagnosticsLevel Values

Value

Description

Basic_0

Diagnostic objects from this level cannot be disabled, and thus objects from this level are the minimum diagnostic feature set that can be expected on any device that supports PubSub diagnostics at all.

Advanced_1

Diagnostic objects related to exceptional behaviour are contained in the Advanced_1 diagnostic level.

Info_2

The Info_2 diagnostic level contains high-level diagnostic objects related to the normal operation of a PubSub system.

Log_3

Diagnostic objects for the detailed logging of the operation of a PubSub system are contained in the Log_3 diagnostic level.

Debug_4

Diagnostic objects with debug information specific to a given implementation of PubSub are contained in the Debug_4 diagnostic level. As this level is intended for implementation specific diagnostics, no such objects are specified by the standard.

The PubSubDiagnosticsCounterType is formally defined in Table 137.

Table 137 – PubSubDiagnosticsCounterType

Attribute

Value

BrowseName

PubSubDiagnosticsCounterType

IsAbstract

False

ValueRank

-1 (-1 = ‘Scalar’)

DataType

UInt32

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of BaseDataVariableType defined in OPC 10000-5.

HasProperty

Variable

Active

Boolean

PropertyType

Mandatory

HasProperty

Variable

Classification

PubSubDiagnostics‌Counter‌Classification

PropertyType

Mandatory

HasProperty

Variable

DiagnosticsLevel

DiagnosticsLevel

PropertyType

Mandatory

HasProperty

Variable

TimeFirstChange

DateTime

PropertyType

Optional

The Value shall be reset to 0 when the Method Clear of the parent PubSubDiagnosticsType Object is called.

The Value shall be incremented by 1 for each corresponding event.

The Value shall not be incremented anymore when the maximum is reached (0xFFFFFFFF).

If the maximum is reached and a new event occurs, the SourceTimestamp of the Value shall be updated, even if the Value does not change. The Property Active indicates if the counter is active.

The Property Classification indicates whether this counter counts errors or other events according to PubSubDiagnosticsCounterClassification defined in 9.1.11.6.

The Property DiagnosticsLevel indicates the diagnostics level the counter belongs to. The DiagnosticsLevel is defined in 9.1.11.4.

The Property TimeFirstChange contains the Server time when the counter value changed from 0 to 1. If the counter value is 0 the Value is null.

The PubSubDiagnosticsCounterClassification is an enumeration that specifies the possible diagnostics counter classifications. The possible enumeration values are described in Table 138.

Table 138 – PubSubDiagnosticsCounterClassification Values

Value

Description

Information_0

The semantic of this diagnostics counter indicates expected events, which are not considered as errors.

Error_1

The semantic of this diagnostics counter indicates errors.

The PubSubDiagnosticsRootType defines the diagnostic information for the PublishSubscribe Object and is formally defined in Table 139.

Table 139 – PubSubDiagnosticsRootType

Attribute

Value

BrowseName

PubSubDiagnosticsRootType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsRootType are defined in Table 140.

Table 140 – LiveValues for PubSubDiagnosticsRootType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

ConfiguredDataSetWriters

Mandatory

Basic_0

UInt16

Number of configured DataSetWriters on this Server

ConfiguredDataSetReaders

Mandatory

Basic_0

UInt16

Number of configured DataSetReaders on this Server

OperationalDataSetWriters

Mandatory

Basic_0

UInt16

Number of DataSetWriters with state Operational

OperationalDataSetReaders

Mandatory

Basic_0

UInt16

Number of DataSetReaders with state Operational

The PubSubDiagnosticsConnectionType defines the diagnostic information for a PubSubConnectionType Object and is formally defined in Table 141.

Table 141 – PubSubDiagnosticsConnectionType

Attribute

Value

BrowseName

PubSubDiagnosticsConnectionType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsConnectionType are defined in Table 142.

Table 142 – LiveValues for PubSubDiagnosticsConnectionType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

ResolvedAddress

Mandatory

Basic_0

String

Resolved address of the connection (e.g. IP Address)

The PubSubDiagnosticsWriterGroupType defines the diagnostic information for a WriterGroupType Object and is formally defined in Table 143.

Table 143 – PubSubDiagnosticsWriterGroupType

Attribute

Value

BrowseName

PubSubDiagnosticsWriterGroupType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

Counters

BaseObjectType

Mandatory

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

The Object Counters contains all diagnostics counters for the diagnostics Object. The counters use the VariableType PubSubDiagnosticsCounterType defined in 9.1.11.5. The counter Variables of the PubSubDiagnosticsWriterGroupType are defined in Table 144.

Table 144 – Counters for PubSubDiagnosticsWriterGroupType

BrowseName

Modelling Rule

Diagnostics

Level

Class.

Description

Inherited counters from PubSubDiagnosticsType

SentNetworkMessages

Mandatory

Basic_0

Information_0

Sent NetworkMessages

FailedTransmissions

Mandatory

Basic_0

Error_1

Error on NetworkMessage transmission

EncryptionErrors

Optional

Advanced_1

Error_1

Error on signing or encrypting NetworkMessage

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsWriterGroupType are defined in Table 145.

Table 145 – LiveValues for PubSubDiagnosticsWriterGroupType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

ConfiguredDataSetWriters

Mandatory

Basic_0

UInt16

Number of configured DataSetWriters in this group

OperationalDataSetWriters

Mandatory

Basic_0

UInt16

Number of DataSetWriters with state Operational

SecurityTokenID

Optional

Info_2

UInt32

Currently used SecurityTokenID

TimeToNextTokenID

Optional

Info_2

Duration

Time until the next key change is expected

The PubSubDiagnosticsReaderGroupType defines the diagnostic information for a ReaderGroupType Object and is formally defined in Table 146.

Table 146 – PubSubDiagnosticsReaderGroupType

Attribute

Value

BrowseName

PubSubDiagnosticsReaderGroupType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

Counters

BaseObjectType

Mandatory

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

The Object Counters contains all diagnostics counters for the diagnostics Object. The counters use the VariableType PubSubDiagnosticsCounterType defined in 9.1.11.5. The counter Variables of the PubSubDiagnosticsReaderGroupType are defined in Table 147.

Table 147 – Counters for PubSubDiagnosticsReaderGroupType

BrowseName

Modelling Rule

Diagnostics

Level

Class

Description

Inherited counters from PubSubDiagnosticsType

ReceivedNetworkMessages

Mandatory

Basic_0

Information_0

Received and processed NetworkMessages

ReceivedInvalidNetwork‌Messages

Optional

Advanced_1

Error_1

Invalid format of NetworkMessage Header

DecryptionErrors

Optional

Advanced_1

Error_1

Decryption or signature check errors

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsReaderGroupType are defined in Table 148.

Table 148 – LiveValues for PubSubDiagnosticsReaderGroupType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

ConfiguredDataSetReaders

Mandatory

Basic_0

UInt16

Number of configured DataSetReaders in this group

OperationalDataSetReaders

Mandatory

Basic_0

UInt16

Number of DataSetReaders with state Operational

The PubSubDiagnosticsDataSetWriterType defines the diagnostic information for a PubSubDataSetWriterType Object and is formally defined in Table 149.

Table 149 – PubSubDiagnosticsDataSetWriterType

Attribute

Value

BrowseName

PubSubDiagnosticsDataSetWriterType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

Counters

BaseObjectType

Mandatory

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

The Object Counters contains all diagnostics counters for the diagnostics Object. The counters use the VariableType PubSubDiagnosticsCounterType defined in 9.1.11.5. The counter Variables of the PubSubDiagnosticsDataSetWriterType are defined in Table 150.

Table 150 – Counters for PubSubDiagnosticsDataSetWriterType

BrowseName

Modelling Rule

Diagnostics

Level

Class.

Description

Inherited counters from PubSubDiagnosticsType

FailedDataSetMessages

Mandatory

Basic_0

Error_1

Number of failed DataSetMessages

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsDataSetWriterType are defined in Table 151.

Table 151 – LiveValues for PubSubDiagnosticsDataSetWriterType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

MessageSequenceNumber

Optional

Info_2

UInt16

Sequence number of last DataSetMessage

StatusCode

Optional

Info_2

StatusCode

Status of last DataSetMessage

MajorVersion

Optional

Info_2

UInt32

MajorVersion used for DataSet

MinorVersion

Optional

Info_2

UInt32

MinorVersion used for DataSet

The PubSubDiagnosticsDataSetReaderType defines the diagnostic information for a PubSubDataSetReaderType Object and is formally defined in Table 152.

Table 152 – PubSubDiagnosticsDataSetReaderType

Attribute

Value

BrowseName

PubSubDiagnosticsDataSetReaderType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

Counters

BaseObjectType

Mandatory

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

The Object Counters contains all diagnostics counters for the diagnostics Object. The counters use the VariableType PubSubDiagnosticsCounterType defined in 9.1.11.5. The counter Variables of the PubSubDiagnosticsDataSetReaderType are defined in Table 153.

Table 153 – Counters for PubSubDiagnosticsDataSetReaderType

BrowseName

Modelling Rule

Diagnostics

Level

Class.

Description

Inherited counters from PubSubDiagnosticsType

FailedDataSetMessages

Mandatory

Basic_0

Error_1

e.g. because of unknown MajorVersion

DecryptionErrors

Optional

Advanced_1

Error_1

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsDataSetReaderType are defined in Table 154.

Table 154 – LiveValues for PubSubDiagnosticsDataSetReaderType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

MessageSequenceNumber

Optional

Info_2

UInt16

SequenceNumber of last DataSetMessage

StatusCode

Optional

Info_2

StatusCode

Status of last DataSetMessage

MajorVersion

Optional

Info_2

UInt32

MajorVersion of available DataSetMetaData

MinorVersion

Optional

Info_2

UInt32

MinorVersion of available DataSetMetaData

SecurityTokenID

Optional

Info_2

UInt32

Currently used SecurityTokenID

TimeToNextTokenID

Optional

Info_2

Duration

Time until the next key change is expected

This EventType is a base type for events which indicate an error or status change associated with a PubSubConnectionType, PubSubGroupType, DataSetWriterType or DataSetReaderType Object. The PubSubStatusEventType is formally defined in Table 155.

Table 155 – PubSubStatusEventType Definition

Attribute

Value

BrowseName

PubSubStatusEventType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of SystemEventType defined in OPC 10000-5.

HasProperty

Variable

ConnectionId

NodeId

PropertyType

Mandatory

HasProperty

Variable

GroupId

NodeId

PropertyType

Mandatory

HasProperty

Variable

State

PubSubState

PropertyType

Mandatory

This EventType inherits all Properties of the SystemEventType. Their semantic is defined in OPC 10000-5.

The SourceNode is the NodeId of the PubSubConnectionType, PubSubGroupType, DataSetWriterType or DataSetReaderType Object associated with the Event.

The SourceName is the BrowseName of the SourceNode.

The ConnectionId Property is the NodeId of the PubSubConnectionType Object associated with the source of the status Event.

The GroupId Property is the NodeId of the PubSubGroupType Object associated with the source of the status Event. The GroupId is Null if a PubSubConnection is the source of the Event.

The State Property is the current state of the PubSubStatus Object associated with the source of the status Event.

This EventType indicates that a NetworkMessage could not be published because it exceeds the limits of transport. The PubSubTransportLimitsExceedEventType is formally defined in Table 156.

Table 156 – PubSubTransportLimitsExceedEventType Definition

Attribute

Value

BrowseName

PubSubTransportLimitsExceedEventType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of PubSubStatusEventType defined in 9.1.12.2.

HasProperty

Variable

Actual

UInt32

PropertyType

Mandatory

HasProperty

Variable

Maximum

UInt32

PropertyType

Mandatory

This EventType inherits all Properties of the PubSubStatusEventType.

The Actual Property has the size in bytes of the actual NetworkMessage.

The Maximum Property has the maximum size of NetworkMessages in bytes allowed by the transport.

This EventType indicates that a NetworkMessage could not be published because of a communication failure. The PubSubCommunicationFailureEventType is formally defined in Table 157.

Table 157 – PubSubCommunicationFailureEventType Definition

Attribute

Value

BrowseName

PubSubCommunicationFailureEventType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of PubSubStatusEventType defined in 9.1.12.2.

HasProperty

Variable

Error

StatusCode

PropertyType

Mandatory

This EventType inherits all Properties of the PubSubStatusEventType.

The Message Event field inherited from BaseEventType has a localized description of the error.

The Error Property has the StatusCode associated with the error.

This ObjectType represents UADP message mapping specific parameters for a WriterGroup. The UadpWriterGroupMessageType is formally defined in Table 158.

Table 158 – UadpWriterGroupMessageType Definition

Attribute

Value

BrowseName

UadpWriterGroupMessageType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of WriterGroupMessageType defined in 9.1.6.8.

HasProperty

Variable

GroupVersion

VersionTime

PropertyType

Mandatory

HasProperty

Variable

DataSetOrdering

DataSetOrderingType

PropertyType

Mandatory

HasProperty

Variable

NetworkMessage‌ContentMask

UadpNetworkMessageContentMask

PropertyType

Mandatory

HasProperty

Variable

SamplingOffset

Duration

PropertyType

Optional

HasProperty

Variable

PublishingOffset

Duration[]

PropertyType

Mandatory

The GroupVersion is defined in 6.3.1.1.2.

The DataSetOrdering is defined in 6.3.1.1.3.

The NetworkMessageContentMask is defined in 6.3.1.1.4.

The SamplingOffset is defined in 6.3.1.1.5.

The PublishingOffset is defined in 6.3.1.1.6. The ValueRank of the PublishingOffset shall be -3 if the Publisher supports scheduling of multiple NetworkMessages per PublishingInterval. If only a single offset can be configured, the ValueRank shall be -1. Therefore, the Value of the PublishingOffset can be a scalar value or a one-dimensional array value. The default Value is scalar value.

This ObjectType represents UADP message mapping specific parameters for a DataSetWriter. The UadpDataSetWriterMessageType is formally defined in Table 159.

Table 159 – UadpDataSetWriterMessageType Definition

Attribute

Value

BrowseName

UadpDataSetWriterMessageType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of DataSetWriterMessageType defined in 9.1.7.4.

HasProperty

Variable

DataSetMessageContentMask

UadpDataSetMessage‌ContentMask

PropertyType

Mandatory

HasProperty

Variable

ConfiguredSize

UInt16

PropertyType

Mandatory

HasProperty

Variable

NetworkMessageNumber

UInt16

PropertyType

Mandatory

HasProperty

Variable

DataSetOffset

UInt16

PropertyType

Mandatory

The DataSetMessageContentMask is defined in 6.3.1.2.2.

The ConfiguredSize is defined in 6.3.1.2.2.

The NetworkMessage is defined in 6.3.1.2.4.

The DataSetOffset is defined in 6.3.1.2.5.

This ObjectType represents UADP message mapping specific parameters for a DataSetReader. The UadpDataSetWriterMessageType is formally defined in Table 160.

Table 160 – UadpDataSetReaderMessageType Definition

Attribute

Value

BrowseName

UadpDataSetReaderMessageType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of DataSetReaderMessageType defined in 9.1.8.4.

HasProperty

Variable

GroupVersion

VersionTime

PropertyType

Mandatory

HasProperty

Variable

NetworkMessageNumber

UInt16

PropertyType

Mandatory

HasProperty

Variable

DataSetOffset

UInt16

PropertyType

Mandatory

HasProperty

Variable

DataSetClassId

Guid

PropertyType

Mandatory

HasProperty

Variable

NetworkMessageContentMask

UadpNetworkMessage‌ContentMask

PropertyType

Mandatory

HasProperty

Variable

DataSetMessageContentMask

UadpDataSetMessage‌ContentMask

PropertyType

Mandatory

HasProperty

Variable

PublishingInterval

Duration

PropertyType

Mandatory

HasProperty

Variable

ReceiveOffset

Duration

PropertyType

Mandatory

HasProperty

Variable

ProcessingOffset

Duration

PropertyType

Mandatory

The GroupVersion is defined in 6.3.1.3.1.

The NetworkMessageNumber is defined in 6.3.1.3.2.

The DataSetOffset is defined in 6.3.1.3.3.

The DataSetClassId is defined in 6.3.1.3.4. The initial value is null.

The NetworkMessageContentMask is defined in 6.3.1.3.5.

The DataSetMessageContentMask is defined in 6.3.1.3.6.

The PublishingInterval is defined in 6.3.1.3.7.

The ReceiveOffset is defined in 6.3.1.3.8.

The ProcessingOffset is defined in 6.3.1.3.9.

This ObjectType represents JSON message mapping specific parameters for a WriterGroup. The JsonWriterGroupMessageType is formally defined in Table 161.

Table 161 – JsonWriterGroupMessageType Definition

Attribute

Value

BrowseName

JsonWriterGroupMessageType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of WriterGroupMessageType defined in 9.1.6.8.

HasProperty

Variable

NetworkMessage‌ContentMask

JsonNetworkMessageContentMask

PropertyType

Mandatory

The NetworkMessageContentMask is defined in 6.3.2.3.1.

This ObjectType represents UADP message mapping specific parameters for a DataSetWriter. The JsonDataSetWriterMessageType is formally defined in Table 162.

Table 162 – JsonDataSetWriterMessageType Definition

Attribute

Value

BrowseName

JsonDataSetWriterMessageType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of DataSetWriterMessageType defined in 9.1.7.4.

HasProperty

Variable

DataSetMessageContentMask

JsonDataSetMessage‌ContentMask

PropertyType

Mandatory

The DataSetMessageContentMask is defined in 6.3.2.2.1.

This ObjectType represents UADP message mapping specific parameters for a DataSetReader. The JsonDataSetReaderMessageType is formally defined in Table 163.

Table 163 – JsonDataSetReaderMessageType Definition

Attribute

Value

BrowseName

JsonDataSetReaderMessageType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of DataSetReaderMessageType defined in 9.1.8.4.

HasProperty

Variable

NetworkMessageContentMask

JsonNetworkMessage‌ContentMask

PropertyType

Mandatory

HasProperty

Variable

DataSetMessageContentMask

JsonDataSetMessage‌ContentMask

PropertyType

Mandatory

The NetworkMessageContentMask is defined in 6.3.2.3.1.

The DataSetMessageContentMask is defined in 6.3.2.3.2.

This ObjectType represents datagram transport protocol mapping specific parameters for a PubSubConnection. The DatagramConnectionTransportType is formally defined in Table 164.

Table 164 – DatagramConnectionTransportType Definition

Attribute

Value

BrowseName

DatagramConnectionTransportType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of ConnectionTransportType defined in 9.1.5.6.

HasComponent

Object

DiscoveryAddress

NetworkAddressType

Mandatory

The DiscoveryAddress is defined in 6.4.1.1.1.

This ObjectType represents datagram transport protocol mapping specific parameters for a WriterGroup. The DatagramWriterGroupTransportType is formally defined in Table 167.

Table 165 – DatagramWriterGroupTransportType Definition

Attribute

Value

BrowseName

DatagramWriterGroupTransportType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of WriterGroupTransportType defined in 9.1.6.7.

HasProperty

Variable

MessageRepeatCount

Byte

PropertyType

Optional

HasProperty

Variable

MessageRepeatDelay

Duration

PropertyType

Optional

The MessageRepeatCount is defined in 6.4.1.2.1.

The MessageRepeatDelay is defined in 6.4.1.2.2.

There is no datagram specific transport protocol mapping parameter defined for the DataSetWriter.

There is no datagram specific transport protocol mapping parameter defined for the DataSetReader.

This ObjectType represents broker transport protocol mapping specific parameters for a PubSubConnection. The BrokerConnectionTransportType is formally defined in Table 166.

Table 166 – BrokerConnectionTransportType Definition

Attribute

Value

BrowseName

BrokerConnectionTransportType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of ConnectionTransportType defined in 9.1.5.6.

HasProperty

Variable

ResourceUri

String

PropertyType

Mandatory

HasProperty

Variable

AuthenticationProfileUri

String

PropertyType

Mandatory

The ResourceUri is defined in 6.4.2.1.1.

The AuthenticationProfileUri is defined in 6.4.2.1.2.

This ObjectType represents broker transport protocol mapping specific parameters for a WriterGroup. The BrokerWriterGroupTransportType is formally defined in Table 167.

Table 167 – BrokerWriterGroupTransportType Definition

Attribute

Value

BrowseName

BrokerWriterGroupTransportType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of WriterGroupTransportType defined in 9.1.6.7.

HasProperty

Variable

QueueName

String

PropertyType

Mandatory

HasProperty

Variable

ResourceUri

String

PropertyType

Mandatory

HasProperty

Variable

AuthenticationProfileUri

String

PropertyType

Mandatory

HasProperty

Variable

RequestedDeliveryGuarantee

BrokerTransportQualityOfService

PropertyType

Mandatory

The QueueName is defined in 6.4.2.2.1.

The ResourceUri is defined in 6.4.2.2.2.

The AuthenticationProfileUri is defined in 6.4.2.2.3.

The RequestedDeliveryGuarantee is defined in 6.4.2.2.4.

This ObjectType represents broker transport protocol mapping specific parameters for a DataSetWriter. The BrokerDataSetWriterTransportType is formally defined in Table 168.

Table 168 – BrokerDataSetWriterTransportType Definition

Attribute

Value

BrowseName

BrokerDataSetWriterTransportType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of DataSetWriterTransportType defined in 9.1.7.3.

HasProperty

Variable

QueueName

String

PropertyType

Mandatory

HasProperty

Variable

MetaDataQueueName

String

PropertyType

Mandatory

HasProperty

Variable

ResourceUri

String

PropertyType

Mandatory

HasProperty

Variable

AuthenticationProfileUri

String

PropertyType

Mandatory

HasProperty

Variable

RequestedDeliveryGuarantee

BrokerTransportQualityOfService

PropertyType

Mandatory

HasProperty

Variable

MetaDataUpdateTime

Duration

PropertyType

Mandatory

The QueueName is defined in 6.4.2.3.1.

The ResourceUri is defined in 6.4.2.3.2.

The AuthenticationProfileUri is defined in 6.4.2.3.3.

The RequestedDeliveryGuarantee is defined in 6.4.2.3.4.

The MetaDataQueueName is defined in 6.4.2.3.5.

The MetaDataUpdateTime is defined in 6.4.2.3.6.

This type extends the list of well-known extension field names defined in Table 107 with the names defined in Table 169.

Table 169 – Broker Writer Well-Known Extension Field Names

Name

Type

Description

QueueName

String

The Broker queue destination for Data messages.

MetaDataQueueName

String

The Broker queue destination for metadata messages.

This ObjectType represents datagram transport protocol mapping specific parameters for a DataSetReader. The BrokerDataSetReaderTransportType is formally defined in Table 170.

Table 170 – BrokerDataSetReaderTransportType Definition

Attribute

Value

BrowseName

BrokerDataSetReaderTransportType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of DataSetReaderTransportType defined in 9.1.8.3.

HasProperty

Variable

QueueName

String

PropertyType

Mandatory

HasProperty

Variable

ResourceUri

String

PropertyType

Mandatory

HasProperty

Variable

AuthenticationProfileUri

String

PropertyType

Mandatory

HasProperty

Variable

RequestedDeliveryGuarantee

BrokerTransportQualityOfService

PropertyType

Mandatory

HasProperty

Variable

MetaDataQueueName

String

PropertyType

Mandatory

The QueueName is defined in 6.4.2.4.1.

The ResourceUri is defined in 6.4.2.4.2.

The AuthenticationProfileUri is defined in 6.4.2.4.3.

The RequestedDeliveryGuarantee is defined in 6.4.2.4.4.

The MetaDataQueueName is defined in 6.4.2.4.5.