Annex B Data Type Mappings (Normative)
B.1 GSDML data types mapping to OPC UA data types
The data types in the GSDML file are defined in [GSDML] table 18. Table 58 defines the mapping of GSDML data types to OPC UA data types.
| DataType attribute value of Ref element | Length in bytes | OPC UA data type | Comment |
|---|---|---|---|
| “Bit” | 1 | 0:Boolean | |
| “BitArea” | Specified by “BitLength” attribute | 0:ByteString | |
| “Integer8” | 1 | 0:SByte | |
| “Integer16” | 2 | 0:Int16 | |
| “Integer32” | 4 | 0:Int32 | |
| “Integer64” | 8 | 0:Int64 | |
| “Unsigned8” | 1 | 0:Byte | |
| “Unsigned16” | 2 | 0:UInt16 | |
| “Unsigned32” | 4 | 0:UInt32 | |
| “Unsigned64” | 8 | 0:UInt64 | |
| “Date” | 7 | 0:DateTime | =BinaryDate |
| “VisibleString” | Specified by “Length” attribute | 0:String | |
| “OctetString” | Specified by “Length” attribute | 0:ByteString | |
| “Float32” | 4 | 0:Float | |
| “Float64” | 8 | 0:Double | |
| “Unsigned8+Unsigned8” | 2 | 0:Byte | Value without status byte. Status returned with StatusCode. |
| “Float32+Unsigned8” | 5 | 0:Float | |
| “Boolean” | 1 | 0:Boolean | |
| “UnicodeString8” | Specified by “Length” attribute | 0:NormalizedString | According to PNO-2.712, Application Layer services, the UnicodeString8 may contain characters from ISO/IEC 10646. |
| “61131_STRING” | Specified by “Length” attribute | 0:ByteString | |
| “61131_WSTRING” | Specified by “Length” attribute | 0:ByteString | |
| “TimeStamp” | 12 | GsdGenIoTimeStampDataType | |
| “TimeStampDifference” | 12 | GsdGenIoTimeStampDataType | |
| “TmeStampDifferenceShort” | 8 | 0:UInt64 | |
| “OctetString2+Unsigned8” | 3 | 0:ByteString | Two bytes in hexadecimal notation, plus status in hexadecimal notation. Status returned with StatusCode. |
| “Unsigned16_S” | 2 | 0:UInt16 | Decimal integer in range of 0 to 16383, plus status: ‘B’ = bad, ‘S’ = simulation, ‘U’ = uncertain, ‘G’ = good. Status returned with StatusCode. |
| “Integer16_S” | 2 | 0:Int16 | Decimal integer in range of -8192 to 8191, plus status: ‘B’ = bad, ‘S’ = simulation, ‘U’ = uncertain, ‘G’ = good. Status returned with StatusCode. |
| “Unsigned8_S” | 1 | 0:Byte | Decimal integer in range of 0 to 63, plus status: ‘B’ = bad, ‘S’ = simulation, ‘U’ = uncertain, ‘G’ = good. Status returned with StatusCode. |
| “OctetString_S” | Specified by “Length” attribute | 0:ByteString | List of values consisting of byte in hexadecimal notation plus status: ‘B’ = bad, ‘S’ = simulation, ‘U’ = uncertain, ‘G’ = good. Status returned with StatusCode. |
| “N2” | 2 | 0:Int16 | Decimal integer in range of -32768 to 32767. Interpreted as: Value / 16384 %. |
| “N4” | 4 | 0:Int32 | Decimal integer in range of -2147483648 to 2147483647. Interpreted as: Value / 1073741824 %. |
| “V2” | 2 | 0:Boolean[16] | Bit string consisting of 16 single bits. |
| “L2” | 2 | 0:Boolean[16] | Bit string consisting of 4 nibbles (range of 0 to 15). A nibble is a four-bit aggregation, or half a byte. |
| “R2” | 2 | 0:UInt16 | Decimal integer in range of 0 to 65535. Interpreted as: 16384 × (Ta / Value).*) |
| “T2” | 2 | 0:UInt16 | Decimal integer in range of 0 to 65535. Interpreted as: Value × Ta. *) |
| “T4” | 4 | 0:UInt32 | Decimal integer in range of 0 to 4294967295. Interpreted as: Value × Ta. *) |
| “D2” | 2 | 0:UInt16 | Decimal integer in range of 0 to 65535. Interpreted as: Value × ( Ta / 16384). *) |
| “E2” | 2 | 0:Int16 | Fixed-point number. Range: -256+2-7 to 256-2-7 Resolution: 2-7 (0.0078125). |
| “C4” | 4 | 0:Int32 | Fixed-point number. Range: -214748.3648 to 214748.3647. Resolution: 0.0001. |
| “X2” | 2 | 0:Int16 | Decimal integer in range of -32768 to 32767. Interpreted as: Value / 2X. |
| “X4” | 4 | 0:Int32 | Decimal integer in range of -2147483648 to 2147483647. Interpreted as: Value / 2X. |
| “Unipolar2.16” | 2 | 0:UInt32 | Fixed-point number which expresses a value in percent. Range: 0% to (400-2-14) %. Resolution: 2-14 (0.0061) %. |
*): Constant sampling time Ta.
B.2 BMP data type mapping to OPC UA data types.
Table 59 shows references of standard data types and profile specific data types used by PROFIdrive (see [PDP], 5.2 and 5.3). The numeric identifier is the value of the first byte of the BMP parameter description “Identifier (ID)”.
If a conversion factor and an offset are to be applied for the display value (see [PDP], 6.2.1.3, Standardisation factor and Variable attribute), the OPC UA DataType shall always be 0:Float or 0:Double.
| BMP data type | Data type numeric identifier | OPC UA DataType | Reference to definition. |
|---|---|---|---|
| Boolean | 1 | 0:Boolean | Boolean (see PN PROTOCOL) |
| Integer8 | 2 | 0:SByte | Integer8 (see PN PROTOCOL) |
| Integer16 | 3 | 0:Int16 | Integer16 (see PN PROTOCOL) |
| Integer32 | 4 | 0:Int32 | Integer32 (see PN PROTOCOL) |
| Integer64 | 55 | 0:Int64 | Integer64 (see PN PROTOCOL) |
| Unsigned8 | 5 | 0:Byte | Unsigned8 (see PN PROTOCOL) |
| Unsigned16 | 6 | 0:UInt16 | Unsigned16 (see PN PROTOCOL) |
| Unsigned32 | 7 | 0:UInt32 | Unsigned32 (see PN PROTOCOL) |
| Unsigned64 | 56 | 0:UInt64 | Unsigned64 (see PN PROTOCOL) |
| FloatingPoint | 8 | 0:Float | Float32 (see PN PROTOCOL) |
| FloatingPoint64 | 15 | 0:Double | Float64 (see PN PROTOCOL) |
| VisibleString | 9 | 0:String | VisibleString (see PN PROTOCOL) |
| OctetString | 10 | 0:ByteString | OctetString (see PN PROTOCOL) |
| UNICODEString | 39 | 0:NormalizedString | UNICODEString (see PN PROTOCOL) |
| TimeOfDay (with date indication) | 12 | GsdGenIoTimeDataType | TimeOfDay with date indication (see PN PROTOCOL) |
| TimeDifference (do not use) | 13 | - | TimeDifference (see PN PROTOCOL) |
| Date | 50 | 0:DateTime | Binary Date (see PN PROTOCOL) |
| TimeOfDay without date indication | 52 | 0:UInt32 | TimeOfDay without date indication (see PN PROTOCOL) |
| TimeDifference with date indication | 53 | GsdGenIoTimeDataType | TimeDifference with date indication (see PN PROTOCOL) |
| TimeDifference without date indication | 54 | 0:UInt32 | Time Difference without date indication (see PN PROTOCOL) |
| N2 Normalized value (16 bit) | 113 | 0:Int16 | [PDP] sec. 5.3.2 Table 3 and Table 4 |
| N4 Normalized value (32 bit) | 114 | 0:Int32 | [PDP] sec. 5.3.2 Table 3 and Table 4 |
| V2 Bit sequence | 115 | 0:Boolean[16] | [PDP] sec. 5.3.6 and Table 10 |
| L2 Nibble | 116 | 0:Boolean[16] | [PDP] sec. 5.3.7 and Table 11 |
| R2 Reciprocal time constant | 117 | 0:UInt16 | [PDP] sec. 5.3.10 and Table 14 |
| T2 Time constant (16 bit) | 118 | 0:UInt16 | [PDP] sec. 5.3.8 and Table 12 |
| T4 Time constant (32 bit) | 119 | 0:UInt32 | [PDP] sec. 5.3.8 and Table 12 |
| D2 Time constant | 120 | 0:UInt16 | [PDP] sec. 5.3.9 and Table 13 |
| E2 Fixed point value (16 bit) | 121 | 0:Int16 | [PDP] sec. 5.3.4, Table 7 and Table 8 |
| C4 Fixed point value (32 bit) | 122 | 0:Int32 | [PDP] sec. 5.3.5 and Table 9 |
| X2 Normalized value, variable (16 bit) | 123 | 0:Int16 | [PDP] sec. 5.3.3, Table 5 and Table 6 |
| X4 Normalized value, variable (32 bit) | 124 | 0:Int32 | [PDP] sec. 5.3.3, Table 5 and Table 6 |