A DataSetMessage is produced by a DataSetWriter and contains list of name/value pairs which are specified by the PublishedDataSet associated with the DataSetWriter. The contents of the DataSetMessage are formally described by a DataSetMetaData Object. A DataSetMessage is a JSON object with the fields defined in Table 159.

A key frame DataSetMessage or an event based DataSetMessage contains name and value for all fields of the DataSet.

A delta frame DataSetMessage contains only name and value for the changed fields.

DataSetWriters may periodically provide keep-alive messages which are DataSetMessages without any Payload field.

Table 159 – JSON DataSetMessage definition

Name

Type

Description

DataSetWriterId

UInt16

An identifier for DataSetWriter which created the DataSetMessage.

This value is optional. The presence of the value depends on the setting in the JsonDataSetMessageContentMask.

It is unique within the scope of a Publisher.

DataSetWriterName

String

The name of the DataSetWriter which created the DataSetMessage.

The value is optional. The presence of the value depends on the setting in the JsonDataSetMessageContentMask.

SequenceNumber

UInt32

Sequence number, incremented by exactly one, assigned to the DataSetMessage by the DataSetWriter.

This value is optional. The presence of the value depends on the setting in the JsonDataSetMessageContentMask.

Subscribers shall discard the records they keep for sequence numbers if they do not receive messages with the expected SequenceNumber for two times the keep alive time to deal with Publishers or brokers that are out of service and were not able to continue from the last used SequenceNumber.

MetaDataVersion

ConfigurationVersionDataType

The version of the DataSetMetaData which describes the contents of the Payload.

This value is optional. The presence of the value depends on the setting in the JsonDataSetMessageContentMask.

Timestamp

DateTime

The time the DataSetMessage was created.

This value is optional. The presence of the value depends on the setting in the JsonDataSetMessageContentMask.

Status

StatusCode

The overall status of the DataSetMessage. The dependencies to the status of DataSet fields are defined in Table 26.

This value is optional. The presence of the value depends on the setting in the JsonDataSetMessageContentMask.

MessageType

String

Possible values are “ua-keyframe”, “ua-deltaframe”, “ua-event” and “ua-keepalive”. The presence of the value depends on the setting in the JsonDataSetMessageContentMask.

Payload

Object

A JSON object containing the name-value pairs specified by the PublishedDataSet.

The format of the value depends on the DataType of the field and the flags specified by the DataSetFieldContentMask.

All fields with a concrete DataType are encoded using reversible OPC UA JSON Data Encoding defined in OPC 10000-6.

The fields in the DataSetMessage are specified by the DataSetFieldContentMask in the DataSetWriter parameters.

The format of the field values in the Payload depend on the setting of the ReversibleFieldEncoding flag in the DataSetMessageContentMask.