Errata exists for this version of the document.
Figure 43 depicts the ObjectType for the PubSub DataSetReader model and its components and the relations to other parts of the model.
Figure 43 – DataSet Reader Model Overview
This ObjectType defines receiving behaviour of DataSetMessages and the decoding to DataSets. The DataSetReaderType is formally defined in Table 105.
The SubscribedDataSetType defined in 9.1.9.1 describes the processing of the received DataSet in a Subscriber.
Table 126 – DataSetReaderType Definition
Attribute |
Value |
||||
BrowseName |
DataSetReaderType |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Modelling Rule |
Subtype of BaseObjectType defined in Part 5 |
|||||
HasProperty |
Variable |
PublisherId |
BaseDataType |
PropertyType |
Mandatory |
HasProperty |
Variable |
WriterGroupId |
UInt16 |
PropertyType |
Mandatory |
HasProperty |
Variable |
DataSetWriterId |
UInt16 |
PropertyType |
Mandatory |
HasProperty |
Variable |
DataSetMetaData |
DataSetMetaDataType |
PropertyType |
Mandatory |
HasProperty |
Variable |
DataSetFieldContentMask |
DataSetFieldContentMask |
PropertyType |
Mandatory |
HasProperty |
Variable |
MessageReceiveTimeout |
Duration |
PropertyType |
Mandatory |
HasProperty |
Variable |
KeyFrameCount |
UInt32 |
PropertyType |
Mandatory |
HasProperty |
Variable |
HeaderLayoutUri |
String |
PropertyType |
Mandatory |
HasProperty |
Variable |
SecurityMode |
MessageSecurityMode |
PropertyType |
Optional |
HasProperty |
Variable |
SecurityGroupId |
String |
PropertyType |
Optional |
HasProperty |
Variable |
SecurityKeyServices |
EndpointDescription[] |
PropertyType |
Optional |
HasProperty |
Variable |
DataSetReaderProperties |
KeyValuePair[] |
PropertyType |
Mandatory |
HasComponent |
Object |
TransportSettings |
|
DataSetReaderTransportType |
Optional |
HasComponent |
Object |
MessageSettings |
|
DataSetReaderMessageType |
Optional |
HasComponent |
Object |
Status |
|
PubSubStatusType |
Mandatory |
HasComponent |
Object |
Diagnostics |
|
PubSubDiagnosticsDataSetReaderType |
Optional |
HasComponent |
Object |
SubscribedDataSet |
|
SubscribedDataSetType |
Mandatory |
HasComponent |
Method |
CreateTargetVariables |
Defined in 9.1.8.5. |
Optional |
|
HasComponent |
Method |
CreateDataSetMirror |
Defined in 9.1.8.6. |
Optional |
The Properties PublisherId, WriterGroupId, DataSetWriterId and DataSetClassId define filters for received NetworkMessages. If the value of the Property is set, it is used as filter and all messages that do not match the filter are dropped.
The PublisherId is defined in 6.2.8.1.
The WriterGroupId is defined in 6.2.8.2.
The DataSetWriterId is defined in 6.2.8.3.
The DataSetMetaData is defined in 6.2.8.4. If the DataSetReader receives an updated DataSetMetaData, the DataSetReader shall update the Property DataSetMetaData.
The DataSetFieldContentMask is defined in 6.2.8.5.
The MessageReceiveTimeout is defined in 6.2.8.6.
The SecurityMode is defined in 6.2.8.7. If present or if the value is not INVALID_0, it overwrites the settings on the group.
The SecurityGroupId is defined in 6.2.8.8.
The SecurityKeyServices is defined in 6.2.8.9.
The DataSetReaderProperties is defined in 6.2.8.10.
The transport protocol mapping specific setting settings are provided in the optional Object TransportSettings. The DataSetWriterTransportType is defined in 9.1.8.3. The Object shall be present if the transport protocol mapping defines specific parameters.
The message mapping specific setting settings are provided in the optional Object MessageSettings. The DataSetWriterMessageType is defined in 9.1.8.4. The Object shall be present if the message mapping defines specific parameters.
The Status Object provides the current operational state of the DataSetReader. The PubSubStatusType is defined in 9.1.10. The state machine for the status and the relation to other PubSub Objects like PubSubConnection and PubSubGroup are defined in 6.2.1.
The Diagnostics Object provides the current diagnostic information for a DataSetReaderType Object. The PubSubDiagnosticsDataSetReaderType is defined in 9.1.11.12.
The SubscribedDataSet Object contains the metadata for the subscribed DataSet and the information for the processing of DataSetMessage. The SubscribedDataSetType is defined in 9.1.9.1.
This ObjectType is the abstract base type for Objects defining the transport protocol specific parameters for DataSetReaders. The DataSetReaderTransportType is formally defined in Table 127.
Table 127 – DataSetReaderTransportType Definition
Attribute |
Value |
|||||||
BrowseName |
DataSetReaderTransportType |
|||||||
IsAbstract |
True |
|||||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Modelling Rule |
|||
Subtype of BaseObjectType defined in Part 5 |
||||||||
HasSubtype |
ObjectType |
BrokerDataSetReaderTransportType |
Defined in 9.3.2.4. |
This ObjectType is the abstract base type for Objects representing message mapping specific settings for DataSetReaders. The DataSetReaderMessageType is formally defined in Table 128.
Table 128 – DataSetReaderMessageType Definition
Attribute |
Value |
|||||
BrowseName |
DataSetReaderMessageType |
|||||
IsAbstract |
True |
|||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Modelling Rule |
|
Subtype of BaseObjectType |
||||||
HasSubtype |
ObjectType |
UadpDataSetReaderMessageType |
Defined in 9.2.1.3. |
|||
HasSubtype |
ObjectType |
JsonDataSetReaderMessageType |
Defined in 9.2.2.3. |
This Method is used to initially set the SubscribedDataSet to TargetVariablesType and to create the list of target Variables of a SubscribedDataSetType.
The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.
Signature
CreateTargetVariables (
[in]ConfigurationVersionDataType ConfigurationVersion
[in]FieldTargetDataType[] TargetVariablesToAdd
[out] StatusCode[] AddResults
);
Argument |
Description |
ConfigurationVersion |
Configuration version of the DataSet. The configuration version passed in through CreateTargetVariables must match the current configuration version in DataSetMetaData Property. If it does not match, the result Bad_InvalidState shall be returned. The ConfigurationVersionDataType is defined in 6.2.2.1.5. |
TargetVariablesToAdd |
The list of target Variables to write received DataSet fields to. The FieldTargetDataType is defined in 6.2.9.2.3. The succeeded targets are added to the TargetVariables Property. |
AddResults |
The result codes for the Variables to connect. |
Method Result Codes
ResultCode |
Description |
Bad_NothingToDo |
An empty list of Variables was passed in. |
Bad_InvalidState |
The DataSetReader is not configured yet or the ConfigurationVersion does not match the version in the Publisher. |
Bad_UserAccessDenied |
Operation Result Codes
ResultCode |
Description |
Bad_NodeIdInvalid |
See OPC 10000-4 for the description of this result code. |
Bad_NodeIdUnknown |
See OPC 10000-4 for the description of this result code. |
Bad_IndexRangeInvalid |
See OPC 10000-4 for the description of this result code. This status code indicates either an invalid ReceiverIndexRange or an invalid WriterIndexRange or if the two settings result in a different size. |
Bad_IndexRangeNoData |
See OPC 10000-4 for the description of this result code. If the ArrayDimensions have a fixed length that cannot change and no data exists within the range of indexes specified, Bad_IndexRangeNoData is returned in AddDataConnections. |
Bad_TooManyMonitoredItems |
The Server has reached its maximum number of items for the DataSetReader object. |
Bad_InvalidState |
The TargetNodeId is already used by another connection. |
Bad_TypeMismatch |
The Server shall return a Bad_TypeMismatch error if the data type of the DataSet field is not the same type or subtype of the target Variable DataType. Based on the DataType hierarchy, subtypes of the Variable DataType shall be accepted by the Server. A ByteString is structurally the same as a one dimensional array of Byte. A Server shall accept a ByteString if an array of Byte is expected. |
This Method is used to set the SubscribedDataSet to SubscribedDataSetMirrorType used to represents the fields of the DataSet as Variables in the Subscriber Address Space. This Method creates an Object below the SubscribedDataSet and below this Object it creates a Variable Node for every field in the DataSetMetaData.
A Variable representing a field of the DataSet shall be created with the following rules
- TypeDefinition is BaseDataVariableType or a subtype.
- The Reference from the parent Node to the Variable is of type HasComponent.
- The initial AccessLevel of the Variables is CurrentRead.
- The RolePermissions is derived from the parent Node.
- The other Attribute values are taken from the FieldMetaData.
- The properties in the FieldMetaData are created as Properties of the Variable.
- The DataTypes are created in the Subscriber from the DataSetMetaData if they do not exist. The NamespaceUri of the created DataTypes shall match the namespace contained in the DataSetMetaData.
The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.
Signature
CreateDataSetMirror (
[in]String ParentNodeName
[in]RolePermissionType[]RolePermissions
[out]NodeId ParentNodeId
);
Argument |
Description |
ParentNodeName |
This parameter defines the BrowseName and DisplayName of the parent Node for the Variables representing the fields of the subscribed DataSet. |
RolePermissions |
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. |
ParentNodeId |
Method Result Codes
ResultCode |
Description |
Bad_InvalidState |
The DataSetReader is not configured yet or the ConfigurationVersion does not match the version in the Publisher. |
Bad_UserAccessDenied |