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 DataSetFieldContentMaskis formally defined in Table 14.

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

Table 14– 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 values of the DataSetare encoded as Structureand all other field related flags shall be ignored.

The RawDatarepresentation is handled like a Structure DataTypewhere the DataSetfields are handled like Structurefields and fields with Structure DataTypeare handled like nested structures. All restrictions for the encoding of Structure DataTypesalso 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 DataTypeis Stringor ByteStringor if it is an array. This includes Structurefields with such fields. The flag shall be ignored and the fields shall be represented as Variantif the fields do not fulfil these requirements.

The DataSetFieldContentMaskrepresentation in the AddressSpaceis 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 DataSetFieldContentMaskdefines different options that influence the information flow from Publisherto Subscriberin the case of a Bad Value Status or other error situations. Figure 21depicts the parameters and the information flow from DataSetfield to DataSetMessagecreation on Publisherside and the decoded DataSet field on the Subscriber side. The DataSetFieldContentMask controls the representation of the DataSet fields in a DataSetMessage.

image024.png

Figure 21– 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 16. The representation on the Publisherside 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 DataSetMessageheader, 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 DataSetMessagestatus shall be set to Uncertain.

Note 3: If the worst status for one or more fields is bad, the DataSetMessagestatus shall be set to Bad.

Note 4: If no specific StatusCodeis used, the grouping into severity Good, Uncertainor Badis used. In this case, the resulting Statusmatches the input Status.