PubSub defines different configuration parameters for the various PubSub components. They define the behaviour of Publisher and Subscriber. The parameters are grouped by component and are partitioned into ‘common’, ’message mapping’, and ‘transport protocol mapping’.
The common parameters are defined in 6.2. The parameters for the different message mappings are defined in 6.3. The parameters for the different transport protocol mappings are defined in 6.4.
The application of communication parameters for concrete message and transport protocol mappings is defined in Clause 7.
Configuration of these parameters can be performed through the OPC UA Information Model for PubSub configuration defined in Clause 9 or through vendor-specific mechanisms. The parameter groupings in this clause define the parameters and also define Structures used to represent the parameters of the groupings. These Structures are used in the PubSub configuration model described in Clause 9 but they can also be used for offline configuration or vendor-specific configuration mechanisms.
Figure 19 depicts the different components and their relation to each other. The WriterGroup, DataSetWriter and PublishedDataSet components define the data acquisition for the DataSets, the message generation and the sending on the Publisher side. These parameters need to be known on the Subscriber side to configure DataSetReaders and to filter and process DataSetMessages.
Figure 19 – PubSub component overview
Figure 19 shows the following components:
- PublishedDataSet contains the DataSetMetaData describing the content of the DataSets produced by the PublishedDataSet and the corresponding data acquisition parameters.
- DataSetWriter parameters are necessary for creating DataSetMessages. Each DataSetWriter is bound to a single PublishedDataSet. A PublishedDataSet can have multiple DataSetWriters.
- WriterGroup parameters are necessary for creating a NetworkMessage. Each writer group can have one or more DataSetWriters. Some of these parameters are used for creating the DataSetMessages. They are grouped here since they are the same for all DataSetMessages in a single NetworkMessage.
- PubSubConnection parameters represent settings needed for the transport protocol. One connection can have a number of writer groups and reader groups.
- ReaderGroup is used to group a list of DataSetReaders and contains a few shared settings for them. It is not symmetric to a WriterGroup and it is not related to a particular NetworkMessage. The NetworkMessage related filter settings are on the DataSetReaders.
- DataSetReader parameters represent settings for filtering of received NetworkMessages and DataSetMessages as well as settings for decoding of the DataSetMessages of interest.
- SubscribedDataSet parameters define the processing of the decoded DataSet in the Subscriber for one DataSetReader.
- PublishSubscribe is the overall management of the PubSub groupings. It contains a list of PublishedDataSets and a list of PubSubConnections.
The different PubSub mapping specific parameter groupings are shown in Figure 20.
Figure 20 – PubSub mapping specific parameters overview
Transport protocol mapping specific parameters may be defined for the PubSubConnection, the WriterGroup or the DataSetWriter.
Message mapping specific parameters are defined for the NetworkMessages on the WriterGroup and for the DataSetMessages on the DataSetWriter.
The PubSubState is used to expose and control the operation of a PubSub component. It is an enumeration of the possible states. The enumeration values are described in Table 1.
Name |
Value |
Description |
Disabled |
0 |
The PubSub component is configured but currently disabled. |
Paused |
1 |
The PubSub component is enabled but currently paused by a parent component. The parent component is either Disabled or Paused. |
Operational |
2 |
The PubSub component is operational. |
Error |
3 |
The PubSub component is in an error state. |
PreOperational |
4 |
The PubSub component is enabled but currently in the process to execute the steps necessary to enter the Operational state. |
Figure 21 depicts the PubSub components that have a PubSub state and their parent-child relationship. State changes of children are based on changes of the parent state. The root of the hierarchy is the PublishSubscribe component.
Figure 21 – PubSub component state dependencies
Figure 22 describes the formal state machine with the possible transitions.
Figure 22 – PubSubState state machine
Table 2 formally defines the transitions of the state machine.
Table 2 – PubSubState state machine
Source State |
Target State |
Trigger Description |
Disabled |
Paused |
The component was successfully enabled but the parent component is in the state Disabled or Paused. |
Disabled |
PreOperational |
The component was successfully enabled. |
Paused |
Disabled |
The component was successfully disabled. |
Paused |
PreOperational |
The state of the parent component changed to Operational. |
PreOperational |
Operational |
The component completed the steps necessary to enter the Operational state. These steps include setup of network communication and security keys. If the PubSub component is a DataSetReader, the state shall change to Operational after the first key frame or event DataSetMessage was received. |
PreOperational |
Disabled |
The component was successfully disabled. |
PreOperational |
Paused |
The state of the parent component changed to Disabled or Paused. |
PreOperational |
Error |
There is a pending error situation for the related PubSub component. |
Operational |
Disabled |
The component was successfully disabled. |
Operational |
Paused |
The state of the parent component changed to Disabled or Paused. |
Operational |
Error |
There is a pending error situation for the related PubSub component. |
Error |
Disabled |
The component was successfully disabled. |
Error |
Paused |
The state of the parent component changed to Disabled or Paused. |
Error |
Operational |
The error situation was resolved for the related PubSub component. |
Error |
PreOperational |
The error situation was resolved for the related PubSub component. |
The PubSubState representation in the AddressSpace is defined in Table 3.
Table 3 – PubSubState definition
Attribute |
Value |
||||
BrowseName |
PubSubState |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Others |
Subtype of Enumeration defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
EnumStrings |
LocalizedText [] |
PropertyType |
|
Conformance Units |
|||||
PubSub Model Base |
The PubSub components have configuration property lists as KeyValuePair arrays. These optional configuration properties extend the configuration parameters defined for the different PubSub components.
The configuration properties are mainly used as protocol or product specific parameters influencing the behaviour of the PubSub application. These properties may contain information that should not be visible outside the configuration tools and PubSub applications. Therefore the properties shall not be included in the PubSubConnectionDataType, WriterGroupDataType and DataSetWriterDataType when sent in discovery messages.
The configuration are defined in different sections in the scope where they are used. The properties that can be applied to all PubSub components are defined in Table 4.
The NamespaceIndex of the QualifiedName in the KeyValuePair for properties defined in this document shall be 0. The Name of the QualifiedName is the property name from Table 4. The DataType of the Value in the KeyValuePair shall be the DataType defined in Table 4.
Table 4 formally defines the general PubSub configuration properties.
Table 4 – General PubSub configuration properties
Key |
DataType |
Description |
0:NotPersisted |
Boolean |
Indicates if the component configuration is persisted. If this property is not present the default value is false and the component configuration is persisted. |
0:ErrorDelay |
Duration |
A time delay in milliseconds from the time the first error is detected until transitioning to the PubSubState Error. |
A PublishedDataSet defines the content of a DataSetMessage and the configuration of the information source for a DataSet. See 5.2 for the introduction to DataSets, 5.3 for the introduction to DataSetMessages and 5.4.1.2 for an introduction to the different source options and the parameters for sending of DataSetMessages.
The content of a DataSetMessage is defined by the DataSetMetaData. This information is required for interoperability between Publisher and Subscriber. See 6.2.3.2.
The information source is only necessary for the configuration of the Publisher. The standard configuration options are published data items for cyclic DataSets as defined in 6.2.3.7 and published events for acyclic DataSets as defined in 6.2.3.8. OPC UA Applications can provide PublishedDataSets where the information source is application specific. The custom PublishedDataSet source DataType defined in 6.2.3.9 indicates if the DataSet is cyclic or acyclic. Cyclic DataSets are sent as key frame or delta frame DataSetMessages. Acyclic DataSets are sent as event DataSetMessages.
DataSetMetaData describe the content and semantic of a DataSet. The order of the fields in the DataSetMetaData shall match the order of DataSet fields when they are included in the published DataSetMessages. The DataSetMetaDataType is defined in 6.2.3.2.3.
The DataSetMetaData is a subtype of DataTypeSchemaHeader. The DataTypeSchemaHeader provides OPC UA DataType definitions used in the DataSetMetaData. The DataTypeSchemaHeader is defined in OPC 10000-5.
The DataTypeSchemaHeader provides information that is required when the DataSetMetaData is used outside the scope of an OPC UA Server e.g when sent in PubSub messages or when the PubSubConfiguration is exchanged with the UABinaryFileDataType. This information includes a namespace array and DataType descriptions. OPC UA namespace defined DataTypes are not included.
The DataTypeSchemaHeader of the DataSetMetaData shall be populated with the necessary information. This includes all namespaces and DataTypes that are potentially contained in the associated DataSetMessages.
This Structure DataType is a subtype of DataTypeSchemaHeader and is used to provide the metadata for a DataSet. The DataSetMetaDataType is formally defined in Table 5.
Table 5 – DataSetMetaDataType structure
Name |
Type |
Description |
DataSetMetaDataType |
Structure |
Subtype of DataTypeSchemaHeader defined in OPC 10000-5. |
Name |
String |
Name of the DataSet. |
Description |
LocalizedText |
Description of the DataSet. The default value is a null or empty LocalizedText. |
Fields |
FieldMetaData[] |
The metadata for the fields in the DataSet. The FieldMetaData DataType is defined in 6.2.3.2.4. |
DataSetClassId |
Guid |
This field provides the globally unique identifier of the class of DataSet if the DataSet is based on a DataSetClass. In this case, this field shall match the DataSetClassId of the concrete DataSet configuration. If the DataSets are not created from a class, this field is null. |
ConfigurationVersion |
ConfigurationVersionDataType |
The configuration version for the current configuration of the DataSet. |
Its representation in the AddressSpace is defined in Table 6.
Table 6 – DataSetMetaDataType definition
Attributes |
Value |
BrowseName |
DataSetMetaDataType |
IsAbstract |
False |
Subtype of DataTypeSchemaHeader defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery |
This Structure DataType is used to provide the metadata for a field in a DataSet. The FieldMetaData is formally defined in Table 7.
Table 7 – FieldMetaData structure
Name |
Type |
Description |
FieldMetaData |
Structure |
|
Name |
String |
Name of the field. The name shall be unique in the DataSet. |
Description |
LocalizedText |
Description of the field. The default value shall be a null or empty LocalizedText. |
FieldFlags |
DataSetFieldFlags |
Flags for the field. |
BuiltInType |
Byte |
The built-in data type of the field. The possible built-in type values are defined in OPC 10000-6. All data types are transferred in DataSetMessages as one of the built-in data types. In most cases the identifier of the DataType NodeId matches the built-in type. The following special cases need to be handled in addition: (1) Abstract types always have the built-in type Variant since they can result in different concrete types in a DataSetMessage. The dataType field may provide additional restrictions e.g. if the abstract type is Number. Abstract types shall not be used if the field is represented as RawData set by the DataSetFieldContentMask defined in 6.2.4.2. (2) Enumeration DataTypes are encoded as Int32. The Enumeration strings are defined through a DataType referenced through the dataType field. (3) Structure and Union DataTypes are encoded as ExtensionObject. The encoding rules are defined through a DataType referenced through the dataType field. (4) DataTypes derived from built-in types have the BuiltInType of the corresponding base DataType. The concrete subtype is defined through the dataType field. (5) OptionSet DataTypes are either encoded as one of the concrete UInteger DataTypes or as an instance of an OptionSetType in an ExtensionObject. |
DataType |
NodeId |
The NodeId of the DataType of this field. If the DataType is an Enumeration or an OptionSet, the semantic of the Enumeration DataType is provided through the enumDataTypes field of the DataSetMetaData base type DataTypeSchemaHeader. If the DataType is a Structure or Union, the encoding and decoding description of the Structure DataType is provided through the structureDataTypes field of the DataSetMetaData base type DataTypeSchemaHeader. |
ValueRank |
Int32 |
Indicates whether the dataType is an array and how many dimensions the array has. It may have the following values: n > 1: the dataType is an array with the specified number of dimensions. OneDimension (1): The dataType is an array with one dimension. OneOrMoreDimensions (0): The dataType is an array with one or more dimensions. Scalar (−1): The dataType is not an array. Any (−2): The dataType can be a scalar or an array with any number of dimensions. ScalarOrOneDimension (−3): The dataType can be a scalar or a one dimensional array. NOTE All DataTypes are considered to be scalar, even if they have array-like semantics like ByteString and String. Only a concrete valueRank with values n=-1 or n>0 shall be used if the field is represented as RawData set by the DataSetFieldContentMask defined in 6.2.4.2. |
ArrayDimensions |
UInt32[] |
This field specifies the maximum supported length of each dimension. If the maximum is unknown the value shall be 0. The number of elements shall be equal to the value of the valueRank field. This field shall be null or empty if valueRank ≤ 0. The maximum number of elements of an array transferred on the wire is 2.147.483.647 (max Int32). It is the total number of elements in all dimensions based on the UA Binary encoding rules for arrays. |
MaxStringLength |
UInt32 |
If the dataType field is a String, LocalizedText (the text field) or ByteString then this field specifies the maximum supported length of the data in number of bytes. If the maximum is unknown the value shall be 0.If the dataType field is not a String, LocalizedText or ByteString the value shall be 0. If the valueRank is greater than 0 this field applies to each element of the array. |
DataSetFieldId |
Guid |
The unique ID for the field in the DataSet. The ID is generated when the field is added to the list. A change of the position of the field in the list shall not change the ID. |
Properties |
KeyValuePair[] |
List of Property values providing additional semantic for the field. If at least one Property value changes, the MajorVersion of the ConfigurationVersion shall be updated. The Property in the FieldMetaData shall correctly describe the Field Value in the DataSetMessages. For example if the Property is EngineeringUnits, the unit of the Field Value shall match the unit of the FieldMetaData. The KeyValuePair DataType is defined in OPC 10000-5. For this field the key in the KeyValuePair structure is the BrowseName of the Property and the value in the KeyValuePair structure is the Value of the Property. |
Its representation in the AddressSpace is defined in Table 8.
Table 8 – FieldMetaData definition
Attributes |
Value |
BrowseName |
FieldMetaData |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery |
This DataType defines flags for DataSet fields.
The DataSetFieldFlags is formally defined in Table 9.
Table 9 – DataSetFieldFlags Values
Value |
Bit No. |
Description |
PromotedField |
0 |
The flag indicates if the field is promoted to the NetworkMessages or transport protocol header. Setting this flag increases the size of the NetworkMessages since information from the DataSetMessage body is also promoted to the header. Depending on the used security, the header including the field may be unencrypted. Promoted fields are always included in the header even if the DataSetMessage payload is a delta frame and the DataSet field is not included in the delta frame. In this case the last sent value is sent in the header. The order of the fields in the DataSetMetaData promoted to the header shall match the order of the fields in the header unless the header includes field names. |
The DataSetFieldFlags representation in the AddressSpace is defined in Table 10.
Table 10 – DataSetFieldFlags definition
Attribute |
Value |
||||
BrowseName |
DataSetFieldFlags |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Others |
Subtype of UInt16 defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
OptionSetValues |
LocalizedText [] |
PropertyType |
|
Conformance Units |
|||||
PubSub Parameters Discovery |
This Structure DataType is used to indicate configuration changes in the information published for a DataSet. The ConfigurationVersionDataType is formally defined in Table 11.
Table 11 – ConfigurationVersionDataType structure
Name |
Type |
Description |
ConfigurationVersionDataType |
Structure |
|
MajorVersion |
VersionTime |
The majorVersion reflects the time of the last major change of the DataSet content. The VersionTime DataType is defined in OPC 10000-4. To assure interoperability, the Subscriber shall use DataSetMetaData for decoding with a majorVersion that matches the majorVersion in DataSetMessages sent by the Publisher. Removing fields from the DataSet content, reordering fields, adding fields in between other fields or a DataType change in fields shall result in an update of the majorVersion. If at least one Property value of a DataSetMetaData field changes, the majorVersion shall be updated. There can be situations where older configurations of a Publisher are loaded and changed with product-specific configuration tools. In this case the majorVersion shall be updated if the configuration tool is not able to verify if the change only extends the configuration and does not change the existing content. Additional criteria for changing majorVersion or minorVersion are defined in this document. |
MinorVersion |
VersionTime |
The minorVersion reflects the time of the last change. Only the minorVersion shall be updated if fields are added at the end of the DataSet content. If the majorVersion is updated, the minorVersion is updated to the same value as majorVersion. |
Its representation in the AddressSpace is defined in Table 12.
Table 12 – ConfigurationVersionDataType definition
Attributes |
Value |
BrowseName |
ConfigurationVersionDataType |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery |
DataSetMetaData may be specific to a single Publisher and a single selection of information or universal, e.g. defined by a standards organization or by a plant operator as a DataSetClass. DataSets that conform to such a DataSetClass are identified with a DataSetClassId.
The DataSetClassId is the globally unique identifier (Guid) of a DataSetClass. It is included in the DataSetMetaData. The NetworkMessageContentMask controls the availability of the DataSetClassId in the NetworkMessage.
The ExtensionFields parameter allows the configuration of fields with values to be included in the DataSet when the existing AddressSpace of the Publisher does not provide the necessary information. The ExtensionFields are represented as an array of KeyValuePair Structures.
This Structure DataType represents the PublishedDataSet parameters. The PublishedDataSetDataType is formally defined in Table 13.
Table 13 – PublishedDataSetDataType structure
Name |
Type |
Description |
AllowSubtypes |
PublishedDataSetDataType |
Structure |
|
|
Name |
String |
Name of the PublishedDataSet. It is recommended to use a human readable name. The name of the PublishedDataSet shall be unique in the Publisher. |
|
DataSetFolder |
String[] |
Optional path of the DataSet folder used to group PublishedDataSets where each entry in the String array represents one level in a DataSet folder hierarchy. If no grouping is needed the parameter is a null or empty String array. |
|
DataSetMetaData |
DataSetMetaDataType |
Defined in 6.2.3.2. |
|
ExtensionFields |
KeyValuePair[] |
Defined in 6.2.3.4. |
|
DataSetSource |
PublishedDataSetSourceDataType |
Defined in 6.2.3.6. If the parameter is null, the source creates cyclic DataSets. This is equal to a PublishedDataSetCustomSourceDataType with cyclicDataSet set to true. |
True |
Its representation in the AddressSpace is defined in Table 14.
Table 14 – PublishedDataSetDataType definition
Attributes |
Value |
BrowseName |
PublishedDataSetDataType |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters PublishedDataSet |
The PublishedDataSetSourceDataType Structure is an abstract base type without fields for the definition of the PublishedDataSet source. Its representation in the AddressSpace is defined in Table 15.
Table 15 – PublishedDataSetSourceDataType definition
Attributes |
Value |
BrowseName |
PublishedDataSetSourceDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters PublishedDataSet |
The parameter PublishedData defines the content of a DataSet created from Variable Values and therefore the content of the DataSetMessage sent by a DataSetWriter. The sources of the DataSet fields are defined through an array of PublishedVariableDataType.
The index into the array has an important role for Subscribers and for configuration tools. It is used as a handle to reference the Value in DataSetMessages received by Subscribers. The index may change after configuration changes. Changes are indicated by the ConfigurationVersion of the DataSet and applications working with the index shall always check the ConfigurationVersion before using the index.
The length of the PublishedData array shall match the length of the fields array in the corresponding DataSetMetaData.
If an entry of the PublishedData references one of the ExtensionFields, the substituteValue shall contain the QualifiedName of the ExtensionFields entry. All other fields of this PublishedVariableDataType array element shall be null or empty.
The DataType PublishedVariableDataType represents the configuration information for one Variable. The PublishedVariableDataType is formally defined in Table 16.
Table 16 – PublishedVariableDataType structure
Name |
Type |
Description |
PublishedVariableDataType |
Structure |
|
PublishedVariable |
NodeId |
The NodeId of the published Variable. Some transport protocols require knowledge on the message receiver side about the DataType, ValueRank and ArrayDimensions to be able to decode the message content. This information is provided through the DataSetMetaData provided for the DataSet. |
AttributeId |
IntegerId |
Id of the Attribute to publish e.g. the Value Attribute. This shall be a valid Attribute id. The Attributes are defined in OPC 10000-3. The IntegerId DataType is defined in OPC 10000-4. The IntegerIds for the Attributes are defined in OPC 10000-6. |
SamplingIntervalHint |
Duration |
A recommended rate of acquiring new values for change or deadband evaluation. A Publisher should use this value as hint for setting the internal sampling rate. The value 0 indicates that the Server should use the fastest practical rate. The value -1 indicates that the default sampling interval defined by the PublishingInterval of the WriterGroup is requested. Any negative number is interpreted as -1. |
DeadbandType |
UInt32 |
A value that defines the Deadband type and behaviour. Value Description None No Deadband calculation should be applied. Absolute AbsoluteDeadband (This type is specified in OPC 10000-4) Percent PercentDeadband (This type is specified in OPC 10000-8). |
DeadbandValue |
Double |
The deadband value for the corresponding DeadbandType. The meaning of the value depends on DeadbandType. |
IndexRange |
NumericRange |
This parameter is used to identify a single element of an array, or a single range of indexes for arrays. The NumericRange type and the logic for IndexRange are defined in OPC 10000-4. |
SubstituteValue |
BaseDataType |
The SubstituteValue is the value that is included in the DataSet if the StatusCode of the DataValue is Bad. In this case the StatusCode is set to Uncertain_SubstituteValue. This Value shall match the DataType and ValueRank of the PublishedVariable since DataSetWriters may depend on a valid Value with the right DataType that matches the ConfigurationVersion. If the SubstituteValue is Null, the StatusCode of the DataValue is processed. The handling of the SubstituteValue is defined in 6.2.11. |
MetaDataProperties |
QualifiedName [ ] |
This parameter specifies an array of Properties to be included in the FieldMetaData created for this Variable. It shall be used to populate the properties element of the resulting field in the DataSetMetaData. |
Its representation in the AddressSpace is defined in Table 17.
Table 17 – PublishedVariableDataType definition
Attributes |
Value |
BrowseName |
PublishedVariableDataType |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters PublishedDataSet |
This Structure DataType is used to represent PublishedDataItems specific parameters. It is a subtype of the PublishedDataSetSourceDataType defined in 6.2.3.6.
The PublishedDataItemsDataType is formally defined in Table 18.
Table 18 – PublishedDataItemsDataType structure
Name |
Type |
Description |
PublishedDataItemsDataType |
Structure |
Subtype of PublishedDataSetSourceDataType defined in 6.2.3.6. |
PublishedData |
PublishedVariableDataType[] |
Defined in 6.2.3.7.1. |
Its representation in the AddressSpace is defined in Table 19.
Table 19 – PublishedDataItemsDataType definition
Attributes |
Value |
BrowseName |
PublishedDataItemsDataType |
IsAbstract |
False |
Subtype of PublishedDataSetSourceDataType defined in 6.2.3.6. |
|
Conformance Units |
|
PubSub Parameters PublishedDataSet |
The parameter EventNotifier defines the NodeId of the Object in the event notifier tree of the OPC UA Server from which Events are collected.
The parameter SelectedFields defines 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. The DataType of the selected Event field in the EventType defines the DataType of the DataSet field. Event fields can be null or the field value can be a StatusCode. The encoding of Event based DataSetMessages shall be able to handle these cases. ExtensionFields defined for the instance of the PublishedEventsType can be included in the SelectedFields by specifying the PublishedEventsType NodeId as typeId in the SimpleAttributeOperand and the BrowseName of the extension field in the browsePath of the SimpleAttributeOperand.
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 ConfigurationVersionDataType and the rules for setting the version are defined in 6.2.3.2.6.
The parameter Filter defines the filter applied to the Events. It allows the reduction of the DataSets generated from Events through a filter. The ContentFilter DataType is defined in OPC 10000-4.
This Structure DataType is used to represent PublishedEvents specific parameters. It is a subtype of the PublishedDataSetSourceDataType defined in 6.2.3.6.
The PublishedEventsDataType is formally defined in Table 20.
Table 20 – PublishedEventsDataType structure
Name |
Type |
Description |
PublishedEventsDataType |
Structure |
Subtype of PublishedDataSetSourceDataType defined in 6.2.3.6. |
EventNotifier |
NodeId |
Defined in 6.2.3.8.1. |
SelectedFields |
SimpleAttributeOperand[] |
Defined in 6.2.3.8.2. |
Filter |
ContentFilter |
Defined in 6.2.3.8.3. |
Its representation in the AddressSpace is defined in Table 21.
Table 21 – PublishedEventsDataType definition
Attributes |
Value |
BrowseName |
PublishedEventsDataType |
IsAbstract |
False |
Subtype of PublishedDataSetSourceDataType defined in 6.2.3.6. |
|
Conformance Units |
|
PubSub Parameters PublishedDataSet Events |
The CyclicDataSet with DataType Boolean defines the type of DataSetMessages created by the PublishedDataSet.
If CyclicDataSet is false, event DataSetMessages are sent acyclicly and a related DataSetWriter shall use a KeyFrameCount of 0.
If CyclicDataSet is true, key frame or delta frame DataSetMessages are sent and a related DataSetWriter shall use a KeyFrameCount that is greater than or equal to 1.
This Structure DataType is used to represent custom PublishedDataSet source specific parameters. It is a subtype of the PublishedDataSetSourceDataType defined in 6.2.3.6.
The DataType can be used directly if no further information is exposed for the source. OPC UA Applications shall use DataTypes derived from PublishedDataSetSourceDataType if they want to provide custom information about the source e.g. product specific configuration options.
The PublishedDataSetCustomSourceDataType is formally defined in Table 22.
Table 22 – PublishedDataSetCustomSourceDataType structure
Name |
Type |
Description |
PublishedDataSetCustomSourceDataType |
Structure |
Subtype of PublishedDataSetSourceDataType defined in 6.2.3.6. |
CyclicDataSet |
Boolean |
Defined in 6.2.3.9.1. |
Its representation in the AddressSpace is defined in Table 23.
Table 23 – PublishedDataSetCustomSourceDataType definition
Attributes |
Value |
BrowseName |
PublishedDataSetCustomSourceDataType |
IsAbstract |
False |
Subtype of PublishedDataSetSourceDataType defined in 6.2.3.6. |
|
Conformance Units |
|
PubSub Parameters PublishedDataSet Custom |
The DataSetWriterId with DataType UInt16 defines the unique ID of the DataSetWriter for a PublishedDataSet. It is used to select DataSetMessages for a PublishedDataSet on the Subscriber side.
It shall be unique across all DataSetWriters for a PublisherId.
All values, except for 0, are valid DataSetWriterIds. The value 0 is defined as null value.
The DataSetWriterId shall be within the range 0x0001 - 0x7FFF for external assignment by configuration tools, and 0x8000 - 0xFFFF for internal assignment like through the Method CloseAndUpdate of the PubSubConfigurationType.
A DataSet field consists of a value and related metadata. In most cases the value comes with status and timestamp information.
This DataType defines flags to include DataSet field related information like status and timestamp in addition to the value in the DataSetMessage. The parameter is not relevant for heartbeat messages but should be configured according to the header layout requirements.
The DataSetFieldContentMask is formally defined in Table 24.
The handling of bad status for different field representations is defined in Figure 23 and Table 26.
Table 24 – DataSetFieldContentMask Values
Value |
Bit No. |
Description |
DataSet fields can be represented as RawData, Variant or DataValue as described in 5.3.2. If none of the flags are set, the fields are represented as Variant. If the RawData flag is set, the fields are represented as RawData and all other bits are ignored. If one of the bits 0 to 4 is set, the fields are represented as DataValue. |
||
StatusCode |
0 |
The DataValue structure field StatusCode is included in the DataSetMessages. If this flag is set, the fields are represented as DataValue. |
SourceTimestamp |
1 |
The DataValue structure field SourceTimestamp is included in the DataSetMessages. If this flag is set, the fields are represented as DataValue. |
ServerTimestamp |
2 |
The DataValue structure field ServerTimestamp is included in the DataSetMessages. If this flag is set, the fields are represented as DataValue. |
SourcePicoSeconds |
3 |
The DataValue structure field SourcePicoSeconds is included in the DataSetMessages. If this flag is set, the fields are represented as DataValue. This flag is ignored if the SourceTimestamp flag is not set. |
ServerPicoSeconds |
4 |
The DataValue structure field ServerPicoSeconds is included in the DataSetMessages. If this flag is set, the fields are represented as DataValue. This flag is ignored if the ServerTimestamp flag is not set. |
RawData |
5 |
If this flag is set, the fields of the DataSet are encoded without additional information like timestamp, status or DataType information. The details of the representation are defined for the message mappings. All other field related flags shall be ignored if this flag is set. |
The DataSetFieldContentMask representation in the AddressSpace is defined in Table 25.
Table 25 – DataSetFieldContentMask definition
Attribute |
Value |
||||
BrowseName |
DataSetFieldContentMask |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Others |
Subtype of UInt32 defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
OptionSetValues |
LocalizedText [] |
PropertyType |
|
Conformance Units |
|||||
PubSub Parameters Discovery |
The DataSetFieldContentMask defines different options that influence the information flow from Publisher to Subscriber in the case of a Bad Value Status or other error situations. Figure 23 depicts the parameters and the information flow from DataSet field to DataSetMessage creation on the Publisher side and the decoded DataSet field on the Subscriber side. The DataSetFieldContentMask controls the representation of the DataSet fields in a DataSetMessage.
Figure 23 – PubSub information flow dependency to field representation
The representation of the DataSet fields in a DataSetMessage on the Publisher side and the decoding back to the DataSet fields on the Subscriber side is defined in Table 26. The representation on the Publisher side depends on the field representation defined in the DataSetFieldContentMask.
Table 26 – DataSetMessage field representation options
DataSet Publisher |
Field |
DataSetMessage |
DataSet Subscriber |
||||
Value |
Status(a) |
Value |
Value Status(a) |
Header Status |
Value |
Status(a) |
|
Value 1 |
Good_* |
Variant |
Value 1 |
N/A |
Good |
Value 1 |
Good |
Value 1 |
Uncertain_* |
Value 1 Uncertain_* (b) |
Good |
Value 1 (b) |
Uncertain_* (b) |
||
Null |
Bad_* |
Bad_* (c) |
Good |
Null |
Bad_* (c) |
||
Value 1 |
Good_* |
DataValue |
Value 1 |
Good_* |
Good |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
Value 1 |
Uncertain_* |
Good |
Value 1 |
Uncertain_* |
|
Null |
Bad_* |
Null |
Bad_* |
Good |
Null |
Bad_* |
|
Value 1 |
Good_* |
RawData |
Value 1 |
N/A |
Good |
Value 1 |
Good |
Value 1 |
Uncertain_* |
Value 1(d) |
Uncertain (d) |
Value 1 |
Uncertain |
||
Null |
Bad_* |
Default value for DataType (e) |
Uncertain_ SubNormal (e) |
Default value for DataType |
Uncertain_ SubNormal |
||
All fields Bad_* |
Default value for DataType (e) |
Bad (e) |
Null |
Bad |
|||
The header status is set to a bad code in a fatal error situation. |
Bad_* |
Null |
Bad_* |
||||
(a)If no specific StatusCode is used, the grouping into severity Good, Uncertain or Bad is used. In this case, the resulting Status matches the input Status. (b)If the status is uncertain in variant encoding, the value and the status are encoded as DataValue. (c)A bad status is transferred instead of a value for the variant encoding. (d)If the status for one or more fields is uncertain in raw filed encoding, the header status shall be set to Uncertain. (e)If the worst status for some fields is bad, the header status shall be set to Uncertain_SubNormal. If the status for all fields is bad, the header status shall be set to Bad.The value in message is set to the default value for the DataType. |
The KeyFrameCount with DataType UInt32 is the multiplier of the PublishingInterval that defines the maximum number of times the PublishingInterval expires before a key frame message with values for all published Variables is sent. The delta frame DataSetMessages contains just the changed values. If no changes exist, the delta frame DataSetMessage shall not be sent. If the KeyFrameCount is set to 1, every message contains a key frame.
For PublishedDataSets that provide cyclic updates of the DataSet, the value shall be greater than or equal to 1. PublishedDataItems or custom sources with CyclicDataSet set to true provide cyclic updates.
For non-cyclic PublishedDataSets that provide acyclic event based DataSets, the value shall be 0. PublishedEvents or custom sources with CyclicDataSet set to false provide acyclic updates.
For a heartbeat DataSetMessage, the value shall be 1.
The DataSetWriterProperties parameter is an array of DataType KeyValuePair that specifies additional properties for the configured DataSetWriter. The KeyValuePair DataType is defined in OPC 10000-5 and consists of a QualifiedName and a value of BaseDataType.
The mapping of the name and value to concrete functionality may be defined by transport protocol mappings, future versions of this document or vendor-specific extensions.
This Structure DataType is used to represent the DataSetWriter parameters. The DataSetWriterDataType is formally defined in Table 27.
Table 27 – DataSetWriterDataType structure
Name |
Type |
Description |
Allow Subtypes |
DataSetWriterDataType |
Structure |
|
|
Name |
String |
The name of the DataSetWriter. The name shall be unique across the WriterGroup. It is recommended to use a human readable name. |
|
Enabled |
Boolean |
The enabled state of the DataSetWriter. |
|
DataSetWriterId |
UInt16 |
Defined in 6.2.4.1. |
|
DataSetFieldContentMask |
DataSetFieldContentMask |
Defined in 6.2.4.2. |
|
KeyFrameCount |
UInt32 |
Defined in 6.2.4.3. |
|
DataSetName |
String |
The name of the corresponding PublishedDataSet. If the DataSetWriter is used to create heartbeat DataSetMessages, the dataSetName shall be null or empty. |
|
DataSetWriterProperties |
KeyValuePair[] |
Defined in 6.2.4.4. |
|
TransportSettings |
DataSetWriterTransportDataType |
Transport mapping specific DataSetWriter parameters. The abstract base type is defined in 6.2.4.5.2. The concrete subtypes are defined in the subclauses for transport mapping specific parameters. If no concrete subtype is defined for the transport mapping, the field shall be null. |
True |
MessageSettings |
DataSetWriterMessageDataType |
DataSetMessage mapping specific DataSetWriter parameters. The abstract base type is defined in 6.2.4.5.3. The concrete subtypes are defined in the subclauses for message mapping specific parameters. If no concrete subtype is defined for the message mapping, the field shall be null. |
True |
Its representation in the AddressSpace is defined in Table 28.
Table 28 – DataSetWriterDataType definition
Attributes |
Value |
BrowseName |
DataSetWriterDataType |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery |
This Structure DataType is an abstract base type for transport mapping specific DataSetWriter parameters. The abstract DataType does not define fields.
The DataSetWriterTransportDataType Structure representation in the AddressSpace is defined in Table 29.
Table 29 – DataSetWriterTransportDataType definition
Attributes |
Value |
BrowseName |
DataSetWriterTransportDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery |
This Structure DataType is an abstract base type for message mapping specific DataSetWriter parameters. The abstract DataType does not define fields.
The DataSetWriterMessageDataType Structure representation in the AddressSpace is defined in Table 30.
Table 30 – DataSetWriterMessageDataType definition
Attributes |
Value |
BrowseName |
DataSetWriterMessageDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery |
The parameters are shared between WriterGroup and ReaderGroup.
The parameters are related to PubSub NetworkMessage security. See 5.4.4 for an introduction of PubSub security and Clause 8 for the definition of the PubSub Security Key Service.
The SecurityMode indicates the level of security applied to the NetworkMessages published by a WriterGroup or received by a ReaderGroup. The MessageSecurityMode DataType is defined in OPC 10000-4.
The SecurityGroupId with DataType String is the identifier for a SecurityGroup in the Security Key Server. It is unique within a SKS.
The parameter is null if the SecurityMode is NONE.
If the SecurityMode is not NONE the SecurityGroupId identifies the SecurityGroup. The SecurityGroup defines the SecurityPolicy and the security keys used for the NetworkMessage security. The PubSubGroup defines the SecurityMode for the NetworkMessages sent by the group.
SecurityKeyServices is an array of the DataType EndpointDescription and defines one or more Security Key Servers (SKS) that manage the security keys for the SecurityGroup assigned to the PubSubGroup. The EndpointDescription DataType is defined in OPC 10000-4.
The parameter is null if the SecurityMode is NONE.
Each element in the array is an Endpoint for an SKS that can supply the security keys for the SecurityGroupId. Multiple Endpoints exist because an SKS may have multiple redundant instances. If the SKS supports non-transparent redundancy, each Server in the redundant set shall have one entry in the array.
The use of the EndpointDescription parameters for the SKS selection are defined in Table 31. The main key for the identification of the SKS is the ApplicationUri.
The ApplicationUri is used in the different Server discovery mechanisms to get the OPC UA endpoint information necessary to connect to the SKS.
The combination of SecurityGroupId and SKS ApplicationUri is the unique key for a SecurityGroup in a PubSub application.
Table 31 – SecurityKeyService parameter content
Field |
Type |
Definition for the values |
EndpointUrl |
String |
Shall be null or empty. |
Server |
ApplicationDescription |
The ApplicationDescription DataType is defined in OPC 10000-4. |
ApplicationUri |
String |
The ServerUri of the SKS. |
ProductUri |
String |
Can be null or empty. |
ApplicationName |
LocalizedText |
Can be null or empty. |
ApplicationType |
Enum ApplicationType |
SERVER The security keys are pulled from the SKS using the Method GetSecurityKeys. CLIENT The security keys are pushed from the SKS to the PubSub application using the Method SetSecurityKeys. CLIENTANDSERVER Invalid value. DISCOVERYSERVER Invalid value. If the SKS information is sent as part of a discovery announcement message for a WriterGroup, the ApplicationType shall be set to SERVER even if the Publisher is configured for push. |
GatewayServerUri |
String |
Shall be null or empty. |
DiscoveryProfileUri |
String |
Shall be null or empty. |
DiscoveryUrls [] |
String |
A list of URLs for the DiscoveryEndpoints provided by the SKS. |
ServerCertificate |
ApplicationInstance Certificate |
Shall be null or empty. |
SecurityMode |
MessageSecurityMode |
The value shall be SIGNANDENCRYPT. |
SecurityPolicyUri |
String |
ApplicationType SERVER The URI for SecurityPolicy to use to connect to the SKS. If the URI is null or empty, the pull access shall use the best available security policy that is also supported by the pull Client. ApplicationType CLIENT Shall be null or empty. |
UserIdentityTokens [] |
UserTokenPolicy |
ApplicationType SERVER The user identity tokens that should be used to connect to the SKS. The default is ANONYMOUS if the array is empty. For ANONYMOUS the authorization for accessing the keys is based on the application authentication. If the type is USERNAME, a KeyCredentialConfigurationType instance is used to configure user name and password. The ResourceUri of the KeyCredentialConfigurationType instance shall match the ApplicationUri of the SKS. The KeyCredentialConfigurationType is defined in OPC 10000-12. The UserTokenPolicies are defined in OPC 10000-4. ApplicationType CLIENT The array shall be null or empty. |
TransportProfileUri |
String |
Can be null or empty. |
SecurityLevel |
Byte |
Shall be 0. |
The MaxNetworkMessageSize with DataType UInt32 indicates the maximum size in bytes for NetworkMessages created by the WriterGroup. It refers to the size of the complete NetworkMessage including padding and signature without any additional headers added by the transport protocol mapping. If the size of a NetworkMessage exceeds the MaxNetworkMessageSize, the behaviour depends on the message mapping.
The transport protocol mappings defined in 7.3 may define restrictions for the maximum value of this parameter.
NOTE The value for the MaxNetworkMessageSize should be configured in a way that ensures that NetworkMessages together with additional headers added by the transport protocol are still smaller than or equal than the transport protocol MTU.
The GroupProperties parameter is an array of DataType KeyValuePair that specifies additional properties for the configured group. The KeyValuePair DataType is defined in OPC 10000-5 and consists of a QualifiedName and a value of BaseDataType.
The mapping of the name and value to concrete functionality may be defined by transport protocol mappings, future versions of this document or vendor-specific extensions.
This Structure DataType is an abstract base type for PubSubGroups. The PubSubGroupDataType is formally defined in Table 32.
Table 32 – PubSubGroupDataType structure
Name |
Type |
Description |
PubSubGroupDataType |
Structure |
|
Name |
String |
The name of the PubSubGroup. The name shall be unique across all writer groups and reader groups of a PubSubConnection. It is recommended to use a human readable name. |
Enabled |
Boolean |
The enabled state of the PubSubGroup. |
SecurityMode |
MessageSecurityMode |
Defined in 6.2.5.2. |
SecurityGroupId |
String |
Defined in 6.2.5.3. |
SecurityKeyServices |
EndpointDescription[] |
Defined in 6.2.5.4. |
MaxNetworkMessageSize |
UInt32 |
Defined in 6.2.5.5. |
GroupProperties |
KeyValuePair[] |
Defined in 6.2.5.6. |
The PubSubGroupDataType Structure representation in the AddressSpace is defined in Table 33.
Table 33 – PubSubGroupDataType definition
Attributes |
Value |
BrowseName |
PubSubGroupDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery |
The WriterGroupId with DataType UInt16 is an identifier for the WriterGroup and shall be unique across all WriterGroups for a PublisherId. All values, except for 0, are valid. The value 0 is defined as null value.
The WriterGroupId shall be within the range 0x0001 - 0x7FFF for external assignment by configuration tools, and 0x8000 - 0xFFFF for internal assignment like through the Method CloseAndUpdate of the PubSubConfigurationType.
The PublishingInterval with the DataType Duration defines the interval in milliseconds for publishing NetworkMessages and the embedded DataSetMessages created by the related DataSetWriters.
For cyclic PublishedDataSets one DataSet is produced for one PublishedDataSet in a PublishingInterval. If no new DataSet is available in a PublishingInterval, then either the previous DataSetMessage is resent or no DataSetMessage is sent.
In the case non-cyclic PublishedDataSets like Event based DataSets, this may result in zero to many DataSetMessages produced for one PublishedDataSet in a PublishingInterval. All Events that occur between two PublishingIntervals shall be buffered until the next NetworkMessage is sent. If the number of Events exceeds the buffer capability of the DataSetWriter, an Event of type EventQueueOverflowEventType is inserted as last entry into the buffer and all Events that do not fit into the buffer are discarded.
The Duration DataType is a subtype of Double and allows configuration of intervals smaller than a millisecond.
The KeepAliveTime with DataType Duration defines the time in milliseconds until the Publisher sends a keep alive DataSetMessage in the case where no DataSetMessage was sent in this period by a DataSetWriter. The minimum value shall equal the PublishingInterval.
The Priority with DataType Byte defines the relative priority of the WriterGroup to all other WriterGroups across all PubSubConnections of the Publisher.
If more than one WriterGroup needs to be processed, the priority number defines the order of processing. The highest priority is processed first.
The lowest priority is zero and the highest is 255.
The LocaleIds, with DataType LocaleId, defines a list of locale ids in priority order for localized strings for all DataSetWriters in the WriterGroup. The first LocaleId in the list has the highest priority.
If the Publisher sends a localized String, the Publisher shall send the translation with the highest priority that it can. If it does not have a translation for any of the locales identified in this list, then it shall send the String value that it has and include the LocaleId with the String. If no locale id is configured, the Publisher shall use any that it has. See OPC 10000-3 for more detail on LocaleId.
The HeaderLayoutUri, with DataType String, defines the selection of a well defined configuration for a subset of the PubSub communication parameters. The affected subset is defined by the header layout.
A null or empty String is defined as no layout selected.
If a layout is selected, all affected parameters shall be set to the values defined for the layout.
Available layouts and the corresponding URI Strings are defined in Annex A.
This Structure DataType is used to represent the configuration parameters for WriterGroups. It is a subtype of PubSubGroupDataType defined in 6.2.5.7.
The WriterGroupDataType is formally defined in Table 34.
Table 34 – WriterGroupDataType structure
Name |
Type |
Description |
Allow Subtypes |
WriterGroupDataType |
Structure |
Subtype of PubSubGroupDataType defined in 6.2.5.7. |
|
WriterGroupId |
UInt16 |
Defined in 6.2.6.1. |
|
PublishingInterval |
Duration |
Defined in 6.2.6.2. |
|
KeepAliveTime |
Duration |
Defined in 6.2.6.3. |
|
Priority |
Byte |
Defined in 6.2.6.4. |
|
LocaleIds |
LocaleId[] |
Defined in 6.2.6.5. |
|
HeaderLayoutUri |
String |
Defined in 6.2.6.6. |
|
TransportSettings |
WriterGroupTransportDataType |
Transport mapping specific WriterGroup parameters. The abstract base type is defined in 6.2.6.7.2. The concrete subtypes are defined in the subclauses for transport mapping specific parameters. If no concrete subtype is defined for the transport mapping, the field shall be null. |
True |
MessageSettings |
WriterGroupMessageDataType |
NetworkMessage mapping specific WriterGroup parameters. The abstract base type is defined in 6.2.6.7.3. The concrete subtypes are defined in the subclauses for message mapping specific parameters. If no concrete subtype is defined for the message mapping, the field shall be null. |
True |
DataSetWriters |
DataSetWriterDataType[] |
The DataSetWriters contained in the WriterGroup. The DataSetWriter parameters are defined in 6.2.4. |
|
The WriterGroupDataType Structure representation in the AddressSpace is defined in Table 35.
Table 35 – WriterGroupDataType definition
Attributes |
Value |
||
BrowseName |
WriterGroupDataType |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of PubSubGroupDataType defined in 6.2.5.7. |
|||
Conformance Units |
|||
PubSub Parameters Discovery |
This Structure DataType is an abstract base type for transport mapping specific WriterGroup parameters. The abstract DataType does not define fields.
The WriterGroupTransportDataType Structure representation in the AddressSpace is defined in Table 36.
Table 36 – WriterGroupTransportDataType definition
Attributes |
Value |
BrowseName |
WriterGroupTransportDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery |
This Structure DataType is an abstract base type for message mapping specific WriterGroup parameters. The abstract DataType does not define fields.
The WriterGroupMessageDataType Structure representation in the AddressSpace is defined in Table 37.
Table 37 – WriterGroupMessageDataType definition
Attributes |
Value |
BrowseName |
WriterGroupMessageDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery |
The PublisherId is a unique identifier for a Publisher within a Message Oriented Middleware. It can be included in sent NetworkMessage for identification or filtering. The value of the PublisherId is typically shared between PubSubConnections but the assignment of the PublisherId is vendor specific.
The PublisherId parameter is only relevant for the Publisher functionality inside a PubSubConnection. The filter setting on the Subscriber side is contained in the DataSetReader parameters.
Valid DataTypes are UInteger and String. A zero UInteger and a Null or empty String are invalid PublisherIds.
The default PublisherId for datagram transport protocols has a DataType of UInt64. If the default PublisherId is created by the OPC UA Application, it is recommended to set the first 6 bytes with the MAC address of one of the network interfaces and to set the two remaining bytes to the OPC UA Server port of the OPC UA Application.
The default PublisherId for broker based transports equals the PublisherId for datagram transport protocols but the DataType is UInt64 for UADP message mapping and String for JSON message mapping. For the String, the UInt64 value is converted to a String. The PublisherId may be used in message headers, as part of a QueueName or as a client identifier for the broker connection. In these cases the size of the PublisherId and the characters used in the PublisherId may have limitations or impact to the communication performance.
The default PublisherId is used if it is not assigned by a configuration tool.
The TransportProfileUri parameter with DataType String indicates the transport protocol mapping and the message mapping used.
The possible TransportProfileUri values are defined as URI of the transport protocols defined as PubSub transport Facet in OPC 10000-7.
The Address parameter contains the network address information for the communication middleware. The different Structure DataTypes used to represent the Address are defined in 6.2.7.5.3.
The ConnectionProperties parameter is an array of DataType KeyValuePair that specifies additional properties for the configured connection. The KeyValuePair type is defined in OPC 10000-5 and consists of a QualifiedName and a value of BaseDataType.
The mapping of the namespace, name, and value to concrete functionality may be defined by transport protocol mappings or vendor-specific extensions.
The NamespaceIndex of the QualifiedName in the KeyValuePair for properties defined in this document shall be 0. The Name of the QualifiedName is the property name from Table 38. The DataType of the Value in the KeyValuePair shall be the DataType defined in Table 38.
Table 38 formally defines the ConnectionProperties.
Table 38 – ConnectionProperties
Key |
DataType |
Description |
0:SksPullRetryInterval |
Duration |
The interval the PubSub application shall use to retry pulling keys after an error appeared. The PubSub application shall have a default value for the retry interval in the case this value is not configured. |
This Structure DataType is used to represent the configuration parameters for PubSubConnections. The PubSubConnectionDataType is formally defined in Table 39.
Table 39 – PubSubConnectionDataType structure
Name |
Type |
Description |
Allow Subtypes |
PubSubConnectionDataType |
Structure |
|
|
Name |
String |
The name of the PubSubConnection. The name shall be unique across a PubSubConfiguration. It is recommended to use a human readable name. |
|
Enabled |
Boolean |
The enabled state of the PubSubConnection. |
|
PublisherId |
BaseDataType |
Defined in 6.2.7.1. |
|
TransportProfileUri |
String |
Defined in 6.2.7.2. |
|
Address |
NetworkAddressDataType |
Defined in 6.2.7.3. The NetworkAddressDataType is defined in 6.2.7.5.3. |
True |
ConnectionProperties |
KeyValuePair[] |
Defined in 6.2.7.4. |
|
TransportSettings |
ConnectionTransportDataType |
Transport mapping specific PubSubConnection parameters. The abstract base type is defined in 6.2.7.5.2. The concrete subtypes are defined in the subclauses for transport mapping specific parameters. If no concrete subtype is defined for the transport mapping, the field shall be null. |
True |
WriterGroups |
WriterGroupDataType[] |
The WriterGroups contained in the PubSubConnection. The WriterGroup is defined in 6.2.6. |
|
ReaderGroups |
ReaderGroupDataType[] |
The ReaderGroups contained in the PubSubConnection. The ReaderGroup is defined in 6.2.8. |
|
Its representation in the AddressSpace is defined in Table 40.
Table 40 – PubSubConnectionDataType definition
Attributes |
Value |
BrowseName |
PubSubConnectionDataType |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery Extended |
This Structure DataType is an abstract base type for transport mapping specific PubSubConnection parameters. The abstract DataType does not define fields.
The ConnectionTransportDataType Structure representation in the AddressSpace is defined in Table 41.
Table 41 – ConnectionTransportDataType definition
Attributes |
Value |
BrowseName |
ConnectionTransportDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery Extended |
Subtypes of this abstract Structure DataType are used to represent network address information. The NetworkAddressDataType is formally defined in Table 42.
Table 42 – NetworkAddressDataType structure
Name |
Type |
Description |
NetworkAddressDataType |
Structure |
|
NetworkInterface |
String |
The name of the network interface used for the communication relation. The default value is an empty String. In this case the network interface used is determined by the address provided by the subtypes of this Structure. The name can be an IP address, MAC address or the system specific name of the interface. |
The NetworkAddressDataType Structure representation in the AddressSpace is defined in Table 43.
Table 43 – NetworkAddressDataType definition
Attributes |
Value |
BrowseName |
NetworkAddressDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery Extended |
This Structure DataType is used to represent network address information in the form of an URL String. The NetworkAddressUrlDataType is formally defined in Table 44.
Table 44 – NetworkAddressUrlDataType structure
Name |
Type |
Description |
NetworkAddressUrlDataType |
Structure |
Subtype of NetworkAddressDataType defined in 6.2.7.5.3. |
Url |
String |
The address string for the communication relation in the form on an URL String. |
The NetworkAddressUrlDataType Structure representation in the AddressSpace is defined in Table 45.
Table 45 – NetworkAddressUrlDataType definition
Attributes |
Value |
||
BrowseName |
NetworkAddressUrlDataType |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of NetworkAddressDataType defined in 6.2.7.5.3. |
|||
Conformance Units |
|||
PubSub Parameters Discovery Extended |
The ReaderGroup does not add parameters to the shared PubSubGroup parameters.
The ReaderGroup is used to group a list of DataSetReaders. It is not symmetric to a WriterGroup and it is not related to a particular NetworkMessage. The NetworkMessage related filter settings are on the DataSetReaders.
This Structure DataType is used to represent the configuration parameters for ReaderGroups. The ReaderGroupDataType is formally defined in Table 46.
Table 46 – ReaderGroupDataType structure
Name |
Type |
Description |
Allow Subtypes |
ReaderGroupDataType |
Structure |
Subtype of PubSubGroupDataType defined in 6.2.5.7. |
|
TransportSettings |
ReaderGroupTransportDataType |
Transport mapping specific ReaderGroup parameters. The abstract base type is defined in 6.2.8.2.2. The concrete subtypes are defined in the subclauses for transport mapping specific parameters. If no concrete subtype is defined for the transport mapping, the field shall be null. |
True |
MessageSettings |
ReaderGroupMessageDataType |
NetworkMessage mapping specific ReaderGroup parameters. The abstract base type is defined in 6.2.8.2.3. The concrete subtypes are defined in the subclauses for message mapping specific parameters. If no concrete subtype is defined for the message mapping, the field shall be null. |
True |
DataSetReaders |
DataSetReaderDataType[] |
The DataSetReaders contained in the ReaderGroup. The DataSetReader is defined in 6.2.9. |
|
The ReaderGroupDataType Structure representation in the AddressSpace is defined in Table 47.
Table 47 – ReaderGroupDataType definition
Attributes |
Value |
||
BrowseName |
ReaderGroupDataType |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of PubSubGroupDataType defined in 6.2.5.7. |
|||
Conformance Units |
|||
PubSub Parameters Discovery Extended |
This Structure DataType is an abstract base type for transport mapping specific ReaderGroup parameters. The abstract DataType does not define fields.
The ReaderGroupTransportDataType Structure representation in the AddressSpace is defined in Table 48.
Table 48 – ReaderGroupTransportDataType definition
Attributes |
Value |
||
BrowseName |
ReaderGroupTransportDataType |
||
IsAbstract |
True |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of Structure defined in OPC 10000-5. |
|||
Conformance Units |
|||
PubSub Parameters Discovery Extended |
This Structure DataType is an abstract base type for message mapping specific ReaderGroup parameters. The abstract DataType does not define fields.
The ReaderGroupMessageDataType Structure representation in the AddressSpace is defined in Table 49.
Table 49 – ReaderGroupMessageDataType definition
Attributes |
Value |
||
BrowseName |
ReaderGroupMessageDataType |
||
IsAbstract |
True |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of Structure defined in OPC 10000-5. |
|||
Conformance Units |
|||
PubSub Parameters Discovery Extended |
The parameter PublisherId defines the Publisher to receive NetworkMessages from.
If the value is null, the parameter shall be ignored and all received NetworkMessages pass the PublisherId filter.
Valid DataTypes are UInteger and String.
The parameter WriterGroupId with DataType UInt16 defines the identifier of the corresponding WriterGroup.
The default value 0 is defined as null value, and means this parameter shall be ignored.
The parameter DataSetWriterId with DataType UInt16 defines the DataSet selected in the Publisher for the DataSetReader.
If the value is 0 (null), the parameter shall be ignored and all received DataSetMessages pass the DataSetWriterId filter.
The parameter DataSetMetaData provides the information necessary to decode DataSetMessages from the Publisher. If the DataSetMetaData changes in the Publisher and the MajorVersion was changed, the DataSetReader needs an update of the DataSetMetaData for further operation. If the update cannot be retrieved in the duration of the MessageReceiveTimeout, the State of the DataSetReader shall change to Error. The related PublishedDataSet is defined in 0. The DataSetMetaDataType is defined in 6.2.3.2.3. The options for retrieving the update of the DataSetMetaData are described in 5.2.3.
If the DataSetMetaData contains an empty fields array, the DataSetReader is configured to receive heartbeat DataSetMessages. For heartbeat DataSetMessages the majorVersion and minorVersion in the configurationVersion shall always be 0 in the configuration and in the DataSetMessages.
The parameter DataSetFieldContentMask with DataType DataSetFieldContentMask indicates the fields of a DataValue included in the DataSetMessages. The parameter shall be ignored for heartbeat messages.
The DataSetFieldContentMask DataType is defined in 6.2.4.2.
The parameter MessageReceiveTimeout is the maximum acceptable time between two DataSetMessages. The time starts when the state of the DataSetReader changes to Operational. If there is no new DataSetMessage received within this period, the DataSetReader State shall be changed to Error until the next DataSetMessage is received. The DataSetMessages that reset the period include keep-alive and heartbeat messages. A DataSetMessage is considered new if the sequence number increments or if a new keep-alive message is received. If no sequence number is contained in the DataSetMessage, each received DataSetMessage is considered new.
The MessageReceiveTimeout is related to the Publisher side parameters PublishingInterval, KeepAliveTime and KeyFrameCount.
The KeyFrameCount with DataType UInt32 is the multiplier of the PublishingInterval that defines the maximum number of times the PublishingInterval expires before a key frame message, with all field values, is received.
For DataSets that provide cyclic updates, the value shall be greater than or equal to 1. For non-cyclic DataSets, like PublishedEvents, that provide event based DataSets, the value shall be 0.
The HeaderLayoutUri, with DataType String, defines the selection of a well defined configuration for a subset of the PubSub communication parameters. The affected subset is defined by the header layout.
A null or empty String is defined as no layout selected.
If a layout is selected, all affected parameters shall be set to the values defined for the layout.
Available layouts and the corresponding URI Strings are defined in Annex A.
The parameter is defined in 6.2.5.2.
This parameter overwrites the corresponding setting on the ReaderGroup if the value is not INVALID.
The parameter is defined in 6.2.5.3.
The parameter shall be null if the SecurityMode is INVALID.
The parameter is defined in 6.2.5.4.
The parameter shall be null if the SecurityMode is INVALID.
The parameter is only used to overwrite the SecurityKeyServices parameter of the ReaderGroup if the SKS is different for the DataSetReader.
The DataSetReaderProperties parameter is an array of DataType KeyValuePair that specifies additional properties for the configured DataSetReader. The KeyValuePair DataType is defined in OPC 10000-5 and consists of a QualifiedName and a value of BaseDataType.
The mapping of the name and value to concrete functionality may be defined by transport protocol mappings, future versions of this document or vendor-specific extensions.
This Structure DataType is used to represent the DataSetReader parameters. The DataSetReaderDataType is formally defined in Table 50.
Table 50 – DataSetReaderDataType structure
Name |
Type |
Description |
Allow Subtypes |
DataSetReaderDataType |
Structure |
|
|
Name |
String |
The name of the DataSetReader. The name shall be unique across a ReaderGroup. It is recommended to use a human readable name. |
|
Enabled |
Boolean |
The enabled state of the DataSetReader. |
|
PublisherId |
BaseDataType |
Defined in 6.2.9.1. |
|
WriterGroupId |
UInt16 |
Defined in 6.2.9.2. |
|
DataSetWriterId |
UInt16 |
Defined in 6.2.9.3. |
|
DataSetMetaData |
DataSetMetaDataType |
Defined in 6.2.9.4. If the DataSetReaderDataType is provided as part of a create or update operation and the subscribedDataSet contains a StandaloneSubscribedDataSetRefDataType, this field shall be null and shall be replaced with the DataSetMetaDataType contained in the referenced StandaloneSubscribedDataSetDataType. |
|
DataSetFieldContentMask |
DataSetFieldContentMask |
Defined in 6.2.9.5. |
|
MessageReceiveTimeout |
Duration |
Defined in 6.2.9.6. |
|
KeyFrameCount |
UInt32 |
Defined in 6.2.9.7. |
|
HeaderLayoutUri |
String |
Defined in 6.2.9.8. |
|
SecurityMode |
MessageSecurityMode |
Defined in 6.2.9.9. |
|
SecurityGroupId |
String |
Defined in 6.2.9.10. |
|
SecurityKeyServices |
EndpointDescription[] |
Defined in 6.2.9.11. |
|
DataSetReaderProperties |
KeyValuePair[] |
Defined in 6.2.9.12. |
|
TransportSettings |
DataSetReaderTransportDataType |
Transport-specific DataSetReader parameters. The abstract base type is defined in 6.2.9.13.2. The concrete subtypes are defined in the subclauses for transport mapping specific parameters. If no concrete subtype is defined for the transport mapping, the field shall be null. |
True |
MessageSettings |
DataSetReaderMessageDataType |
DataSetMessage mapping specific DataSetReader parameters. The abstract base type is defined in 6.2.9.13.3. The concrete subtypes are defined in the subclauses for message mapping specific parameters. If no concrete subtype is defined for the message mapping, the field shall be null. |
True |
SubscribedDataSet |
SubscribedDataSetDataType |
The SubscribedDataSet specific parameters. The abstract base type and the concrete subtypes are defined in 6.2.10. If the DataSetReader is configured to receive heartbeat DataSetMessages, the field shall be null. The StandaloneSubscribedDataSetDataType subtype shall not be used in this structure field. |
True |
Its representation in the AddressSpace is defined in Table 51.
Table 51 – DataSetReaderDataType definition
Attributes |
Value |
BrowseName |
DataSetReaderDataType |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery Extended |
This Structure DataType is an abstract base type for transport-specific DataSetReader parameters. The DataSetReaderTransportDataType is formally defined in Table 52.
Table 52 – DataSetReaderTransportDataType structure
Name |
Type |
Description |
DataSetReaderTransportDataType |
Structure |
|
The DataSetReaderTransportDataType Structure representation in the AddressSpace is defined in Table 53.
Table 53 – DataSetReaderTransportDataType definition
Attributes |
Value |
BrowseName |
DataSetReaderTransportDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery Extended |
This Structure DataType is an abstract base type for message mapping specific DataSetReader parameters. The DataSetReaderMessageDataType is formally defined in Table 54.
Table 54 – DataSetReaderMessageDataType structure
Name |
Type |
Description |
DataSetReaderMessageDataType |
Structure |
|
The DataSetReaderMessageDataType Structure representation in the AddressSpace is defined in Table 55.
Table 55 – DataSetReaderMessageDataType definition
Attributes |
Value |
BrowseName |
DataSetReaderMessageDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Discovery Extended |
This Structure DataType is an abstract base type for SubscribedDataSet parameters. A SubscribedDataSet defines the metadata for the subscribed DataSet and the information for the processing of DataSetMessages. See 5.4.2.2 for an introduction to the processing options for received DataSetMessages.
The SubscribedDataSetDataType is formally defined in Table 56.
Table 56 – SubscribedDataSetDataType structure
Name |
Type |
Description |
SubscribedDataSetDataType |
Structure |
|
The SubscribedDataSetDataType Structure representation in the AddressSpace is defined in Table 57.
Table 57 – SubscribedDataSetDataType definition
Attributes |
Value |
|
BrowseName |
SubscribedDataSetDataType |
|
IsAbstract |
True |
|
Subtype of Structure defined in OPC 10000-5. |
||
Conformance Units |
||
PubSub Parameters Discovery Extended |
The SubscribedDataSet option TargetVariables defines a list of Variable mappings between received DataSet fields and target Variables in the Subscriber AddressSpace. The FieldTargetDataType is defined in 6.2.10.2.3. Target Variables shall only be used once within the same TargetVariables list.
This Structure DataType is used to represent TargetVariables specific parameters. It is a subtype of the SubscribedDataSetDataType defined in 6.2.10.1.
The TargetVariablesDataType is formally defined in Table 58.
Table 58 – TargetVariablesDataType structure
Name |
Type |
Description |
TargetVariablesDataType |
Structure |
|
TargetVariables |
FieldTargetDataType[] |
Defined in 6.2.10.2.3. |
Its representation in the AddressSpace is defined in Table 59.
Table 59 – TargetVariablesDataType definition
Attributes |
Value |
BrowseName |
TargetVariablesDataType |
IsAbstract |
False |
Subtype of SubscribedDataSetDataType defined in 6.2.10.1. |
|
Conformance Units |
|
PubSub Parameters SubscribedDataSet |
This DataType is used to provide the metadata for the relation between a field in a DataSetMessage and a target Variable in a DataSetReader. The FieldTargetDataType is formally defined in Table 60.
Table 60 – FieldTargetDataType structure
Name |
Type |
Description |
FieldTargetDataType |
Structure |
|
DataSetFieldId |
Guid |
The unique ID of the field in the DataSet. The fields and their unique IDs are defined in the DataSetMetaData Structure. |
ReceiverIndexRange |
NumericRange |
Index range used to extract parts of an array out of the received data. It is used to identify a single element of an array, or a single range of indexes for arrays for the received DataSet field. If a range of elements is specified, the values are returned as a composite. The first element is identified by index 0 (zero). The NumericRange type is defined in OPC 10000-4. This parameter is null if the specified Attribute is not an array. However, if the specified Attribute is an array, and this parameter is null, then the complete array is used. The resulting data array size of this NumericRange shall match the resulting data array size of the writeIndexRange NumericRange setting. If the resulting array size is one and the target node ValueRank is scalar, the value shall be applied as scalar value. |
TargetNodeId |
NodeId |
The NodeId of the Variable to which the received DataSetMessage field value is written. |
AttributeId |
IntegerId |
Id of the Attribute to write e.g. the Value Attribute. This shall be a valid AttributeId. The Attributes are defined in OPC 10000-3. The IntegerId DataType is defined in OPC 10000-4. The IntegerIds for the Attributes are defined in OPC 10000-6. |
WriteIndexRange |
NumericRange |
The index range used for writing received data to the target node. It is used to identify a single element of an array, or a single range of indexes for arrays for the write operation to the target Node. If a range of elements is specified, the values are written as a composite. The first element is identified by index 0 (zero). The NumericRange type is defined in OPC 10000-4. This parameter is null if the specified Attribute is not an array. However, if the specified Attribute is an array, and this parameter is null, then the complete array is used. |
OverrideValueHandling |
OverrideValueHandling |
The value is used to define the override value handling behaviour if the State of the DataSetReader is not Operational or if the corresponding field in the DataSet contains a Bad StatusCode. The handling of the OverrideValue in different scenarios is defined in 6.2.11. The OverrideValueHandling enumeration DataType is defined in 6.2.10.2.4. |
OverrideValue |
BaseDataType |
This value is used if the OverrideValueHandling is set to OverrideValue and the State of the DataSetReader is not Operational or if the corresponding field in the DataSet contains a Bad StatusCode. The handling of the OverrideValue in different scenarios is defined in 6.2.11. This Value shall match the DataType of the target Node. If a writeIndexRange is configured, the Value shall match the resulting size of the writeIndexRange. For example if the writeIndexRange is “5:7”, the overrideValue must be an array with length 3. |
Its representation in the AddressSpace is defined in Table 61.
Table 61 – FieldTargetDataType definition
Attributes |
Value |
BrowseName |
FieldTargetDataType |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters SubscribedDataSet |
The OverrideValueHandling is an enumeration that specifies the possible options for the handling of Override values. The possible enumeration values are described in Table 62.
Table 62 – OverrideValueHandling values
Name |
Value |
Description |
Disabled |
0 |
The override value handling is disabled. |
LastUsableValue |
1 |
In the case of an error, the last usable value is used. If no last usable value is available, the default value for the data type is used. |
OverrideValue |
2 |
In the case of an error, the configured override value is used. |
The OverrideValueHandling representation in the AddressSpace is defined in Table 63.
Table 63 – OverrideValueHandling definition
Attribute |
Value |
||||
BrowseName |
OverrideValueHandling |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Others |
Subtype of Enumeration defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
EnumStrings |
LocalizedText [] |
PropertyType |
|
Conformance Units |
|||||
PubSub Parameters SubscribedDataSet |
The SubscribedDataSet option SubscribedDataSetMirror defines an Object in the Subscriber AddressSpace with a mirror Variable for each DataSet field in the received DataSetMessages.
This parameter with DataType String defines the BrowseName and DisplayName of the parent Node for the Variables representing the fields of the subscribed DataSet.
This parameter with DataType RolePermissionType defines the 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.
This Structure DataType is used to represent SubscribedDataSetMirror specific parameters. It is a subtype of the SubscribedDataSetDataType defined in 6.2.10.1.
The SubscribedDataSetMirrorDataType is formally defined in Table 64.
Table 64 – SubscribedDataSetMirrorDataType structure
Name |
Type |
Description |
SubscribedDataSetMirrorDataType |
Structure |
|
ParentNodeName |
String |
Defined in 6.2.10.3.1. |
RolePermissions |
RolePermissionType[] |
Defined in 6.2.10.3.3. |
Its representation in the AddressSpace is defined in Table 65.
Table 65 – SubscribedDataSetMirrorDataType definition
Attributes |
Value |
BrowseName |
SubscribedDataSetMirrorDataType |
IsAbstract |
False |
Subtype of SubscribedDataSetDataType defined in in 6.2.10.1. |
|
Conformance Units |
|
PubSub Parameters SubscribedDataSet Mirror |
This Structure DataType references a standalone subscribed DataSet. It is a subtype of the SubscribedDataSetDataType defined in 6.2.10.1.
The StandaloneSubscribedDataSetRefDataType is formally defined in Table 66.
Table 66 – StandaloneSubscribedDataSetRefDataType structure
Name |
Type |
Description |
StandaloneSubscribedDataSetRefDataType |
Structure |
|
DataSetName |
String |
The name of the corresponding standalone subscribed DataSet. |
Its representation in the AddressSpace is defined in Table 67.
Table 67 – StandaloneSubscribedDataSetRefDataType definition
Attributes |
Value |
BrowseName |
StandaloneSubscribedDataSetRefDataType |
IsAbstract |
False |
Subtype of SubscribedDataSetDataType defined in 6.2.10.1. |
|
Conformance Units |
|
PubSub Parameters SubscribedDataSet Standalone |
This Structure DataType is define a standalone subscribed DataSet. It is a subtype of the SubscribedDataSetDataType defined in 6.2.10.1.
The StandaloneSubscribedDataSetDataType is formally defined in Table 68.
Table 68 – StandaloneSubscribedDataSetDataType structure
Name |
Type |
Description |
Allow Subtypes |
StandaloneSubscribedDataSetDataType |
Structure |
|
|
Name |
String |
Name of the standalone SubscribedDataSet. It is recommended to use a human readable name. The name of the standalone SubscribedDataSet shall be unique in the Subscriber. |
|
DataSetFolder |
String[] |
Optional path of the SubscribedDataSet folder used to group SubscribedDataSets where each entry in the String array represents one level in a folder hierarchy. If no grouping is needed the parameter is a null or empty String array. |
|
DataSetMetaData |
DataSetMetaDataType |
Defined in 6.2.9.4. A Publisher must be configured to send DataSetMessages that comply with the DataSetMetaData in the standalone subscribed DataSet. |
|
SubscribedDataSet |
SubscribedDataSetDataType |
The SubscribedDataSet specific parameters. The abstract base type and the concrete subtypes are defined in 6.2.10. The StandaloneSubscribedDataSetDataType and the StandaloneSubscribedDataSetRefDataType subtypes shall not be used in this structure field. |
True |
Its representation in the AddressSpace is defined in Table 69.
Table 69 – StandaloneSubscribedDataSetDataType definition
Attributes |
Value |
BrowseName |
StandaloneSubscribedDataSetDataType |
IsAbstract |
False |
Subtype of SubscribedDataSetDataType defined in 6.2.10.1. |
|
Conformance Units |
|
PubSub Parameters SubscribedDataSet Standalone |
The configuration model defines different parameters that influence the information flow from Publisher to Subscriber in the case of a Bad Value Status or other error situations. Figure 24 depicts the parameters and the information flow inside a Publisher and inside a Subscriber.
The parameters and behaviour relevant for the encoding of a DataSetMessage on the Publisher side and the decoding of the DataSetMessage on the Subscriber side are defined in 6.2.4.2 together with the DataSetFieldContentMask.
Figure 24 – PubSub information flow
The mapping of source value and status to the DataSet in the Publisher depends on the substitute value. The dependencies are defined in Table 70.
Table 70 – Source to message input mapping
Source |
Substitute Value |
DataSet Publisher side |
||
Value(b) |
Status (a) |
Value |
Status (a) |
|
Value 1 |
Good_* |
Value 2
|
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
Value 1 |
Uncertain_* |
|
Ignored |
Bad_* |
Value 2 |
Uncertain_SubstituteValue |
|
Value 1 |
Good_* |
Null |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
Value 1 |
Uncertain_* |
|
Ignored |
Bad_* |
Null |
Bad_* |
|
(a)If no specific StatusCode is used, the grouping into severity Good, Uncertain or Bad is used. In this case, the resulting Status matches the input Status. (b)Any error that happens during processing of source value e.g. DataType does not match DataSetField should be treated like a Bad StatusCode received from the source. |
The mapping of the decoded DataSet on the Subscriber side to the value and status of the target Variable depends on the override value. The dependencies are defined in Table 71.
Table 71 – Message output to target mapping
Decoded DataSet Subscriber |
Override Value Handling Enum |
Override Value |
Reader State |
Target |
||
Value |
Status (a) |
Value |
Status (a) |
|||
Value 1 |
Good_* |
OverrideValue
|
Value 2 |
Operational |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
Value 1 |
Uncertain_* |
|||
Ignored |
Bad_* |
Value 2 |
Good_LocalOverride |
|||
Value 1 |
Good_* |
LastUsableValue |
Ignored |
Value 1 |
Good_* |
|
Value 1 |
Uncertain_* |
Value 1 |
Uncertain_* |
|||
Ignored |
Bad_* |
LastValue (b) |
Uncertain_LastUsableValue |
|||
Value 1 |
Good_* |
Disabled |
Ignored |
Value 1 |
Good_* |
|
Value 1 |
Uncertain_* |
Value 1 |
Uncertain_* |
|||
Ignored |
Bad_* |
Null |
Bad_* |
|||
No message received. The target values are updated once after a reader state change. |
OverrideValue |
Value 2 |
Disabled Paused |
Value 2 |
Good_LocalOverride |
LastUsableValue |
Ignored |
LastValue (b) |
Uncertain_LastUsableValue |
Disabled |
Ignored |
Null |
Bad_OutOfService |
OverrideValue |
Value 2 |
Error |
Value 2 |
Good_LocalOverride |
LastUsableValue |
Ignored |
LastValue (b) |
Uncertain_LastUsableValue |
Disabled |
Ignored |
Null |
Bad_NoCommunication |
(a)If no specific StatusCode is used, the grouping into severity Good, Uncertain or Bad is used. In this case, the resulting Status matches the input Status. (b)The last value is either the last received value or the default value for the data type if there was never a value received before. |
If one of the target Variables in the SubscribedDataSet does not allow writing of the StatusCode and the OverrideValueHandling is set to Disabled, the DataSetReader shall indicate the configuration error by setting the DataSetReader state to Error. In all other configurations of OverrideValueHandling when the target Variable does not allow writing of the StatusCode, only the Value is transferred to the target Variable.
If a target Variable in the SubscribedDataSet does not allow writing of timestamp, any received timestamp shall not be used and only the received value shall be written to the target Variable.
This Structure DataType is used to represent the PubSub configuration of an OPC UA Application. The PubSubConfigurationDataType is formally defined in Table 72.
Table 72 – PubSubConfigurationDataType structure
Name |
Type |
Description |
PubSubConfigurationDataType |
Structure |
|
PublishedDataSets |
PublishedDataSetDataType[] |
The PublishedDataSets contained in the configuration. The PublishedDataSetDataType is defined in 6.2.3.5. |
Connections |
PubSubConnectionDataType[] |
The PubSubConnections contained in the configuration. The PubSubConnectionDataType is defined in 6.2.7. The connection includes WriterGroups and ReaderGroups. |
Enabled |
Boolean |
The enabled state of the PubSub configuration. This Enable state corresponds to the PubSub Status of the PublishSubscribe Object. |
Its representation in the AddressSpace is defined in Table 73.
Table 73 – PubSubConfigurationDataType definition
Attributes |
Value |
BrowseName |
PubSubConfigurationDataType |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Configuration |
If the PubSub configuration is stored in a file, the UABinaryFileDataType and the related definitions in OPC 10000-5 shall be used to encode the file content. The structure of the UABinaryFileDataType file with typical values for a PubSub configuration is described in Table 74.
Table 74 – PubSubConfiguration file content
Field |
Type |
Typical Values |
Namespaces |
String[] |
Namespace URIs for namespace indices used in the body. Examples are NodeIds contained in PublishedDataSets. The OPC UA namespace is skipped. The DataTypes used for configuration are defined in the OPC UA namespace. |
structureDataTypes |
StructureDescription[] |
Null or empty DataTypes used for configuration are defined by OPC UA. The DataTypes used in DataSetMetaData are described in the DataTypeSchemaHeader of the associated DataSetMetaData. This field is only used if KeyValuePairs for configuration properties contain Structure DataTypes not defined by OPC UA. |
enumDataTypes |
EnumDescription[] |
Null or empty DataTypes used for configuration are defined by OPC UA. The DataTypes used in DataSetMetaData are described in the DataTypeSchemaHeader of the associated DataSetMetaData. This field is only used if KeyValuePairs for configuration properties contain Structure DataTypes not defined by OPC UA. |
simpleDataTypes |
SimpleTypeDescription[] |
Null or empty DataTypes used for configuration are defined by OPC UA. The DataTypes used in DataSetMetaData are described in the DataTypeSchemaHeader of the associated DataSetMetaData. This field is only used if KeyValuePairs for configuration properties contain Structure DataTypes not defined by OPC UA. |
schemaLocation |
String |
Null or empty |
fileHeader |
KeyValuePair[] |
Null or empty |
Body |
BaseDataType |
PubSubConfigurationDataType Structure The PubSub configuration represented by the PubSubConfigurationDataType. |
This Structure DataType is used to represent the configuration of a SecurityGroup in a PubSub configuration of an OPC UA Application. The SecurityGroupDataType is formally defined in Table 75.
Table 75 – SecurityGroupDataType structure
Name |
Type |
Description |
SecurityGroupDataType |
Structure |
|
Name |
String |
Name of the SecurityGroup. |
SecurityGroupFolder |
String[] |
Optional path of the SecurityGroupFolders used to group SecurityGroups where each entry in the String array represents one level in a folder hierarchy. If no grouping is needed the parameter is a null or empty String array. |
KeyLifetime |
Duration |
The lifetime of a key in milliseconds. |
SecurityPolicyUri |
String |
The SecurityPolicy used for the SecurityGroup. |
MaxFutureKeyCount |
UInt32 |
The maximum number of future keys returned by the Method GetSecurityKeys. |
MaxPastKeyCount |
UInt32 |
The maximum number of historical keys stored by the SKS. |
SecurityGroupId |
String |
The identifier for the SecurityGroup. The SecurityGroupId shall match the Name field. |
RolePermissions |
RolePermissionType[] |
The permissions that apply to the security key access through GetSecurityKeys for the SecurityGroup. |
GroupProperties |
KeyValuePair[] |
Specifies additional properties for the security group. |
Its representation in the AddressSpace is defined in Table 76.
Table 76 – SecurityGroupDataType definition
Attributes |
Value |
BrowseName |
SecurityGroupDataType |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Configuration2 |
This Structure DataType is used to represent the configuration of a PubSubKeyServicePushTarget in a PubSub configuration of an OPC UA Application. The PubSubKeyPushTargetDataType is formally defined in Table 77.
Table 77 – PubSubKeyPushTargetDataType structure
Name |
Type |
Description |
PubSubKeyPushTargetDataType |
Structure |
|
ApplicationUri |
String |
ApplicationUri of the Server that is the target of a push. |
PushTargetFolder |
String[] |
Optional path of the PubSubKeyPushTargetFolder used to group the push targets where each entry in the String array represents one level in a folder hierarchy. If no grouping is needed the parameter is a null or empty String array. |
EndpointUrl |
String |
URL of the Endpoint of the Server that is the target of a push. |
SecurityPolicyUri |
String |
The security policy the SKS shall use to establish a SecureChannel to the push target. |
UserTokenType |
UserTokenPolicy |
The type of user toke to be used for the connection to the push target. The default is Anonymous. |
RequestedKeyCount |
UInt16 |
The number of keys that are to be pushed on each update. The minimum setting for this is three |
RetryInterval |
Duration |
The interval the SKS shall use to retry pushing keys after an error appeared |
PushTargetProperties |
KeyValuePair[] |
Specifies additional properties for the push target |
SecurityGroups |
String[] |
List of security groups related to the push target |
Its representation in the AddressSpace is defined in Table 78.
Table 78 – PubSubKeyPushTargetDataType definition
Attributes |
Value |
BrowseName |
PubSubKeyPushTargetDataType |
IsAbstract |
False |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters Configuration2 |
This Structure DataType is used to represent the extended PubSub configuration of an OPC UA Application. It is a subtype of the PubSubConfigurationDataType defined in 6.2.12.1.
The PubSubConfiguration2DataType is formally defined in Table 79.
Table 79 – PubSubConfiguration2DataType structure
Name |
Type |
Description |
PubSubConfiguration2DataType |
Structure |
Subtype of PubSubConfigurationDataType defined in 6.2.12.1. |
SubscribedDataSets |
StandaloneSubscribedDataSetDataType[] |
The standalone SubscribedDataSets contained in the configuration. The StandaloneSubscribedDataSetDataType is defined in 6.2.10.5. |
DataSetClasses |
DataSetMetaDataType[] |
DataSetClasses supported by the Publisher. |
DefaultSecurityKeyServices |
EndpointDescription[] |
The default SecurityKeyServices used for the PubSub configuration. The value is as default if not overwritten in the groups or DataSetReaders. The general definition for the SecurityKeyServices parameter is in .6.2.5.4. |
SecurityGroups |
SecurityGroupDataType[] |
The SecurityGroups contained in the configuration. The SecurityGroupDataType is defined in 6.2.12.2. |
PubSubKeyPushTargets |
PubSubKeyPushTarget DataType[] |
The PubSubKeyPushTargets contained in the configuration. The PubSubKeyPushTargetDataType is defined in 6.2.12.3. |
ConfigurationVersion |
VersionTime |
The ConfigurationVersion reflects the time of the last change. |
ConfigurationProperties |
KeyValuePair[] |
The configurationProperties is an array of DataType KeyValuePair that specifies additional properties for the PubSub configuration. The KeyValuePair type is defined in OPC 10000-5 and consists of a QualifiedName and a value of BaseDataType. The mapping of the namespace, name, and value to concrete functionality may be defined by transport protocol mappings, future versions of this document or vendor-specific extensions. |
Its representation in the AddressSpace is defined in Table 80.
Table 80 – PubSubConfiguration2DataType definition
Attributes |
Value |
BrowseName |
PubSubConfiguration2DataType |
IsAbstract |
False |
Subtype of PubSubConfigurationDataType defined in 6.2.12.1. |
|
Conformance Units |
|
PubSub Parameters Configuration2 |
The PublishingInterval, the SamplingOffset the PublishingOffset and the timestamp in the NetworkMessage header shall use the same time base.
If an underlying network provides a synchronized global clock, this clock shall be used as the time base for the Publisher and Subscriber.
The beginning of a PublishingInterval shall be a multiple of the PublishingInterval relative to the start of the time base. The reference start time of the PublishingInterval can be calculated by using the following formula:
Start of periodic execution =
current time + PublishingInterval – (current time MODULO PublishingInterval)
Current time is the number of nanoseconds since the start of epoch used by the reference clock.
PublishingInterval is the duration in nanoseconds.
Start of periodic execution is the number of nanoseconds since the start of epoch which is the next possible start of a PublishingInterval.
Figure 25 shows an example how to select the possible start of a PublishingInterval.
Figure 25 – Start of the periodic publisher execution
The different timing offsets inside a PublishingInterval cycle on Publisher and Subscriber side are shown in Figure 26. The SamplingOffset and PublishingOffset are defined as parameters of the UADP WriterGroup. The ReceiveOffset and the ProcessingOffset are defined as parameters of the UADP DataSetReader in 6.3.1.4.
Figure 26 – Timing offsets in a PublishingInterval
The GroupVersion with DataType VersionTime reflects the time of the last layout change of the content of the NetworkMessages published by the WriterGroup. The VersionTime DataType is defined in OPC 10000-4. The GroupVersion changes when one of the following parameters is modified:
- NetworkMessageContentMask of this WriterGroup;
- Offset of any DataSetWriter in this WriterGroup;
- MinorVersion of the DataSet of any DataSetWriter in this WriterGroup;
- DataSetFieldContentMask of any DataSetWriter in this WriterGroup;
- DataSetMessageContentMask of any DataSetWriter in this WriterGroup;
- DataSetWriterId of any DataSetWriter in this WriterGroup.
The GroupVersion is valid for all NetworkMessages resulting from this WriterGroup.
The DataSetOrdering defines the ordering of the DataSetMessages in the NetworkMessages. Possible values for DataSetOrdering are described in Table 81. The default value is Undefined.
The DataSetOrderingType is an enumeration that specifies the possible options for the ordering of DataSetMessages inside and across NetworkMessages. The possible enumeration values are described in Table 81.
Table 81 – DataSetOrderingType values
Name |
Value |
Description |
Undefined |
0 |
The ordering of DataSetMessages is not specified. |
AscendingWriterId |
1 |
DataSetMessages are ordered ascending by the value of their corresponding DataSetWriterIds. |
AscendingWriterIdSingle |
2 |
DataSetMessages are ordered ascending by the value of their corresponding DataSetWriterIds and only one DataSetMessage is sent per NetworkMessage. |
If DataSetOrdering is Undefined any ordering between DataSets and their distribution into NetworkMessages is allowed. Ordering and distribution even may change between each PublishingInterval. If DataSetOrdering is set to AscendingWriterId, the Publisher shall fill up each NetworkMessage with DataSets with an ascending order of the related DataSetWriterIds as long as the accumulated DataSet sizes will not exceed the MaxNetworkMessageSize. The different options are shown in Figure 27.
Figure 27 – DataSetOrdering and MaxNetworkMessageSize
The DataSetOrderingType representation in the AddressSpace is defined in Table 82.
Table 82 – DataSetOrderingType definition
Attribute |
Value |
||||
BrowseName |
DataSetOrderingType |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Others |
Subtype of Enumeration defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
EnumStrings |
LocalizedText [] |
PropertyType |
|
Conformance Units |
|||||
PubSub Parameters UADP |
The parameter NetworkMessageContentMask defines the optional header fields to be included in the NetworkMessages produced by the WriterGroup. The DataType for the UADP NetworkMessage mapping is UadpNetworkMessageContentMask.
The DataType UadpNetworkMessageContentMask is formally defined in Table 83.
Table 83 – UadpNetworkMessageContentMask values
Value |
Bit No. |
Description |
PublisherId |
0 |
The PublisherId is included in the NetworkMessages. |
GroupHeader |
1 |
The GroupHeader is included in the NetworkMessages. |
WriterGroupId |
2 |
The WriterGroupId field is included in the GroupHeader. The flag is only valid if Bit 1 is set. |
GroupVersion |
3 |
The GroupVersion field is included in the GroupHeader. The flag is only valid if Bit 1 is set. |
NetworkMessageNumber |
4 |
The NetworkMessageNumber field is included in the GroupHeader. The field is required if more than one NetworkMessage is needed to transfer all DataSets of the group. The flag is only valid if Bit 1 is set. |
SequenceNumber |
5 |
The SequenceNumber field is included in the GroupHeader. The flag is only valid if Bit 1 is set. |
PayloadHeader |
6 |
The PayloadHeader is included in the NetworkMessages. |
Timestamp |
7 |
The sender timestamp is included in the NetworkMessages. |
PicoSeconds |
8 |
The sender PicoSeconds portion of the timestamp is included in the NetworkMessages. This flag is ignored if the Timestamp flag is not set. |
DataSetClassId |
9 |
The DataSetClassId is included in the NetworkMessages. The NetworkMessage can only contain DataSetMessages with the same DataSetClassId. If DataSetMessages have different DataSetClassIds they must be sent in individual NetworkMessages. |
PromotedFields |
10 |
The PromotedFields are included in the NetworkMessages. |
The UadpNetworkMessageContentMask representation in the AddressSpace is defined in Table 84.
Table 84 – UadpNetworkMessageContentMask definition
Attribute |
Value |
||||
BrowseName |
UadpNetworkMessageContentMask |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Others |
Subtype of UInt32 defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
OptionSetValues |
LocalizedText [] |
PropertyType |
|
Conformance Units |
|||||
PubSub Parameters UADP |
The SamplingOffset with the DataType Duration defines the time in milliseconds for the offset of creating the NetworkMessage in the PublishingInterval cycle.
Any negative value indicates that the optional parameter is not configured. In this case the Publisher shall calculate the time before the PublishingOffset that is necessary to create the NetworkMessage in time for sending at the PublishingOffset.
The Duration DataType is a subtype of Double and allows configuration of intervals smaller than a millisecond.
The PublishingOffset is an array of DataType Duration that defines the time in milliseconds for the offset in the PublishingInterval cycle of sending the NetworkMessage to the network.
Any negative value indicates that the PublishingOffset is not configured and the timing inside the PublishingInterval is application specific.
The Duration DataType is a subtype of Double and allows configuration of intervals smaller than a millisecond.
Figure 28 depicts how the different variations of PublishingOffset settings affect sending of multiple NetworkMessages.
Figure 28 – PublishingOffset options for multiple NetworkMessages
If all DataSets of a group are transferred with a single NetworkMessage, the scalar value or the first value in the array defines the offset for sending the NetworkMessage relative to the start of the PublishingInterval cycle. If the DataSets of a group are sent in a series of NetworkMessages, the values in the array define the offsets of sending the NetworkMessages relative to the start of the PublishingInterval cycle. If a scalar value is configured, the first NetworkMessage is sent at the offset and the following NetworkMessages are sent immediately after each other. If more NetworkMessages are available for sending than offset values in the array, the offset for the remaining NetworkMessages is extrapolated from the last two offset values in the array.
The PublishingInterval, the SamplingOffset the PublishingOffset and the timestamp in the NetworkMessage header shall use the same time base.
This Structure DataType is used to represent the UADP NetworkMessage mapping specific WriterGroup parameters. It is a subtype of WriterGroupMessageDataType defined in 6.2.6.7.3.
The UadpWriterGroupMessageDataType is formally defined in Table 85.
Table 85 – UadpWriterGroupMessageDataType structure
Name |
Type |
Description |
UadpWriterGroupMessageDataType |
Structure |
Subtype of WriterGroupMessageDataType defined in 6.2.6.7.3 |
GroupVersion |
VersionTime |
Defined in 6.3.1.1.2. |
DataSetOrdering |
DataSetOrderingType |
Defined in 6.3.1.1.3. |
NetworkMessageContentMask |
UadpNetworkMessageContentMask |
Defined in 6.3.1.1.4. |
SamplingOffset |
Duration |
Defined in 6.3.1.1.5. |
PublishingOffset |
Duration[] |
Defined in 6.3.1.1.6. |
Its representation in the AddressSpace is defined in Table 86.
Table 86 – UadpWriterGroupMessageDataType definition
Attributes |
Value |
BrowseName |
UadpWriterGroupMessageDataType |
IsAbstract |
False |
Subtype of WriterGroupMessageDataType defined in 6.2.6.7.3. |
|
Conformance Units |
|
PubSub Parameters UADP |
There are no UADP specific message mapping parameters defined for the ReaderGroup.
The configuration of the DataSetWriters in a WriterGroup can result in a fixed NetworkMessage layout where all DataSets have a static position between NetworkMessages.
In this case the parameters NetworkMessageNumber and DataSetOffset provide information about the static position of the DataSetMessage in a NetworkMessage Subscribers can rely on. If the value of one of the two parameters is 0, the position is not guaranteed to be static.
NOTE A Publisher can only provide valid values for the parameters NetworkMessageNumber and DataSetOffset if the message mapping allows keeping the value for these Properties constant unless the configuration of the WriterGroup is changed.
The DataSetMessageContentMask defines the flags for the content of the DataSetMessage header. The UADP message mapping specific flags are defined by the UadpDataSetMessageContentMask DataType.
The UadpDataSetMessageContentMask DataType is formally defined in Table 87.
Table 87 – UadpDataSetMessageContentMask Values
Value |
Bit No. |
Description |
Timestamp |
0 |
If this flag is set, a timestamp shall be included in the DataSetMessage header. |
PicoSeconds |
1 |
If this flag is set, a PicoSeconds timestamp field shall be included in the DataSetMessage header. This flag is ignored if the Timestamp flag is not set. |
Status |
2 |
If this flag is set, the DataSetMessage status is included in the DataSetMessage header. The rules for creating the DataSetMessage status are defined in Table 26. |
MajorVersion |
3 |
If this flag is set, the ConfigurationVersion.MajorVersion is included in the DataSetMessage header. |
MinorVersion |
4 |
If this flag is set, the ConfigurationVersion.MinorVersion is included in the DataSetMessage header. |
SequenceNumber |
5 |
If this flag is set, the DataSetMessageSequenceNumber is included in the DataSetMessage header. |
The UadpDataSetMessageContentMask representation in the AddressSpace is defined in Table 88.
Table 88 – UadpDataSetMessageContentMask definition
Attribute |
Value |
||||
BrowseName |
UadpDataSetMessageContentMask |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Others |
Subtype of UInt32 defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
OptionSetValues |
LocalizedText [] |
PropertyType |
|
Conformance Units |
|||||
PubSub Parameters UADP |
The parameter ConfiguredSize with the DataType UInt16 defines the fixed size in bytes a DataSetMessage uses inside a NetworkMessage. The default value is 0 and it indicates a dynamic length. If a DataSetMessage would be smaller in size (e.g. because of the current values that are encoded) the DataSetMessage is padded with bytes with value zero. In case it would be larger, the Publisher shall set bit 0 of the DataSetFlags1 to false to indicate that the DataSetMessage is not valid.
NOTE The parameter ConfiguredSize can be used for different reasons. One reason is the reservation of space inside a NetworkMessage by setting ConfiguredSize to a higher value than the assigned DataSet actually requires. Modifications (e.g. extensions) of the DataSet would then not change the required bandwidth on the network which reduces the risk of side effects. Another reason would be to maintain predictable network behaviour even when using a volatile field DataTypes like String or ByteString.
The parameter NetworkMessageNumber with the DataType UInt16 is the number of the NetworkMessage inside a PublishingInterval in which this DataSetMessage is published. The default value is 0 and indicates that the number of the NetworkMessage is not fixed.
The NetworkMessage shall have a fixed layout if the PayloadHeader flag in the NetworkMessageContentMask is false.
If the NetworkMessage layout is fixed and all DataSetMessages of a WriterGroup fit into one single NetworkMessage, the value of NetworkMessageNumber shall be 1. If the DataSetMessages of a WriterGroup are distributed or chunked over more than one NetworkMessage, the first NetworkMessage in a PublishingInterval shall be generated with the value 1, the following NetworkMessages shall be generated with incrementing NetworkMessageNumbers. To avoid a roll-over the number of NetworkMessages generated from one WriterGroup within one PublishingInterval is limited to 65535.
The parameter DataSetOffset with the DataType UInt16 is the offset in bytes inside a NetworkMessage at which the DataSetMessage is located, relative to the beginning of the NetworkMessage.
The default value 0 indicates that the position of the DataSetMessage in a NetworkMessage is not fixed. If the DataSetWriter is disabled and the DataSetOffset is not 0, the valid flag of the DataSetFlags1 in the DataSetMessage header at the offset shall be false.
This parameter should be set if the PayloadHeader flag in the NetworkMessageContentMask is false and therefore the NetworkMessage has a fixed layout.
This Structure DataType is used to represent UADP DataSetMessage mapping specific DataSetWriter parameters. It is a subtype of the DataSetWriterMessageDataType defined in 6.2.4.5.3.
The UadpDataSetWriterMessageDataType is formally defined in Table 89.
Table 89 – UadpDataSetWriterMessageDataType structure
Name |
Type |
Description |
UadpDataSetWriterMessageDataType |
Structure |
Subtype of DataSetWriterMessageDataType defined in 6.2.4.5.3 |
DataSetMessageContentMask |
UadpDataSetMessageContentMask |
Defined in 6.3.1.3.2. |
ConfiguredSize |
UInt16 |
Defined in 6.3.1.3.3. |
NetworkMessageNumber |
UInt16 |
Defined in 6.3.1.3.4. |
DataSetOffset |
UInt16 |
Defined in 6.3.1.3.5. |
Its representation in the AddressSpace is defined in Table 90.
Table 90 – UadpDataSetWriterMessageDataType definition
Attributes |
Value |
BrowseName |
UadpDataSetWriterMessageDataType |
IsAbstract |
False |
Subtype of DataSetWriterMessageDataType defined in 6.2.4.5.3. |
|
Conformance Units |
|
PubSub Parameters UADP |
The parameter GroupVersion with DataType VersionTime defines the expected value in the field GroupVersion in the header of the NetworkMessage. The default value 0 is defined as null value, and means this parameter shall be ignored.
The parameter NetworkMessageNumber with DataType UInt16 is the number of the NetworkMessage inside a PublishingInterval in which this DataSetMessage is published. The default value 0 is defined as null value, and means this parameter shall be ignored.
The NetworkMessage shall have a fixed layout if the PayloadHeader flag in the NetworkMessageContentMask is false.
The parameter DataSetOffset with DataType UInt16 defines the offset in bytes for the DataSetMessage inside the corresponding NetworkMessage relative to the beginning of the NetworkMessage. The default value 0 is defined as null value, and means that the position of the DataSetMessage in a NetworkMessage is not fixed.
This parameter should be set if the PayloadHeader flag in the NetworkMessageContentMask is false and therefore the NetworkMessage has a fixed layout.
The parameter DataSetClassId with DataType Guid defines a DataSet class related filter. If the value is null, the DataSetClassId filter is not applied.
The NetworkMessageContentMask with DataType UadpNetworkMessageContentMask indicates the optional header fields included in the received NetworkMessages.
The UadpNetworkMessageContentMask DataType is defined in 6.3.1.1.4.
The DataSetMessageContentMask with the DataType UadpDataSetMessageContentMask indicates the optional header fields included in the DataSetMessages.
The UadpDataSetMessageContentMask DataType is defined in 6.3.1.3.2.
The PublishingInterval with DataType Duration indicates the rate the Publisher sends NetworkMessages related to the DataSet. The start time for the periodic execution of the Subscriber shall be calculated according to 6.3.1.1.1.
The ReceiveOffset with DataType Duration defines the time in milliseconds for the offset in the PublishingInterval cycle for the expected receive time of the NetworkMessage for the DataSet from the network.
Any negative value indicates that the ReceiveOffset is not configured and the timing inside the PublishingInterval is not defined.
The ProcessingOffset with DataType Duration defines the time in milliseconds for the offset in the PublishingInterval cycle when the received DataSet need to be processed by the application in the Subscriber.
The different timing offsets inside a PublishingInterval cycle on the Publisher and Subscriber sides are shown in Figure 26.
Any negative value indicates that the ProcessingOffset is not configured and the timing inside the PublishingInterval is application specific.
This Structure DataType is used to represent UADP message mapping specific DataSetReader parameters. It is a subtype of the DataSetReaderMessageDataType defined in 6.2.9.13.3.
The UadpDataSetReaderMessageDataType is formally defined in Table 91.
Table 91 – UadpDataSetReaderMessageDataType structure
Name |
Type |
Description |
UadpDataSetReaderMessageDataType |
Structure |
Subtype of DataSetReaderMessageDataType defined in 6.2.9.13.3. |
GroupVersion |
VersionTime |
Defined in 6.3.1.4.1. |
NetworkMessageNumber |
UInt16 |
Defined in 6.3.1.4.2. |
DataSetOffset |
UInt16 |
Defined in 6.3.1.4.3. |
DataSetClassId |
Guid |
Defined in 6.3.1.4.4. |
NetworkMessageContentMask |
UadpNetworkMessageContentMask |
Defined in 6.3.1.4.5. |
DataSetMessageContentMask |
UadpDataSetMessageContentMask |
Defined in 6.3.1.4.6. |
PublishingInterval |
Duration |
Defined in 6.3.1.4.7. |
ReceiveOffset |
Duration |
Defined in 6.3.1.4.8. |
ProcessingOffset |
Duration |
Defined in 6.3.1.4.9. |
Its representation in the AddressSpace is defined in Table 92.
Table 92 – UadpDataSetReaderMessageDataType definition
Attributes |
Value |
BrowseName |
UadpDataSetReaderMessageDataType |
IsAbstract |
False |
Subtype of DataSetReaderMessageDataType defined in 6.2.9.13.3. |
|
Conformance Units |
|
PubSub Parameters UADP |
The parameter NetworkMessageContentMask defines the optional header fields to be included in the NetworkMessages produced by the WriterGroup. The DataType for the JSON NetworkMessage mapping is JsonNetworkMessageContentMask.
The DataType JsonNetworkMessageContentMask is formally defined in Table 93.
Table 93 – JsonNetworkMessageContentMask values
Value |
Bit No. |
Description |
NetworkMessageHeader |
0 |
The JSON NetworkMessage header is included in the NetworkMessages. If this bit is false, bits 3 and 4 shall be 0. |
DataSetMessageHeader |
1 |
The JSON DataSetMessage header is included in each DataSetMessage. If this bit is false then the DataSetMessageContentMask for the DataSetWriters is ignored (see 6.3.2.3.1). |
SingleDataSetMessage |
2 |
Each JSON NetworkMessage contains only one DataSetMessage. |
PublisherId |
3 |
The PublisherId is included in the NetworkMessages. |
DataSetClassId |
4 |
The DataSetClassId is included in the NetworkMessages. The NetworkMessage can only contain DataSetMessages with the same DataSetClassId. If DataSetMessages have different DataSetClassIds they must be sent in individual NetworkMessages. |
ReplyTo |
5 |
Reserved. |
WriterGroupName |
6 |
The WriterGroup name is included in the NetworkMessages. |
The JsonNetworkMessageContentMask representation in the AddressSpace is defined in Table 94.
Table 94 – JsonNetworkMessageContentMask definition
Attribute |
Value |
||||
BrowseName |
JsonNetworkMessageContentMask |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Others |
Subtype of UInt32 defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
OptionSetValues |
LocalizedText [] |
PropertyType |
|
Conformance Units |
|||||
PubSub Parameters JSON |
This Structure DataType is used to represent the JSON NetworkMessage mapping specific WriterGroup parameters. It is a subtype of WriterGroupMessageDataType defined in 6.2.6.7.3.
The JsonWriterGroupMessageDataType is formally defined in Table 95.
Table 95 – JsonWriterGroupMessageDataType structure
Name |
Type |
Description |
JsonWriterGroupMessageDataType |
Structure |
Subtype of WriterGroupMessageDataType defined in 6.2.6.7.3. |
NetworkMessageContentMask |
JsonNetworkMessageContentMask |
Defined in 6.3.2.1.1. |
Its representation in the AddressSpace is defined in Table 96.
Table 96 – JsonWriterGroupMessageDataType definition
Attributes |
Value |
BrowseName |
JsonWriterGroupMessageDataType |
IsAbstract |
False |
Subtype of WriterGroupMessageDataType defined in 6.2.6.7.3. |
|
Conformance Units |
|
PubSub Parameters JSON |
There are no JSON specific message mapping parameters defined for the ReaderGroup.
The DataSetMessageContentMask defines the flags for the content of the DataSetMessage header. The JSON message mapping specific flags are defined by the JsonDataSetMessageContentMask DataType.
The JsonDataSetMessageContentMask DataType is formally defined in Table 97.
Table 97 – JsonDataSetMessageContentMask values
Value |
Bit No. |
Description |
DataSetWriterId |
0 |
If this flag is set, a DataSetWriterId shall be included in the DataSetMessage header. |
MetaDataVersion |
1 |
If this flag is set, the ConfigurationVersion is included in the DataSetMessage header. |
SequenceNumber |
2 |
If this flag is set, the DataSetMessageSequenceNumber is included in the DataSetMessage header. |
Timestamp |
3 |
If this flag is set, a timestamp shall be included in the DataSetMessage header. |
Status |
4 |
If this flag is set, an overall status is included in the DataSetMessage header. |
MessageType |
5 |
If this flag is set, the message type is included in the DataSetMessage header. |
DataSetWriterName |
6 |
If this flag is set, a DataSetWriterName shall be included in the DataSetMessage header. |
ReversibleFieldEncoding |
7 |
If this flag is set, the DataSetMessage fields are encoded in the reversible JSON encoding and in the non-reversible JSON encoding otherwise. |
PublisherId |
8 |
The PublisherId is included in the DataSetMessages. This bit shall be false if the NetworkMessageHeader is active. |
WriterGroupName |
9 |
The WriterGroup name is included in the DataSetMessages. If the WriterGroup name is included in the NetworkMessage header, it shall not be included in the DataSetMessages. |
MinorVersion |
10 |
If this flag is set, the MinorVersion field of the ConfigurationVersion is included in the DataSetMessage header. |
The JsonDataSetMessageContentMask representation in the AddressSpace is defined in Table 98.
Table 98 – JsonDataSetMessageContentMask definition
Attribute |
Value |
||||
BrowseName |
JsonDataSetMessageContentMask |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Others |
Subtype of UInt32 defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
OptionSetValues |
LocalizedText [] |
PropertyType |
|
Conformance Units |
|||||
PubSub Parameters JSON |
This Structure DataType is used to represent JSON DataSetMessage mapping specific DataSetWriter parameters. It is a subtype of the DataSetWriterMessageDataType defined in 6.2.4.5.3.
The JsonDataSetWriterMessageDataType is formally defined in Table 99.
Table 99 – JsonDataSetWriterMessageDataType structure
Name |
Type |
Description |
JsonDataSetWriterMessageDataType |
Structure |
Subtype of DataSetWriterMessageDataType defined in 6.2.4.5.3. |
DataSetMessageContentMask |
JsonDataSetMessageContentMask |
Defined in 6.3.2.3.1. |
Its representation in the AddressSpace is defined in Table 100.
Table 100 – JsonDataSetWriterMessageDataType definition
Attributes |
Value |
BrowseName |
JsonDataSetWriterMessageDataType |
IsAbstract |
False |
Subtype of DataSetWriterMessageDataType defined in 6.2.4.5.3. |
|
Conformance Units |
|
PubSub Parameters JSON |
The NetworkMessageContentMask with DataType JsonNetworkMessageContentMask indicates the optional header fields included in the received NetworkMessages. The JsonNetworkMessageContentMask DataType is defined in 6.3.2.1.1.
The DataSetMessageContentMask with the DataType JsonDataSetMessageContentMask indicates the optional header fields included in the DataSetMessages.
The JsonDataSetMessageContentMask DataType is defined in 6.3.2.3.1.
This Structure DataType is used to represent JSON DataSetMessage mapping specific DataSetReader parameters. It is a subtype of the DataSetReaderMessageDataType defined in 6.2.9.13.3.
The JsonDataSetReaderMessageDataType is formally defined in Table 101.
Table 101 – JsonDataSetReaderMessageDataType structure
Name |
Type |
Description |
JsonDataSetReaderMessageDataType |
Structure |
Subtype of DataSetReaderMessageDataType defined in 6.2.9.13.3. |
NetworkMessageContentMask |
JsonNetworkMessageContentMask |
Defined in 6.3.2.4.1. |
DataSetMessageContentMask |
JsonDataSetMessageContentMask |
Defined in 6.3.2.4.2. |
Its representation in the AddressSpace is defined in Table 102.
Table 102 – JsonDataSetReaderMessageDataType definition
Attributes |
Value |
BrowseName |
JsonDataSetReaderMessageDataType |
IsAbstract |
False |
Subtype of DataSetReaderMessageDataType defined in 6.2.9.13.3. |
|
Conformance Units |
|
PubSub Parameters JSON |
The parameter DataSetClassId with DataType Guid defines a DataSet class related filter. If the value is null or the parameter is not set, the DataSetClassId filter is not applied.
The parameter is configured in the DataSetReaderProperties with the Key 0:DataSetClassId.
The QosDataTypes defined in the following chapters are used in the DatagramQos parameter in different datagram specific transport protocol mapping settings.
The DatagramQos contains an array of QosDataTypes. The array is null or empty if no QoS related parameters are set.
The DatagramQos parameter is always combined with a QosCategory parameter. Depending on the content of the QosCategory String, different elements need to be present within the DatagramQos array.
The specific processing of the QosCategory and DatagramQos content is described in 5.4.5.4.
Standard QosCategory values are defined in Table 103.
Table 103 – Standard QosCategory values
QosCategory |
Description |
Null or empty
|
This category indicates best-effort is used. DatagramQos shall be null or empty.
|
Opc.qos.cat://priority |
This category indicates priority is used. DatagramQos shall contain one element of TransmitQosPriorityDataType or ReceiveQosPriorityDataType and optionally further elements which may be omitted. |
This Structure DataType is an abstract base type for Structures with QoS related parameters. The QosDataType is formally defined in Table 104.
Table 104 – QosDataType structure
Name |
Type |
Description |
QosDataType |
Structure |
|
The QosDataType Structure representation in the AddressSpace is defined in Table 105.
Table 105 – QosDataType definition
Attributes |
Value |
BrowseName |
QosDataType |
IsAbstract |
True |
Subtype of Structure defined in OPC 10000-5. |
|
Conformance Units |
|
PubSub Parameters QoS |
This Structure DataType is an abstract base type for Structures with transmit QoS related parameters. The TransmitQosDataType is formally defined in Table 106.
Table 106 – TransmitQosDataType structure
Name |
Type |
Description |
TransmitQosDataType |
Structure |
|
The TransmitQosDataType Structure representation in the AddressSpace is defined in Table 107.
Table 107 – TransmitQosDataType definition
Attributes |
Value |
BrowseName |
TransmitQosDataType |
IsAbstract |
True |
Subtype of QosDataType defined in 6.4.1.1.2. |
|
Conformance Units |
|
PubSub Parameters QoS |
The PriorityLabel with DataType String specifies the priority of the according sender. The network stack will use the PriorityLabel to look up the priority settings for the transport protocol headers.
The priority labels defined by OPC UA should have the following form:
opc.qos.lbl://<label>
Example values are “opc.qos.lbl://low” or “opc.qos.lbl://high”. The mapping is described in 5.4.5.4.
Note: This version does not define concrete labels. The engineering process needs to provide them and also build up the PriorityMappingTable in OPC 10000-22 accordingly.
This Structure DataType is used to represent the priority lable specific transmit QoS parameters. It is a subtype of the TransmitQosDataType defined in 6.4.1.1.3.
The TransmitQosPriorityDataType is formally defined in Table 108.
Table 108 – TransmitQosPriorityDataType structure
Name |
Type |
Description |
TransmitQosPriorityDataType |
Structure |
Subtype of TransmitQosDataType defined in 6.4.1.1.3. |
PriorityLabel |
String |
Defined in 6.4.1.1.4.1. |
Its representation in the AddressSpace is defined in Table 109.
Table 109 – TransmitQosPriorityDataType definition
Attributes |
Value |
BrowseName |
TransmitQosPriorityDataType |
IsAbstract |
False |
Subtype of TransmitQosDataType defined in 6.4.1.1.3. |
|
Conformance Units |
|
PubSub Parameters QoS |
This Structure DataType is an abstract base type for Structures with receive QoS related parameters. The ReceiveQosDataType is formally defined in Table 110.
Table 110 – ReceiveQosDataType structure
Name |
Type |
Description |
ReceiveQosDataType |
Structure |
|
The ReceiveQosDataType Structure representation in the AddressSpace is defined in Table 111.
Table 111 – ReceiveQosDataType definition
Attributes |
Value |
BrowseName |
ReceiveQosDataType |
IsAbstract |
True |
Subtype of QosDataType defined in 6.4.1.1.2. |
|
Conformance Units |
|
PubSub Parameters QoS |
The PriorityLabel with DataType String specifies the priority of the according sender.
Futher details are defined in 6.4.1.1.4.1.
This Structure DataType is used to represent the priority lable specific receive QoS parameters. It is a subtype of the ReceiveQosDataType defined in 6.4.1.1.5.
The ReceiveQosPriorityDataType is formally defined in Table 112.
Table 112 – TransmitQosPriorityDataType structure
Name |
Type |
Description |
ReceiveQosPriorityDataType |
Structure |
Subtype of ReceiveQosDataType defined in 6.4.1.1.5. |
PriorityLabel |
String |
Defined in 6.4.1.1.6.1. |
Its representation in the AddressSpace is defined in Table 113.
Table 113 – ReceiveQosPriorityDataType definition
Attributes |
Value |
BrowseName |
ReceiveQosPriorityDataType |
IsAbstract |
False |
Subtype of ReceiveQosDataType defined in 6.4.1.1.5. |
|
Conformance Units |
|
PubSub Parameters QoS |
The DiscoveryAddress parameter contains the network address information used for the discovery probe and announcement messages. The different Structure DataTypes used to represent the Address are defined in 6.2.7.5.3.
This Structure DataType is used to represent the datagram specific transport mapping parameters for PubSubConnections. It is a subtype of the ConnectionTransportDataType defined in 6.2.7.5.2.
The DatagramConnectionTransportDataType is formally defined in Table 114.
Table 114 – DatagramConnectionTransportDataType structure
Name |
Type |
Description |
Allow Subtypes |
DatagramConnectionTransportDataType |
Structure |
Subtype of ConnectionTransportDataType defined in 6.2.6.4. |
|
DiscoveryAddress |
NetworkAddressDataType |
Defined in 6.4.1.2.1. The NetworkAddressDataType is defined in 6.2.7.5.3. |
True |
Its representation in the AddressSpace is defined in Table 115.
Table 115 – DatagramConnectionTransportDataType definition
Attributes |
Value |
BrowseName |
DatagramConnectionTransportDataType |
IsAbstract |
False |
Subtype of ConnectionTransportDataType defined in 6.2.7.5.2. |
|
Conformance Units |
|
PubSub Parameters Datagram |
The DiscoveryAnnounceRate with DataType UInt32 defines the interval in seconds used for cyclic sending of discovery announcement messages related to this connection.
The default value is 0 and defines that discovery announcement messages are only sent as response to discovery probe messages.
The DiscoveryMaxMessageSize with DataType UInt32 indicates the maximum size in bytes for NetworkMessages created for discovery. It refers to the size of the complete NetworkMessage including padding and signature without any additional headers added by the transport protocol mapping. If the size of a NetworkMessage exceeds the DiscoveryMaxMessageSize, the behaviour depends on the message mapping.
The default value is 0 and defines that the default size for the transport protocol ist used. The default size is defined for the transport protocol mappings in 7.3.
NOTE The value for the DiscoveryMaxMessageSize should be configured in a way that ensures that NetworkMessages together with additional headers added by the transport protocol are still smaller than or equal than the transport protocol MTU.
Selects the general category of QoS the PubSubConnection requires. Further details are defined in 6.4.1.1.1.
The parameter shall be null or empty if no QoS related parameters are set.
The DatagramQos parameter contains QoS related parameters for the PubSubConnection as array of QosDataType Structures. The abstract DataType is defined in 6.4.1.1.2. The concrete subtypes are used to represent different QoS settings for transmit and receive that can be combined in the array.
The parameter shall be null or empty if no QoS related parameters are set.
This Structure DataType is used to represent the datagram specific transport mapping parameters for a PubSubConnection.
It is a subtype of the DatagramConnectionTransportDataType defined in 6.4.1.2.2.
The DatagramConnectionTransport2DataType is formally defined in Table 116.
Table 116 – DatagramConnectionTransport2DataType structure
Name |
Type |
Description |
Allow Subtypes |
DatagramConnectionTransport2DataType |
Structure |
Subtype of ConnectionTransportDataType defined in 6.2.6.4. |
|
DiscoveryAnnounceRate |
UInt32 |
Defined in 6.4.1.2.3. |
|
DiscoveryMaxMessageSize |
UInt32 |
Defined in 6.4.1.2.4. |
|
QosCategory |
String |
Defined in 6.4.1.2.5. |
|
DatagramQos |
QosDataType[] |
Defined in 6.4.1.2.6. |
True |
Its representation in the AddressSpace is defined in Table 117.
Table 117 – DatagramConnectionTransport2DataType definition
Attributes |
Value |
BrowseName |
DatagramConnectionTransport2DataType |
IsAbstract |
False |
Subtype of DatagramConnectionTransportDataType defined in 6.4.1.2.2. |
|
Conformance Units |
|
PubSub Parameters Datagram |
The MessageRepeatCount with DataType Byte defines how many times every NetworkMessage is repeated. The default value is 0 and disables the repeating.
The MessageRepeatDelay with DataType Duration defines the time between NetworkMessage repeats in milliseconds. The parameter shall be ignored if the parameter MessageRepeatCount is set to 0.
This Structure DataType is used to represent the datagram specific transport mapping parameters for WriterGroups. It is a subtype of the WriterGroupTransportDataType defined in 6.2.6.7.2.
The DatagramWriterGroupTransportDataType is formally defined in Table 118.
Table 118 – DatagramWriterGroupTransportDataType structure
Name |
Type |
Description |
DatagramWriterGroupTransportDataType |
Structure |
Subtype of WriterGroupTransportDataType defined in 6.2.6.7.2. |
MessageRepeatCount |
Byte |
Defined in 6.4.1.3.1. |
MessageRepeatDelay |
Duration |
Defined in 6.4.1.3.2. |
Its representation in the AddressSpace is defined in Table 119.
Table 119 – DatagramWriterGroupTransportDataType definition
Attributes |
Value |
BrowseName |
DatagramWriterGroupTransportDataType |
IsAbstract |
False |
Subtype of WriterGroupTransportDataType defined in 6.2.6.7.2. |
|
Conformance Units |
|
PubSub Parameters Datagram |
The Address parameter contains the network address information for the communication middleware related to the WriterGroup. The different Structure DataTypes used to represent the Address are defined in 6.2.7.5.3.
The parameter shall be null if an address is not set at this level. If the parameter is set, it overwrites the Address on the PubSubConnection.
Selects the general category of QoS the WriterGroup requires. Further details are defined in 6.4.1.1.1.
The parameter shall be null or empty if no QoS related parameters are set.
The DatagramQos parameter contains QoS related parameters for the WriterGroup as array of TransmitQosDataType Structures. The abstract TransmitQosDataType is defined in 6.4.1.1.3. The concrete subtypes are used to represent different QoS settings that can be combined in the array.
The parameter shall be null or empty if no QoS related parameters are set.
The DiscoveryAnnounceRate with DataType UInt32 defines the interval in seconds used for cyclic sending of discovery announcement messages related to the WriterGroup.
The default value is 0 and defines that discovery announcement messages are only sent as response to discovery probe messages.
The Topic parameter with DataType String contains the unique name of the data stream produced by the WriterGroup within a Message Oriented Middleware.
A unique default name can be created by combining the PublisherId with the WriterGroupId using ‘.’ As separator.
This Structure DataType is used to represent the datagram specific transport mapping parameters for WriterGroups. It is a subtype of the DatagramWriterGroupTransportDataType defined in 6.4.1.3.3.
The DatagramWriterGroupTransportDataType is formally defined in Table 120.
Table 120 – DatagramWriterGroupTransport2DataType structure
Name |
Type |
Description |
Allow Subtypes |
DatagramWriterGroupTransport2DataType |
Structure |
Subtype of DatagramWriterGroupTransportDataType defined in 6.4.1.3.3. |
|
Address |
NetworkAddressDataType |
Defined in 6.4.1.3.4. |
True |
QosCategory |
String |
Defined in 6.4.1.3.5. |
|
DatagramQos |
TransmitQosDataType[] |
Defined in 6.4.1.3.6. |
True |
DiscoveryAnnounceRate |
UInt32 |
Defined in 6.4.1.3.7. |
|
Topic |
String |
Defined in 6.4.1.3.8. |
|
Its representation in the AddressSpace is defined in Table 121.
Table 121 – DatagramWriterGroupTransport2DataType definition
Attributes |
Value |
BrowseName |
DatagramWriterGroupTransport2DataType |
IsAbstract |
False |
Subtype of DatagramWriterGroupTransportDataType defined in 6.4.1.3.3. |
|
Conformance Units |
|
PubSub Parameters Datagram |
There are no datagram-specific transport mapping parameters defined for the ReaderGroup.
There are no datagram-specific transport mapping parameters defined for the DataSetWriter.
The Address parameter contains the network address information for the communication middleware related to the DataSetReader. The different Structure DataTypes used to represent the Address are defined in 6.2.7.5.3.
The parameter shall be null if an address is not set at this level. If the parameter is set, it overwrites the Address on the PubSubConnection.
Selects the general categorty of QoS the DataSetReader requires. Further details are defined in 6.4.1.1.1.
The parameter shall be null or empty if no QoS related parameters are set.
The DatagramQos parameter contains the QoS related parameters for the DataSetReader as array of ReceiveQosDataType Structures. The abstract ReceiveQosDataType is defined in 6.4.1.1.5. The concrete subtypes are used to represent different QoS settings that can be combined in the array.
The parameter shall be null or empty if no QoS related parameters are set.
The Topic parameter with DataType String contains the unique name of the data stream from the Publisher that contains the DataSetMessages of interest for the DataSetReader. The Topic is defined by the Publisher.
This Structure DataType is used to represent the datagram transport mapping parameters for DataSetReaders. It is a subtype of the DataSetReaderTransportDataType defined in 6.2.9.13.2.
The DatagramDataSetReaderTransportDataType is formally defined in Table 122.
Table 122 – DatagramDataSetReaderTransportDataType structure
Name |
Type |
Description |
Allow Subtypes |
DatagramDataSetReaderTransportDataType |
Structure |
Subtype of DataSetReaderTransportDataType defined in 6.2.9.13.2. |
|
Address |
NetworkAddressDataType |
Defined in 6.4.1.6.1. |
True |
QosCategory |
String |
Defined in 6.4.1.6.2. |
|
DatagramQos |
ReceiveQosDataType[] |
Defined in 6.4.1.6.3. |
True |
Topic |
String |
Defined in 6.4.1.6.4. |
|
Its representation in the AddressSpace is defined in Table 123.
Table 123 – DatagramDataSetReaderTransportDataType definition
Attributes |
Value |
BrowseName |
DatagramDataSetReaderTransportDataType |
IsAbstract |
False |
Subtype of DataSetReaderTransportDataType defined in 6.2.9.13.2. |
|
Conformance Units |
|
PubSub Parameters Datagram |
The BrokerTransportQualityOfService Enumeration DataType is formally defined in Table 124.
The mapping of quality of service to the broker transport specific implementation is defined in 7.3.4.5 for AMQP and 7.3.5.5 for MQTT.
Table 124 – BrokerTransportQualityOfService values
Name |
Value |
Description |
NotSpecified |
0 |
The value is not specified and the value of the parent object shall be used. |
BestEffort |
1 |
The transport shall make the best effort to deliver a message. Worst case this means data loss or data duplication are possible. |
AtLeastOnce |
2 |
The transport guarantees that the message shall be delivered at least once, but duplication is possible. Readers shall de-duplicate based on message id or sequence number. |
AtMostOnce |
3 |
The transport guarantees that the message shall be sent once, but if it is lost it is not sent again. |
ExactlyOnce |
4 |
The transport handshake guarantees that the message shall be delivered to the broker exactly once and not more or less. |
The BrokerTransportQualityOfService representation in the AddressSpace is defined in Table 125.
Table 125 – BrokerTransportQualityOfService definition
Attribute |
Value |
||||
BrowseName |
BrokerTransportQualityOfService |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Others |
Subtype of Enumeration defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
EnumStrings |
LocalizedText [] |
PropertyType |
|
Conformance Units |
|||||
PubSub Parameters Broker |
The ResourceUri parameter of DataType String enables the transport implementation to look up a configured key from the corresponding KeyCredentialConfigurationType instance defined in OPC 10000-12 to use for authenticating access to the Broker at the connection level or for queues configured below the connection.
If null or empty, no authentication or anonymous authentication shall be assumed as default unless authentication settings are provided on a subordinated WriterGroup or a DataSetWriter to authenticate access to individual queues.
The parameter AuthenticationProfileUri of DataType String allows the selection of the authentication protocol used by the transport implementation. This maps to the ProfileUri Property in the KeyCredentialConfigurationType instance selected through the ResourceUri and AuthenticationProfileUri Strings.
This parameter is optional. If more than one ProfileUri describing the protocol to use for authentication is configured and this value is null or empty, the transport will choose one. If the transport cannot fine a suitable authentication mechanism in the ProfileUri array, the transport sets the State of the PubSubConnection is set to Error.
This Structure DataType is used to represent the broker-specific transport mapping parameters for the PubSubConnection. It is a subtype of the ConnectionTransportDataType defined in 6.2.7.5.2.
The BrokerConnectionTransportDataType is formally defined in Table 126.
Table 126 – BrokerConnectionTransportDataType structure
Name |
Type |
Description |
BrokerConnectionTransportDataType |
Structure |
Subtype of the ConnectionTransportDataType defined in 6.2.6.4. |
ResourceUri |
String |
Defined in 6.4.2.2.1. |
AuthenticationProfileUri |
String |
Defined in 6.4.2.2.2. |
Its representation in the AddressSpace is defined in Table 127.
Table 127 – BrokerConnectionTransportDataType definition
Attributes |
Value |
BrowseName |
BrokerConnectionTransportDataType |
IsAbstract |
False |
Subtype of ConnectionTransportDataType defined in 6.2.7.5.2. |
|
Conformance Units |
|
PubSub Parameters Broker |
The QueueName parameter with DataType String specifies the queue in the Broker that receives NetworkMessages sent by the Publisher. This could be the name of a queue or topic defined in the Broker.
The ResourceUri property of DataType String allows the transport implementation to look up the configured key from the corresponding KeyCredentialConfigurationType instance defined in OPC 10000-12 to use for authenticating access to the specified queue.
If this String is not null or empty, it overrides the ResourceUri of the PubSubConnection authentication settings.
The parameter AuthenticationProfileUri of DataType String allows the selection of the authentication protocol used by the transport implementation for authenticating access to the specified queue.
If this String is not null or empty, it overrides the AuthenticationProfileUri of the PubSubConnection transport settings defined in 6.4.2.2.2.
The RequestedDeliveryGuarantee parameter with DataType BrokerTransportQualityOfService specifies the delivery guarantees that shall apply to all NetworkMessages published by the WriterGroup unless otherwise specified on the DataSetWriter transport settings. The DataType BrokerTransportQualityOfService is defined in 6.4.2.1.
The value NotSpecified is not allowed on the WriterGroup. If the selected delivery guarantee cannot be applied, the WriterGroup shall set the state to Error.
This Structure DataType is used to represent the broker-specific transport mapping parameters for WriterGroups. It is a subtype of the WriterGroupTransportDataType defined in 6.2.6.7.2.
The BrokerWriterGroupTransportDataType is formally defined in Table 128.
Table 128 – BrokerWriterGroupTransportDataType structure
Name |
Type |
Description |
BrokerWriterGroupTransportDataType |
Structure |
Subtype of WriterGroupTransportDataType defined in 6.2.6.7.2. |
QueueName |
String |
Defined in 6.4.2.3.1. |
ResourceUri |
String |
Defined in 6.4.2.3.2. |
AuthenticationProfileUri |
String |
Defined in 6.4.2.3.3. |
RequestedDeliveryGuarantee |
BrokerTransportQualityOfService |
Defined in 6.4.2.3.4. |
Its representation in the AddressSpace is defined in Table 129.
Table 129 – BrokerWriterGroupTransportDataType definition
Attributes |
Value |
BrowseName |
BrokerWriterGroupTransportDataType |
IsAbstract |
False |
Subtype of WriterGroupTransportDataType defined in 6.2.6.7.2. |
|
Conformance Units |
|
PubSub Parameters Broker |
There are no broker specific transport mapping parameters defined for the ReaderGroup.
The QueueName parameter with DataType String specifies the queue in the Broker that receives NetworkMessages sent by the Publisher for the DataSetWriter. This could be the name of a queue or topic defined in the Broker. This parameter is only valid if the NetworkMessages from the WriterGroup for this DataSetWriter contain only DataSetMessages from this DataSetWriter.
If this String is not null or empty, it overrides the QueueName of the WriterGroup transport settings.
The ResourceUri property of DataType String allows the transport implementation to look up the configured key from the corresponding KeyCredentialConfigurationType instance defined in OPC 10000-12 to use for authenticating access to the specified queue.
If this String is not null or empty, it overrides the ResourceUri of the WriterGroup authentication settings.
The parameter AuthenticationProfileUri of DataType String allows the selection of the authentication protocol used by the transport implementation for authenticating access to the specified queue.
If this String is not null or empty, it overrides the AuthenticationProfileUri of the WriterGroup transport settings.
The RequestedDeliveryGuarantee parameter with DataType BrokerTransportQualityOfService specifies the delivery guarantees that shall apply to all messages published by the DataSetWriter. The DataType BrokerTransportQualityOfService is defined in 6.4.2.1.
If the value is not NotSpecified, it overrides the RequestedDeliveryGuarantee of the WriterGroup transport settings. Overriding the WriterGroup setting is only valid if the DataSetWriter also overrides the QueueName.
If the selected delivery guarantee cannot be applied, the DataSetWriter shall set the state to Error.
For message mappings like UADP, the Subscriber needs access to the DataSetMetaData to process received DataSetMessages. The Publisher can provide the DataSetMetaData through a dedicated queue.
The parameter MetaDataQueueName with the DataType String specifies the Broker queue that receives messages with DataSetMetaData sent by the Publisher for this DataSetWriter. This could be the name of a queue or topic defined in the Broker.
Specifies the interval in milliseconds with Data Type Duration at which the Publisher shall send the DataSetMetaData to the MetaDataQueueName. A value of 0 or any negative value shall be interpreted as infinite interval.
The broker transport shall publish all messages with an expiration time that is equal to or greater than this value.
If the update time is infinite, a broker transport shall attempt to negotiate message retention if possible. In this case the DataSetMetaData is only sent if the ConfigurationVersion of the corresponding DataSetMetaData is changed and DataSetWriters shall try to negotiate AtLeastOnce or ExactlyOnce delivery guarantees with the broker for any DataSetMetaData sent to ensure metadata is available to readers.
The DataSetWriterProperties settings apply also to DataSetMetaData sent to the queue named through the MetaDataQueueName parameter.
This Structure DataType is used to represent the broker-specific transport mapping parameters for DataSetWriters. It is a subtype of the DataSetWriterTransportDataType defined in 6.2.4.5.2.
The BrokerDataSetWriterTransportDataType is formally defined in Table 130.
Table 130 – BrokerDataSetWriterTransportDataType structure
Name |
Type |
Description |
BrokerDataSetWriterTransportDataType |
Structure |
Subtype of DataSetWriterTransportDataType defined in 6.2.4.5.2. |
QueueName |
String |
Defined in 6.4.2.5.1. |
ResourceUri |
String |
Defined in 6.4.2.5.2. |
AuthenticationProfileUri |
String |
Defined in 6.4.2.5.3. |
RequestedDeliveryGuarantee |
BrokerTransportQualityOfService |
Defined in 6.4.2.5.4. |
MetaDataQueueName |
String |
Defined in 6.4.2.5.5. |
MetaDataUpdateTime |
Duration |
Defined in 6.4.2.5.6. |
Its representation in the AddressSpace is defined in Table 131.
Table 131 – BrokerDataSetWriterTransportDataType definition
Attributes |
Value |
BrowseName |
BrokerDataSetWriterTransportDataType |
IsAbstract |
False |
Subtype of DataSetWriterTransportDataType defined in 6.2.4.5.2. |
|
Conformance Units |
|
PubSub Parameters Broker |
The QueueName parameter with DataType String specifies the queue in the Broker where the DataSetReader can receive NetworkMessages with the DataSet of interest sent by the Publisher. This could be the name of a queue or topic defined in the Broker.
The ResourceUri property of DataType String allows the transport implementation to look up the configured key from the corresponding KeyCredentialConfigurationType instance defined in OPC 10000-12 to use for authenticating access to the specified queue.
If this String is not null or empty, it overrides the ResourceUri of the PubSubConnection authentication settings.
The parameter AuthenticationProfileUri of DataType String allows the selection of the authentication protocol used by the transport implementation for authenticating access to the specified queue.
If this String is not null or empty, it overrides the AuthenticationProfileUri of the PubSubConnection transport settings defined in 6.4.2.2.2.
The RequestedDeliveryGuarantee parameter with DataType BrokerTransportQualityOfService specifies the delivery guarantees the DataSetReader negotiates with the broker for all messages received. The DataType BrokerTransportQualityOfService is defined in 6.4.2.1.
The value NotSpecified is not allowed on the DataSetReader. If the selected delivery guarantee cannot be applied, the DataSetReader shall set the state to Error.
The parameter MetaDataQueueName with the DataType String specifies the Broker queue that provides messages with DataSetMetaData sent by the Publisher for the DataSet of interest. This could be the name of a queue or topic defined in the Broker.
This Structure DataType is used to represent the broker-specific transport mapping parameters for DataSetReaders. It is a subtype of the DataSetReaderTransportDataType defined in 6.2.9.13.2.
The BrokerDataSetReaderTransportDataType is formally defined in Table 132.
Table 132 – BrokerDataSetReaderTransportDataType structure
Name |
Type |
Description |
BrokerDataSetReaderTransportDataType |
Structure |
Subtype of DataSetReaderTransportDataType defined in 6.2.9.13.2. |
QueueName |
String |
Defined in 6.4.2.6.1. |
ResourceUri |
String |
Defined in 6.4.2.6.2. |
AuthenticationProfileUri |
String |
Defined in 6.4.2.6.3. |
RequestedDeliveryGuarantee |
BrokerTransportQualityOfService |
Defined in 6.4.2.6.4. |
MetaDataQueueName |
String |
Defined in 6.4.2.6.5. |
Its representation in the AddressSpace is defined in Table 133.
Table 133 – BrokerDataSetReaderTransportDataType definition
Attributes |
Value |
BrowseName |
BrokerDataSetReaderTransportDataType |
IsAbstract |
False |
Subtype of DataSetReaderTransportDataType defined in 6.2.9.13.2. |
|
Conformance Units |
|
PubSub Parameters Broker |