The DataSetWriterIdwith DataType UInt16defines the unique ID of the DataSetWriterfor a PublishedDataSet. It is used to select DataSetMessagesfor aPublishedDataSeton the Subscriberside.

It shall be unique across all DataSetWritersfor a PublisherId.

All values, except for 0, are valid DataSetWriterIds. The value 0 is defined as null value.

The DataSetWriterIdshall be within the range 0x0001 - 0x7FFF for external assignment by configuration tools, and 0x8000 - 0xFFFF for internal assignment like through the Method CloseAndUpdateof thePubSubConfigurationType.

A DataSet field consists of a value and related metadata. In most cases the value comes with status and timestamp information.

This DataTypedefines flags to include DataSetfield related information like status and timestamp in addition to the value in the DataSetMessage. The parameter is ignored for heartbeat messages.

The DataSetFieldContentMaskis formally defined in Table 24.

The handling of bad status for different field representations is defined in Figure 23and Table 26.

Table 24– DataSetFieldContentMask Values

Value

Bit No.

Description

DataSetfields 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 RawDataflag is set, the fields are represented as RawDataand all other bits are ignored.

If one of the bits 0 to 4 is set, the fields are represented as DataValue.

StatusCode

0

The DataValuestructure field StatusCodeis included in the DataSetMessages.

If this flag is set, the fields are represented as DataValue.

SourceTimestamp

1

The DataValuestructure field SourceTimestampis included in the DataSetMessages.

If this flag is set, the fields are represented as DataValue.

ServerTimestamp

2

The DataValuestructure field ServerTimestampis included in the DataSetMessages.

If this flag is set, the fields are represented as DataValue.

SourcePicoSeconds

3

The DataValuestructure field SourcePicoSecondsis included in the DataSetMessages.

If this flag is set, the fields are represented as DataValue. This flag is ignored if the SourceTimestampflag is not set.

ServerPicoSeconds

4

The DataValuestructure field ServerPicoSecondsis included in the DataSetMessages.

If this flag is set, the fields are represented as DataValue. This flag is ignored if the ServerTimestampflag is not set.

RawData

5

If this flag is set, the fields of the DataSetare encoded without additional information like timestamp, status or DataTypeinformation. 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 DataSetFieldContentMaskrepresentation in the AddressSpaceis 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 DataSetFieldContentMaskdefines different options that influence the information flow from Publisherto Subscriberin the case of a Bad Value Status or other error situations. Figure 23depicts the parameters and the information flow from DataSetfield to DataSetMessagecreation on the Publisherside and the decoded DataSet field on the Subscriber side. The DataSetFieldContentMask controls the representation of the DataSet fields in a DataSetMessage.

image026.png

Figure 23– PubSub information flow dependency to field representation

The representation of the DataSetfields in a DataSetMessageon the Publisherside and the decoding back to the DataSetfields on the Subscriberside is defined in Table 26. The representation on the Publisherside 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 StatusCodeis used, the grouping into severity Good, Uncertainor Badis used. In this case, the resulting Statusmatches 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 KeyFrameCountwith DataType UInt32is the multiplier of the PublishingIntervalthat defines the maximum number of times the PublishingIntervalexpires before a key frame message with values for all published Variablesis sent. The delta frame DataSetMessagescontains just the changed values. If no changes exist, the delta frame DataSetMessageshall not be sent. If the KeyFrameCountis set to 1, every message contains a key frame.

For PublishedDataSetsthat provide cyclic updates of the DataSet, the value shall be greater than or equal to 1. PublishedDataItemsor custom sources with CyclicDataSetset to true provide cyclic updates.

For non-cyclic PublishedDataSetsthat provide acyclic event based DataSets, the value shall be 0.PublishedEventsor custom sources with CyclicDataSetset to false provide acyclic updates.

For a heartbeat DataSetMessage, the value shall be 1.

The DataSetWriterPropertiesparameter is an array of DataType KeyValuePairthat specifies additional properties for the configured DataSetWriter. The KeyValuePair DataTypeis defined in OPC 10000-5and consists of a QualifiedNameand 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 DataTypeis used to represent the DataSetWriterparameters. The DataSetWriterDataTypeis 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 DataSetWriteris used to create heartbeat DataSetMessages, the dataSetNameshall be null or empty.

DataSetWriterProperties

KeyValuePair[]

Defined in 6.2.4.4.

TransportSettings

DataSetWriterTransportDataType

Transport mapping specific DataSetWriterparameters. 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

DataSetMessagemapping specific DataSetWriterparameters. 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 DataTypeis an abstract base type for transport mapping specific DataSetWriterparameters. The abstract DataTypedoes not define fields.

The DataSetWriterTransportDataType Structurerepresentation in the AddressSpaceis 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 DataTypeis an abstract base type for message mapping specific DataSetWriterparameters. The abstract DataTypedoes not define fields.

The DataSetWriterMessageDataType Structurerepresentation in the AddressSpaceis 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