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.

Table 58 – GSDML data type to OPC UA data type mapping
DataType attribute value of Ref elementLength in bytesOPC UA data typeComment
“Bit”10:Boolean
“BitArea”Specified by “BitLength” attribute0:ByteString
“Integer8”10:SByte
“Integer16”20:Int16
“Integer32”40:Int32
“Integer64”80:Int64
“Unsigned8”10:Byte
“Unsigned16”20:UInt16
“Unsigned32”40:UInt32
“Unsigned64”80:UInt64
“Date”70:DateTime=BinaryDate
“VisibleString”Specified by “Length” attribute0:String
“OctetString”Specified by “Length” attribute0:ByteString
“Float32”40:Float
“Float64”80:Double
“Unsigned8+Unsigned8”20:ByteValue without status byte. Status returned with StatusCode.
“Float32+Unsigned8”50:Float
“Boolean”10:Boolean
“UnicodeString8”Specified by “Length” attribute0:NormalizedStringAccording to PNO-2.712, Application Layer services, the UnicodeString8 may contain characters from ISO/IEC 10646.
“61131_STRING”Specified by “Length” attribute0:ByteString
“61131_WSTRING”Specified by “Length” attribute0:ByteString
“TimeStamp”12GsdGenIoTimeStampDataType
“TimeStampDifference”12GsdGenIoTimeStampDataType
“TmeStampDifferenceShort”80:UInt64
“OctetString2+Unsigned8”3

0:ByteString

Two bytes in hexadecimal notation, plus status in hexadecimal notation. Status returned with StatusCode.
“Unsigned16_S”20:UInt16Decimal integer in range of 0 to 16383, plus status: ‘B’ = bad, ‘S’ = simulation, ‘U’ = uncertain, ‘G’ = good.
Status returned with StatusCode.
“Integer16_S”20:Int16Decimal integer in range of -8192 to 8191, plus status: ‘B’ = bad, ‘S’ = simulation, ‘U’ = uncertain, ‘G’ = good.
Status returned with StatusCode.
“Unsigned8_S”10:ByteDecimal 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” attribute0:ByteStringList of values consisting of byte in hexadecimal notation plus status: ‘B’ = bad, ‘S’ = simulation, ‘U’ = uncertain, ‘G’ = good.
Status returned with StatusCode.
“N2”20:Int16Decimal integer in range of -32768 to 32767. Interpreted as: Value / 16384 %.
“N4”40:Int32Decimal integer in range of -2147483648 to 2147483647.
Interpreted as: Value / 1073741824 %.
“V2”20:Boolean[16]Bit string consisting of 16 single bits.
“L2”20: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”20:UInt16Decimal integer in range of 0 to 65535.
Interpreted as: 16384 × (Ta / Value).*)
“T2”20:UInt16Decimal integer in range of 0 to 65535.
Interpreted as: Value × Ta. *)
“T4”40:UInt32Decimal integer in range of 0 to 4294967295.
Interpreted as: Value × Ta. *)
“D2”20:UInt16Decimal integer in range of 0 to 65535.
Interpreted as: Value × ( Ta / 16384). *)
“E2”20:Int16Fixed-point number. Range:
-256+2-7 to 256-2-7
Resolution: 2-7 (0.0078125).
“C4”40:Int32Fixed-point number. Range:
-214748.3648 to 214748.3647.
Resolution: 0.0001.
“X2”20:Int16Decimal integer in range of -32768 to 32767.
Interpreted as: Value / 2X.
“X4”40:Int32Decimal integer in range of -2147483648 to 2147483647.
Interpreted as: Value / 2X.
“Unipolar2.16”20:UInt32Fixed-point number which expresses a value in percent. Range: 0% to (400-2-14) %. Resolution: 2-14 (0.0061) %.

*): Constant sampling time Ta.