View Issue Details

IDProjectCategoryView StatusLast Update
000894210000-014: PubSubSpecpublic2024-03-20 16:11
ReporterJan Murzyn Assigned ToMatthias Damm  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Fixed in Version1.05.04 RC1 
Summary0008942: Custom DataTypes and DataSetMetaData
Description

This topic came up at prototyping of UAFX Descriptor. Related issue 0008474

As per current specification, all custom DataTypes (structures, enums, simple types) used in the DataSet, must be defined in the header of the DataSetMetaData.

This makes sense in the contexts where metadata must be "self contained", e.g. in the PubSub announcement message.

But it may lead to unnecessary duplications if the metadata exists in the context, which itself can define custom data types e.g. Server's AddressSpace, NodeSet, PubSub binary config file, UAFX descriptor etc. This is especially problematic if there are many DataSets sharing the same custom DataTypes.

It may be good to specify the DataSetMetaData in a way, which allows to optionally include custom DataTypes definitions in the header, only when it's necessary. Otherwise, the DataType of the FieldMetaData could point to the DataType node in the containing entity.

TagsNo tags attached.
Commit Version1.05.04 RC
Fix Due Date

Relationships

related to 0008474 closedMatthias Damm It is not clear what goes into DataTypeSchemaHeader fields of DataSetMetaDataType and/or UABinaryFileDataTupe 
related to 0009459 closedMatthias Damm DataSetMetaData should contain ns 0 types that are not built-in types 

Activities

Matthias Damm

2023-06-22 18:45

developer   ~0019660

Discussed in virtual F2F

The rules what datatypes are needed in a PublishedDataSet are only known at the time the PublishedDataSet is configured. One reason could be DataTypes that allow subtypes or fields that allow all DataTypes.

If the information is compressed in the file header, there is no way to put the right information back into the PublishedDataSets.

Matthias Damm

2024-02-28 10:48

developer   ~0020875

Further discussions and conclusions during UAFX prototyping and plug-fest:

(1) Scope namespaces and DataTypeDescriptions
We need both the DataTypeDescriptions and the Namespace array in each affected DataSetMetaData that uses DataTypes not defined by OPC UA
The DataTypeDescription part is already stated this way in the current Part 14 but the namespace part needs futher clarification
This requires a namespace index mapping for messages (e.g. ExtensionObject EncodingId) potentially on sender and receiver side.

(2) Mapping to target (and source) variables
The DataType NodeId in the DataSetMetaData may not match the DataType NodeId of the target variable (maybe also on the source variable).
In this case the application must check if the DataTypeDescription content matches and need to decide if it would accept the difference or not.
Mapping would only be possible if the structure is the same.

Matthias Damm

2024-03-17 23:19

developer   ~0020917

6.2.3.2.2 DataTypeSchemaHeader

Added following additional text:

A Publisher should keep the namespaces array unchanged even if the oder of namespaces get changed in the Publisher application. A change of the namespace array requires a change to the MajorVersion in the DataSetMetaData.
The Subscriber must map namespace indices in received messages if the data is processed on the context of an OPC UA information model e.g. if the values are written to target Variables. This affects encoding NodeIds in ExtensionObjects but also all other namespace indices in NodeIds and BrowseNames contained in the messages. If the Subscriber receives Structure DataTypes where the target Variables DataTypes have the same structure but different DataType NodeIds, the Subscriber must verify the consistency of the layout at start-up and must map the complete encoding NodeId when receiving the data.
If the DataSetMetadData is created outside the Publisher, the same mapping may be required in the Publisher.

Jim Luth

2024-03-20 16:11

administrator   ~0020978

Agreed to changes edited in Dallas F2F.

Issue History

Date Modified Username Field Change
2023-05-08 07:45 Jan Murzyn New Issue
2023-06-06 15:29 Jim Luth Assigned To => Matthias Damm
2023-06-06 15:29 Jim Luth Status new => assigned
2023-06-20 13:26 Matthias Damm Relationship added related to 0008474
2023-06-22 18:45 Matthias Damm Note Added: 0019660
2024-02-28 10:48 Matthias Damm Note Added: 0020875
2024-03-08 16:55 Matthias Damm Relationship added related to 0009459
2024-03-17 23:19 Matthias Damm Status assigned => resolved
2024-03-17 23:19 Matthias Damm Resolution open => fixed
2024-03-17 23:19 Matthias Damm Note Added: 0020917
2024-03-20 16:11 Jim Luth Status resolved => closed
2024-03-20 16:11 Jim Luth Fixed in Version => 1.05.04 RC1
2024-03-20 16:11 Jim Luth Commit Version => 1.05.04 RC
2024-03-20 16:11 Jim Luth Note Added: 0020978