View Issue Details

IDProjectCategoryView StatusLast Update
000634630120: IO-LinkDocumentation Erratapublic2023-02-10 18:44
ReporterJoachim StilzAssigned ToJoachim Stilz 
PriorityhighSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Target VersionV1.01Fixed in VersionV1.01 
Summary0006346: Not possible to generate NodeId of OPC UA Structure for inline complex IODD Datatypes
Description

For mapping an IODD Record datatype to an OPC UA DataType as subtype of Structure the IODD Record@id is required to generate the NodeId, but in the IODD the id for a data type is only present when the datatype appears inside the DatatypeCollection, otherwise it shall not be present. So the NodeId cannot be created, if the id is not present.

The IO-Link for OPC UA companion specification defines that an IODD Record type must have an id to create the NodeId for the new DataType:

12.3.2 Structure DataType
For each IODD Record a new OPC UA DataType as subtype of Structure is created.
• The NodeId of the new DataType is composed of the NodeId of the ObjectType generated for the IODD (see section 7.3.2) and the Record/@id (“<ObjectTypeId>||<Record id>”).

The IODD specification defines that the id for a data type is only present if the type is defined inside the DatatypeCollection, otherwise it shall not be present:

7.5.2 Data type collection
[snip]
id (c, IdT)
Datatype elements within the DatatypeCollection shall have an attribute ‘id’. Datatype elements outside of the DatatypeCollection shall not have an attribute ‘id’.

7.5.3.1.1 General

When the Datatype element appears inside the DatatypeCollection, the attribute ‘id’ shall be present. Otherwise, the attribute ‘id’ shall not be present.


So if the type is defined inside a Variable declaration or inside a ProcessData declaration it has no id. So the NodeId for the new OPC UA DataType cannot be created.

TagsNo tags attached.

Relationships

related to 0007416 confirmedDeepak Yadav Support for IO Link Wireless Extensions 

Activities

Joachim Stilz

2021-01-15 09:26

viewer   ~0013528

In the web conference of the 15.01.2021 we decided to make the following spec addition:

In case the IODD Complex Datatype (RecordT or ArrayT) is defined inline (e.g. in the IODD ProcessData or in an IODD Variable), the NodeId of the new DataType is composed of
a) the NodeId of the ObjectType (see section 7.3.2)
b) the id of the next higher XML element with an ID (the @id is only allowed to be taken of one of the following IODD XML elements:
a. ProcessDataIn
b. ProcessDataOut
c. Variable
c) the letter “D” indicating the reference of an IODD Datatype.

Schema: “<ObjectTypeId>||<id>|D”

Joachim Stilz

2021-01-22 08:56

viewer   ~0013598

We will close this bug with the release of the new spec. version.

Martin Lang

2023-02-10 12:41

manager   ~0018696

May double check this with chapter 10.3 from meeting note from 13.01.2023.

Issue History

Date Modified Username Field Change
2021-01-15 09:22 Joachim Stilz New Issue
2021-01-15 09:26 Joachim Stilz Note Added: 0013528
2021-01-22 08:55 Joachim Stilz Assigned To => Joachim Stilz
2021-01-22 08:55 Joachim Stilz Status new => acknowledged
2021-01-22 08:56 Joachim Stilz Note Added: 0013598
2021-01-22 08:57 Joachim Stilz Status acknowledged => assigned
2021-02-09 12:56 Joachim Stilz Status assigned => resolved
2021-02-09 12:56 Joachim Stilz Resolution open => fixed
2023-02-10 12:41 Martin Lang Note Added: 0018696
2023-02-10 16:58 Martin Lang Relationship added related to 0007416
2023-02-10 18:44 Martin Lang Fixed in Version => V1.01
2023-02-10 18:44 Martin Lang Target Version => V1.01