Errata exists for this version of the document.
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.
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_0 or Paused_1. |
Operational_2 |
The PubSub component is operational. |
Error_3 |
The PubSub component is in an error state. |
Figure 19 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 19 – PubSub Component State Dependencies
Figure 20 describes the formal state machine with the possible transitions.
Figure 20 – 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_0 |
Paused_1 |
The component was successfully enabled but the parent component is in the state Disabled_0 or Paused_1. |
Disabled_0 |
Operational_2 |
The component was successfully enabled. |
Paused_1 |
Disabled_0 |
The component was successfully disabled. |
Paused_1 |
Operational_2 |
The state of the parent component changed to Operational_2. |
Operational_2 |
Disabled_0 |
The component was successfully disabled. |
Operational_2 |
Paused_1 |
The state of the parent component changed to Disabled_0 or Paused_1. |
Operational_2 |
Error_3 |
There is a pending error situation for the related PubSub component. |
Error_3 |
Disabled_0 |
The component was successfully disabled. |
Error_3 |
Paused_1 |
The state of the parent component changed to Disabled_0 or Paused_1. |
Error_3 |
Operational_2 |
The error situation was resolved for the related PubSub component. |
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.2.1.2.
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 3.
The DataTypeSchemaHeader provides OPC UA DataType definitions used in the DataSetMetaData. The DataTypeSchemaHeader is defined in A.1.1.
Table 3 – DataSetMetaDataType Structure
Name |
Type |
Description |
DataSetMetaDataType |
Structure |
|
name |
String |
Name of the DataSet. |
description |
LocalizedText |
Description of the DataSet. The default value is a null LocalizedText. |
fields |
FieldMetaData[] |
The metadata for the fields in the DataSet. The FieldMetaData DataType is defined in 6.2.2.1.3. |
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 4.
Table 4 – DataSetMetaDataType Definition
Attributes |
Value |
BrowseName |
DataSetMetaDataType |
IsAbstract |
False |
Subtype of DataTypeSchemaHeader defined in A.1.1. |
This Structure DataType is used to provide the metadata for a field in a DataSet. The FieldMetaData is formally defined in Table 5.
Table 5 – 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 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 must 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.3.1. (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. 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. |
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. |
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 if valueRank ≤ 0. The maximum number of elements of an array transferred on the wire is 2147483647 (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 or ByteString then this field specifies the maximum supported length. If the maximum is unknown the value shall be 0. If the dataType field is not a String 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. 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. |
This DataType defines flags for DataSet fields.
The DataSetFieldFlags is formally defined in Table 6.
Table 6 – 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 7.
Table 7 – DataSetFieldFlags Definition
Attributes |
Value |
||
BrowseName |
DataSetFieldFlags |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
DataType |
Subtype of UInt16 defined in OPC 10000-5. |
|||
HasProperty |
Variable |
OptionSetValues |
LocalizedText [ ] |
This Structure DataType is used to indicate configuration changes in the information published for a DataSet. The ConfigurationVersionDataType is formally defined in Table 8.
Table 8 – 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 has to 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 specification. |
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 version is updated, the MinorVersion is updated to the same value as MajorVersion. |
DataSetMetaData may be specific to a single Publisher and a single selection of information or universal e.g. defined by a standard organisation 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 array of KeyValuePair Structures.
This Structure DataType represents the PublishedDataSet parameters. The PublishedDataSetDataType is formally defined in Table 9.
Table 9 – PublishedDataSetDataType Structure
Name |
Type |
Description |
PublishedDataSetDataType |
Structure |
|
name |
String |
Name of the PublishedDataSet. 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 String array. |
dataSetMetaData |
DataSetMetaDataType |
Defined in 6.2.2.1. |
extensionFields |
KeyValuePair[] |
Defined in 6.2.2.3. |
dataSetSource |
PublishedDataSetSourceDataType |
Defined in 6.2.2.5. |
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 10.
Table 10 – PublishedDataSetSourceDataType Definition
Attributes |
Value |
|||
BrowseName |
PublishedDataSetSourceDataType |
|||
IsAbstract |
True |
|||
References |
NodeClass |
BrowseName |
IsAbstract |
Description |
Subtype of Structure defined in OPC 10000-5. |
||||
HasSubtype |
DataType |
PublishedDataItemsDataType |
FALSE |
Defined in 6.2.2.6.2. |
HasSubtype |
DataType |
PublishedEventsDataType |
FALSE |
Defined in 6.2.2.7.4. |
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.
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.
The DataType PublishedVariableDataType represents the configuration information for one Variable. The PublishedVariableDataType is formally defined in Table 11.
Table 11 – 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_0 No Deadband calculation should be applied. Absolute_1 AbsoluteDeadband (This type is specified in OPC 10000-4) Percent_2 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 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 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.10. |
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. |
This Structure DataType is used to represent PublishedDataItems specific parameters. It is a subtype of the PublishedDataSetSourceDataType defined in 6.2.2.5.
The PublishedDataItemsDataType is formally defined in Table 12.
Table 12 – PublishedDataItemsDataType Structure
Name |
Type |
Description |
PublishedDataItemsDataType |
Structure |
|
publishedData |
PublishedVariableDataType[] |
Defined in 6.2.2.6.1. |
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.2.1.5.
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.2.5.
The PublishedEventsDataType is formally defined in Table 13.
Table 13 – PublishedEventsDataType Structure
Name |
Type |
Description |
PublishedEventsDataType |
Structure |
|
eventNotifier |
NodeId |
Defined in 6.2.2.7.1. |
selectedFields |
SimpleAttributeOperand[] |
Defined in 6.2.2.7.2. |
filter |
ContentFilter |
Defined in 6.2.2.7.3. |
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.
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 DataSetFieldContentMask is formally defined in Table 14.
The handling of bad status for different field representations is defined in Figure 21 and Table 16.
Table 14 – 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 values of the DataSet are encoded as Structure and all other field related flags shall be ignored. The RawData representation is handled like a Structure DataType where the DataSet fields are handled like Structure fields and fields with Structure DataType are handled like nested structures. All restrictions for the encoding of Structure DataTypes also apply to the RawData Field Encoding. Fields shall not have an abstract DataType or shall have a fixed ValueRank. Fields shall have dimensions defined if the DataType is String or ByteString or if it is an array. This includes Structure fields with such fields. The flag shall be ignored and the fields shall be represented as Variant if the fields do not fulfil these requirements. |
The DataSetFieldContentMask representation in the AddressSpace is defined in Table 15.
Table 15 – DataSetFieldContentMask Definition
Attributes |
Value |
||
BrowseName |
DataSetFieldContentMask |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
DataType |
Subtype of UInt32 defined in OPC 10000-5. |
|||
HasProperty |
Variable |
OptionSetValues |
LocalizedText [ ] |
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 21 depicts the parameters and the information flow from DataSet field to DataSetMessage creation on Publisher side and the decoded DataSet field on the Subscriber side. The DataSetFieldContentMask controls the representation of the DataSet fields in a DataSetMessage.
Figure 21 – 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 16. The representation on the Publisher side depends on the field representation defined in the DataSetFieldContentMask.
Table 16 – DataSetMessage field representation options
DataSet Publisher |
Field |
DataSetMessage |
DataSet Subscriber |
|||
Value |
Status(4) |
|
Value |
Status(4) |
Value |
Status(4) |
Value 1 |
Good_* |
Variant |
Value 1 |
N/A (1) |
Value 1 |
N/A (1) |
Value 1 |
Uncertain_* |
|
Value 1 |
|
Value 1 |
|
Null |
Bad_* |
|
Bad_* (1) |
|
Null |
Bad_* |
Value 1 |
Good_* |
DataValue |
Value 1 |
Good_* |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
|
Value 1 |
Uncertain_* |
Value 1 |
Uncertain_* |
Null |
Bad_* |
|
Null |
Bad_* |
Null |
Bad_* |
Value 1 |
Good_* |
RawData |
Value 1 |
N/A |
Value 1 |
N/A |
Value 1 |
Uncertain_* |
|
Value 1(2) |
|
Value 1 |
|
Null |
Bad_* |
|
DefaultValue(3) |
|
DefaultValue |
|
Note 1: A bad status is transferred instead of a value. An uncertain status is not transferred for a field. If the status field is included in the DataSetMessage header, the status is set to uncertain if one of the fields has an uncertain status. Note 2: If the worst status for one or more fields is uncertain, the DataSetMessage status shall be set to Uncertain. Note 3: If the worst status for one or more fields is bad, the DataSetMessage status shall be set to Bad. Note 4: 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. |
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 like PublishedDataItems that provide cyclic updates of the DataSet, the value shall be greater or equal to 1. For non-cyclic PublishedDataSets, like PublishedEvents, that provide event based DataSets, the value shall be 0.
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 specification or vendor specific extensions.
This Structure DataType is used to represent the DataSetWriter parameters. The DataSetWriterDataType is formally defined in Table 17.
Table 17 – DataSetWriterDataType Structure
Name |
Type |
Description |
DataSetWriterDataType |
Structure |
|
name |
String |
The name of the DataSetWriter. |
enabled |
Boolean |
The enabled state of the DataSetWriter. |
dataSetWriterId |
UInt16 |
Defined in 6.2.3.1. |
dataSetFieldContentMask |
DataSetFieldContentMask |
Defined in 6.2.3.2. |
keyFrameCount |
UInt32 |
Defined in 6.2.3.3. |
dataSetName |
String |
The name of the corresponding PublishedDataSet. |
dataSetWriterProperties |
KeyValuePair[] |
Defined in 6.2.3.4. |
transportSettings |
DataSetWriterTransportDataType |
Transport mapping specific DataSetWriter parameters. The abstract base type is defined in 6.2.3.5.2. The concrete subtypes are defined in the sections for transport mapping specific parameters. |
messageSettings |
DataSetWriterMessageDataType |
DataSetMessage mapping specific DataSetWriter parameters. The abstract base type is defined in 6.2.3.5.3. The concrete subtypes are defined in the sections for message mapping specific parameters. |
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 18.
Table 18 – DataSetWriterTransportDataType Definition
Attributes |
Value |
|||
BrowseName |
DataSetWriterTransportDataType |
|||
IsAbstract |
True |
|||
References |
NodeClass |
BrowseName |
IsAbstract |
Description |
Subtype of Structure defined in OPC 10000-5. |
||||
HasSubtype |
DataType |
BrokerDataSetWriterTransportDataType |
FALSE |
Defined in 6.4.2.3.7. |
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 19.
Table 19 – DataSetWriterMessageDataType Structure
Attributes |
Value |
|||
BrowseName |
DataSetWriterMessageDataType |
|||
IsAbstract |
True |
|||
References |
NodeClass |
BrowseName |
IsAbstract |
Description |
Subtype of Structure defined in OPC 10000-5. |
||||
HasSubtype |
DataType |
UadpDataSetWriterMessageDataType |
FALSE |
Defined in 6.3.1.2.6. |
HasSubtype |
DataType |
JsonDataSetWriterMessageDataType |
FALSE |
Defined in 6.3.2.2.2. |
The parameters are shared between WriterGroup and ReaderGroup.
The parameters are related to PubSub NetworkMessage security. See 5.4.3 for an introduction of PubSub security and 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_1.
If the SecurityMode is not NONE_1 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_1.
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 support multiple transport profiles and/or may have multiple redundant instances. The UserTokenPolicies in each Endpoint specify what user credentials are required. OPC 10000-4 describes UserTokenPolicies in more detail.
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 1: 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 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 specification or vendor specific extensions.
This Structure DataType is an abstract base type for PubSubGroups. The PubSubGroupDataType is formally defined in Table 20.
Table 20 – PubSubGroupDataType Structure
Name |
Type |
Description |
PubSubGroupDataType |
Structure |
|
name |
String |
The name of the PubSubGroup. |
enabled |
Boolean |
The enabled state of the PubSubGroup. |
securityMode |
MessageSecurityMode |
Defined in 6.2.4.2. |
securityGroupId |
String |
Defined in 6.2.4.3. |
securityKeyServices |
EndpointDescription[] |
Defined in 6.2.4.4. |
maxNetworkMessageSize |
UInt32 |
Defined in 6.2.4.5. |
groupProperties |
KeyValuePair[] |
Defined in 6.2.4.6. |
The PubSubGroupDataType Structure representation in the AddressSpace is defined in Table 21.
Table 21 – PubSubGroupDataType Definition
Attributes |
Value |
|||
BrowseName |
PubSubGroupDataType |
|||
IsAbstract |
True |
|||
References |
NodeClass |
BrowseName |
IsAbstract |
Description |
Subtype of Structure defined in OPC 10000-5. |
||||
HasSubtype |
DataType |
WriterGroupDataType |
FALSE |
Defined in 6.2.5.6.1. |
HasSubtype |
DataType |
ReaderGroupDataType |
FALSE |
Defined in 6.2.7.2.1. |
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 PublishingInterval with the DataType Duration defines the interval in milliseconds for publishing NetworkMessages and the embedded DataSetMessages created by the related DataSetWriters.
In the case of 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 into the buffer.
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.
This Structure DataType is used to represent the configuration parameters for WriterGroups. It is a subtype of PubSubGroupDataType defined in 0.
The WriterGroupDataType is formally defined in Table 22.
Table 22 – WriterGroupDataType Structure
Name |
Type |
Description |
WriterGroupDataType |
Structure |
|
writerGroupId |
UInt16 |
Defined in 6.2.5.1. |
publishingInterval |
Duration |
Defined in 6.2.5.2. |
keepAliveTime |
Duration |
Defined in 6.2.5.3. |
priority |
Byte |
Defined in 6.2.5.4. |
localeIds |
LocaleId[] |
Defined in 6.2.5.5. |
headerLayoutUri |
String |
|
transportSettings |
WriterGroupTransportDataType |
Transport mapping specific WriterGroup parameters. The abstract base type is defined in 6.2.5.6.2. The concrete subtypes are defined in the sections for transport mapping specific parameters. |
messageSettings |
WriterGroupMessageDataType |
NetworkMessage mapping specific WriterGroup parameters. The abstract base type is defined in 6.2.5.6.3. The concrete subtypes are defined in the sections for message mapping specific parameters. |
dataSetWriters |
DataSetWriterDataType[] |
The DataSetWriters contained in the WriterGroup. The DataSetWriter parameters are defined in 6.2.3. |
The WriterGroupDataType Structure representation in the AddressSpace is defined in Table 23.
Table 23 – WriterGroupDataType Definition
Attributes |
Value |
||
BrowseName |
WriterGroupDataType |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of PubSubGroupDataType defined in 0. |
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 24.
Table 24 – WriterGroupTransportDataType Definition
Attributes |
Value |
|||
BrowseName |
WriterGroupTransportDataType |
|||
IsAbstract |
True |
|||
References |
NodeClass |
BrowseName |
IsAbstract |
Description |
Subtype of Structure defined in OPC 10000-5. |
||||
HasSubtype |
DataType |
DatagramWriterGroupTransportDataType |
FALSE |
Defined in 6.4.1.2.3. |
HasSubtype |
DataType |
BrokerWriterGroupTransportDataType |
FALSE |
Defined in 6.4.2.2.6. |
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 25.
Table 25 – WriterGroupMessageDataType Structure
Attributes |
Value |
|||
BrowseName |
WriterGroupMessageDataType |
|||
IsAbstract |
True |
|||
References |
NodeClass |
BrowseName |
IsAbstract |
Description |
Subtype of Structure defined in OPC 10000-5. |
||||
HasSubtype |
DataType |
UadpWriterGroupMessageDataType |
FALSE |
Defined in 6.3.1.1.7. |
HasSubtype |
DataType |
JsonWriterGroupMessageDataType |
FALSE |
Defined in 6.3.2.1.2. |
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.
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.6.5.3.
The ConnectionProperties parameter is an array of DataType KeyValuePair 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, future versions of this specification or vendor specific extensions.
This Structure DataType is used to represent the configuration parameters for PubSubConnections. The PubSubConnectionDataType is formally defined in Table 26.
Table 26 – PubSubConnectionDataType Structure
Name |
Type |
Description |
PubSubConnectionDataType |
Structure |
|
name |
String |
The name of the PubSubConnection. |
enabled |
Boolean |
The enabled state of the PubSubConnection. |
publisherId |
BaseDataType |
Defined in 6.2.6.1. |
transportProfileUri |
String |
Defined in 6.2.6.2. |
address |
NetworkAddressDataType |
Defined in 6.2.6.3. The NetworkAddressDataType is defined in 6.2.6.5.3. |
connectionProperties |
KeyValuePair[] |
Defined in 6.2.6.4. |
transportSettings |
ConnectionTransportDataType |
Transport mapping specific PubSubConnection parameters. The abstract base type is defined in 6.2.6.5.2. The concrete subtypes are defined in the sections for transport mapping specific parameters. |
writerGroups |
WriterGroupDataType[] |
The WriterGroups contained in the PubSubConnection. The WriterGroup is defined in 6.2.5. |
readerGroups |
ReaderGroupDataType[] |
The ReaderGroups contained in the PubSubConnection. The ReaderGroup is defined in 6.2.7. |
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 27.
Table 27 – ConnectionTransportDataType Definition
Attributes |
Value |
||
BrowseName |
ConnectionTransportDataType |
||
IsAbstract |
True |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of Structure defined in OPC 10000-5. |
Subtypes of this abstract Structure DataType are used to represent network address information. The NetworkAddressDataType is formally defined in Table 28.
Table 28 – NetworkAddressDataType Structure
Name |
Type |
Description |
NetworkAddressDataType |
Structure |
|
networkInterface |
String |
The name of the network interface used for the communication relation. |
The NetworkAddressDataType Structure representation in the AddressSpace is defined in Table 29.
Table 29 – NetworkAddressDataType Definition
Attributes |
Value |
|||
BrowseName |
NetworkAddressDataType |
|||
IsAbstract |
True |
|||
References |
NodeClass |
BrowseName |
IsAbstract |
Description |
Subtype of Structure defined in OPC 10000-5. |
||||
HasSubtype |
DataType |
NetworkAddressUrlDataType |
False |
Defined in 6.2.6.5.4. |
This Structure DataType is used to represent network address information in the form of an URL String. The NetworkAddressUrlDataType is formally defined in Table 30.
Table 30 – NetworkAddressUrlDataType Structure
Name |
Type |
Description |
NetworkAddressUrlDataType |
Structure |
|
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 31.
Table 31 – NetworkAddressUrlDataType Definition
Attributes |
Value |
||
BrowseName |
NetworkAddressUrlDataType |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of NetworkAddressDataType defined in 6.2.6.5.3. |
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 32.
Table 32 – ReaderGroupDataType Structure
Name |
Type |
Description |
ReaderGroupDataType |
Structure |
|
transportSettings |
ReaderGroupTransportDataType |
Transport mapping specific ReaderGroup parameters. The abstract base type is defined in 6.2.7.2.2. The concrete subtypes are defined in the sections for transport mapping specific parameters. |
messageSettings |
ReaderGroupMessageDataType |
NetworkMessage mapping specific ReaderGroup parameters. The abstract base type is defined in 6.2.7.2.3. The concrete subtypes are defined in the sections for message mapping specific parameters. |
dataSetReaders |
DataSetReaderDataType[] |
The DataSetReaders contained in the ReaderGroup. The DataSetReader is defined in 6.2.8. |
The ReaderGroupDataType Structure representation in the AddressSpace is defined in Table 33.
Table 33 – ReaderGroupDataType Definition
Attributes |
Value |
||
BrowseName |
ReaderGroupDataType |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of PubSubGroupDataType defined in 0. |
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 34.
Table 34 – ReaderGroupTransportDataType Definition
Attributes |
Value |
||
BrowseName |
ReaderGroupTransportDataType |
||
IsAbstract |
True |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of Structure defined in OPC 10000-5. |
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 35.
Table 35 – ReaderGroupMessageDataType Structure
Attributes |
Value |
||
BrowseName |
ReaderGroupMessageDataType |
||
IsAbstract |
True |
||
References |
NodeClass |
BrowseName |
IsAbstract |
Subtype of Structure defined in OPC 10000-5. |
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_3. The related PublishedDataSet is defined in 6.2.2. The DataSetMetaDataType is defined in 6.2.2.1.2. The options for retrieving the update of the DataSetMetaData are described in 5.2.3.
The parameter DataSetFieldContentMask with DataType DataSetFieldContentMask indicates the fields of a DataValue included in the DataSetMessages.
The DataSetFieldContentMask DataType is defined in 6.2.3.2.
The parameter MessageReceiveTimeout is the maximum acceptable time between two DataSetMessages. If there is no DataSetMessage received within this period, the DataSetReader State shall be changed to Error_3 until the next DataSetMessage is received. The DataSetMessages can be data or keep alive messages.
The MessageReceiveTimeout is related to the Publisher side parameters PublishingInterval, KeepAliveTime and KeyFrameCount.
The parameter is defined in 6.2.4.2.
This parameter overwrites the corresponding setting on the ReaderGroup if the value is not INVALID_0.
The parameter is defined in 6.2.4.3.
The parameter shall be null if the SecurityMode is INVALID_0.
The parameter is defined in 6.2.4.4.
The parameter shall be null if the SecurityMode is INVALID_0.
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 specification or vendor specific extensions.
This Structure DataType is used to represent the DataSetReader parameters. The DataSetReaderDataType is formally defined in Table 36.
Table 36 – DataSetReaderDataType Structure
Name |
Type |
Description |
DataSetReaderDataType |
Structure |
|
name |
String |
The name of the DataSetReader. |
enabled |
Boolean |
The enabled state of the DataSetReader. |
publisherId |
BaseDataType |
Defined in 6.2.8.1. |
writerGroupId |
UInt16 |
Defined in 6.2.8.2. |
dataSetWriterId |
UInt16 |
Defined in 6.2.8.3. |
dataSetMetaData |
DataSetMetaDataType |
Defined in 6.2.8.4. |
dataSetFieldContentMask |
DataSetFieldContentMask |
Defined in 6.2.8.5. |
messageReceiveTimeout |
Duration |
Defined in 6.2.8.6. |
keyFrameCount |
UInt32 |
|
headerLayoutUri |
String |
|
securityMode |
MessageSecurityMode |
Defined in 6.2.8.7. |
securityGroupId |
String |
Defined in 6.2.8.8. |
securityKeyServices |
EndpointDescription[] |
Defined in 6.2.8.9. |
dataSetReaderProperties |
KeyValuePair[] |
Defined in 6.2.8.10. |
transportSettings |
DataSetReaderTransportDataType |
Transport specific DataSetReader parameters. The abstract base type is defined in 6.2.8.11.2. The concrete subtypes are defined in the sections for transport mapping specific parameters |
messageSettings |
DataSetReaderMessageDataType |
DataSetMessage mapping specific DataSetReader parameters. The abstract base type is defined in 6.2.8.11.3. The concrete subtypes are defined in the sections for message mapping specific parameters. |
subscribedDataSet |
SubscribedDataSetDataType |
The SubscribedDataSet specific parameters. The abstract base type and the concrete subtypes are defined 6.2.9. |
This Structure DataType is an abstract base type for transport specific DataSetReader parameters. The DataSetReaderTransportDataType is formally defined in Table 37.
Table 37 – DataSetReaderTransportDataType Structure
Name |
Type |
Description |
DataSetReaderTransportDataType |
Structure |
|
The DataSetReaderTransportDataType Structure representation in the AddressSpace is defined in Table 38.
Table 38 – DataSetReaderTransportDataType Definition
Attributes |
Value |
|||
BrowseName |
DataSetReaderTransportDataType |
|||
IsAbstract |
True |
|||
References |
NodeClass |
BrowseName |
IsAbstract |
Description |
Subtype of Structure defined in OPC 10000-5. |
||||
HasSubtype |
DataType |
BrokerDataSetReaderTransportDataType |
FALSE |
Defined in 6.4.2.4.6. |
This Structure DataType is an abstract base type for message mapping specific DataSetReader parameters. The DataSetReaderMessageDataType is formally defined in Table 39.
Table 39 – DataSetReaderMessageDataType Structure
Name |
Type |
Description |
DataSetReaderMessageDataType |
Structure |
|
The DataSetReaderMessageDataType Structure representation in the AddressSpace is defined in Table 40.
Table 40 – DataSetReaderMessageDataType Definition
Attributes |
Value |
|||
BrowseName |
DataSetReaderMessageDataType |
|||
IsAbstract |
True |
|||
References |
NodeClass |
BrowseName |
IsAbstract |
Description |
Subtype of Structure defined in OPC 10000-5. |
||||
HasSubtype |
DataType |
UadpDataSetReaderMessageDataType |
FALSE |
Defined in 6.3.1.3.10. |
HasSubtype |
DataType |
JsonDataSetReaderMessageDataType |
FALSE |
Defined in 6.3.2.3.3. |
This Structure DataType is an abstract base type for SubscribedDataSet parameters. The SubscribedDataSetDataType is formally defined in Table 41.
Table 41 – SubscribedDataSetDataType Structure
Name |
Type |
Description |
SubscribedDataSetDataType |
Structure |
|
The SubscribedDataSetDataType Structure representation in the AddressSpace is defined in Table 42.
Table 42 – SubscribedDataSetDataType Definition
Attributes |
Value |
|||
BrowseName |
SubscribedDataSetDataType |
|||
IsAbstract |
True |
|||
References |
NodeClass |
BrowseName |
IsAbstract |
Description |
Subtype of Structure defined in OPC 10000-5. |
||||
HasSubtype |
DataType |
TargetVariablesDataType |
FALSE |
Defined in 6.2.9.2.2. |
HasSubtype |
DataType |
SubscribedDataSetMirrorDataType |
FALSE |
Defined in 6.2.9.3.3. |
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.9.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.9.1.
The TargetVariablesDataType is formally defined in Table 43.
Table 43 – TargetVariablesDataType Structure
Name |
Type |
Description |
TargetVariablesDataType |
Structure |
|
targetVariables |
FieldTargetDataType[] |
Defined in 6.2.9.2.1. |
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 44.
Table 44 – 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. |
targetNodeId |
NodeId |
The NodeId of the Variable where to write the received DataSetMessage field value to. |
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_2 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.10. The OverrideValueHandling enumeration DataType is defined in 6.2.9.2.4. |
overrideValue |
Variant |
This value is used if the OverrideValueHandling is set to OverrideValue_2 and the State of the DataSetReader is not Operational_2 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.10. |
The OverrideValueHandling is an enumeration that specifies the possible options for the handling of Override values. The possible enumeration values are described in Table 45.
Table 45 – OverrideValueHandling Values
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 useable 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. |
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.9.1.
The SubscribedDataSetMirrorDataType is formally defined in Table 46.
Table 46 – SubscribedDataSetMirrorDataType Structure
Name |
Type |
Description |
SubscribedDataSetMirrorDataType |
Structure |
|
parentNodeName |
String |
Defined in 6.2.9.3.1. |
rolePermissions |
RolePermissionType[] |
Defined in 6.2.9.3.2. |
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 22 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.3.1 together with the DataSetFieldContentMask.
Figure 22 – 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 47.
Table 47 – Source to message input mapping
Source |
Substitute Value |
DataSet Publisher side |
||
Value |
Status(1) |
|
Value |
Status(1) |
Value 1 |
Good_* |
Value 2 |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
|
Value 1 |
Uncertain_* |
Null |
Bad_* |
|
Value 2 |
Uncertain_SubstituteValue |
Value 1 |
Good_* |
Null |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
|
Value 1 |
Uncertain_* |
Null |
Bad_* |
|
Null |
Bad_* |
Note 1: 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. |
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 48.
Table 48 – Message output to target mapping
Decoded DataSet Subscriber |
Override Value Handling Enum |
Override Value |
Reader State |
Target |
||
Value |
Status(1) |
|
|
|
Value |
Status(1) |
Value 1 |
Good_* |
OverrideValue_2 |
Value 2 |
Operational_2 |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
OverrideValue_2 |
Value 2 |
Operational_2 |
Value 1 |
Uncertain_* |
Null |
Bad_* |
OverrideValue_2 |
Value 2 |
Operational_2 |
Value 2 |
Good_LocalOverride |
Value 1 |
Good_* |
LastUsableValue_1 |
Null |
Operational_2 |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
LastUsableValue_1 |
Null |
Operational_2 |
Value 1 |
Uncertain_* |
Null |
Bad_* |
LastUsableValue_1 |
Null |
Operational_2 |
LastValue(2) |
Uncertain_LastUsableValue |
Value 1 |
Good_* |
Disabled_0 |
Null |
Operational_2 |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
Disabled_0 |
Null |
Operational_2 |
Value 1 |
Uncertain_* |
Null |
Bad_* |
Disabled_0 |
Null |
Operational_2 |
Null |
Bad_* |
No message received. The target values are updated once after a reader state change. |
OverrideValue_2 |
Value 2 |
Diabled_0 Paused_1 |
Value 2 |
Good_LocalOverride |
|
|
LastUsableValue_1 |
Null |
Diabled_0 Paused_1 |
LastValue(2) |
Uncertain_LastUsableValue |
|
|
Disabled_0 |
Null |
Diabled_0 Paused_1 |
Null |
Bad_OutOfService |
|
|
OverrideValue_2 |
Value 2 |
Error_3 |
Value 2 |
Good_LocalOverride |
|
|
LastUsableValue_1 |
Null |
Error_3 |
LastValue(2) |
Uncertain_LastUsableValue |
|
|
Disabled_0 |
Null |
Error_3 |
Null |
Bad_NoCommunication |
|
Note 1: 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. Note 2: 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. |
This Structure DataType is used to represent the PubSub configuration of an OPC UA Application. The PubSubConfigurationDataType is formally defined in Table 49.
Table 49 – PubSubConfigurationDataType Structure
Name |
Type |
Description |
PubSubConfigurationDataType |
Structure |
|
publishedDataSets |
PublishedDataSetDataType[] |
The PublishedDataSets contained in the configuration. The PublishedDataSet is defined in 6.2.2. |
connections |
PubSubConnectionDataType[] |
The PubSubConnections contained in the configuration. The PubSubConnection is defined in 6.2.6. The connection includes WriterGroups and ReaderGroups. |
enabled |
Boolean |
The enabled state of the PubSub configuration. |
If the PubSub configuration is stored in a file, the UABinaryFileDataType and the related definitions in A.2 shall be used to encode the file content. The values of the UABinaryFileDataType structure are described in Table 50.
Table 50 – PubSubConfiguration File Content
Field |
Type |
Value |
namespaces |
String[] |
null The DataTypes used for configuration are defined in the OPC UA namespace. |
structureDataTypes |
StructureDescription[] |
null DataTypes used for configuration are defined by OPC UA. |
enumDataTypes |
EnumDescription[] |
null DataTypes used for configuration are defined by OPC UA. |
simpleDataTypes |
SimpleTypeDescription[] |
null DataTypes used for configuration are defined by OPC UA. |
schemaLocation |
String |
null |
fileHeader |
KeyValuePair[] |
null |
body |
BaseDataType |
PubSubConfigurationDataType Structure The PubSub configuration represented by the PubSubConfigurationDataType. |