Skip to main content

OPC UA Binary Data Encoding

Das OPC UA Binary Data Encoding ist ein Datenformat, das entwickelt wurde, um die Leistungsanforderungen von OPC UA Applikationen zu erfüllen. Dieses Format ist in erster Linie für eine schnelle Kodierung und Dekodierung konzipiert, wobei jedoch auch die Größe der kodierten Daten auf der Leitung berücksichtigt wurde.

Die OPC UA Binärdatenkodierung basiert auf mehreren primitiven Datentypen mit klar definierten Kodierungsregeln, die sequentiell in einen Binärstrom geschrieben oder daraus gelesen werden können.

Eine Struktur wird durch sequentielles Schreiben der kodierten Form jedes Feldes kodiert. Wenn ein bestimmtes Feld ebenfalls eine Struktur ist, werden die Werte seiner Felder sequentiell geschrieben, bevor das nächste Feld in die enthaltende Struktur geschrieben wird.

Alle Felder müssen in den Datenstrom geschrieben werden, auch wenn sie Nullwerte enthalten. Die Kodierungen für jeden primitiven Typ geben an, wie entweder ein Nullwert oder ein Standardwert für den Typ zu kodieren ist.

Die OPC UA Binärdatenkodierung enthält keine Typ- oder Feldnameninformationen, da von allen OPC UA Applikationen erwartet wird, dass sie die von ihnen unterstützten Dienste und Strukturen im Voraus kennen.

[P6] 5.2.1:

"Die Begriffe OPC UA Binary Data Encoding und Raw Data Field Encoding haben die identische Bedeutung und werden je nach zitierter Quelle entsprechend verwendet.“

Tabelle 1. Abbildung der elementaren Datentypen

IEC 61131-3

[P6] 5.2.1

OPC UA

References

BOOL

Boolescher Wert

1

Boolean

[P6] 5.2.2.1

BYTE

Byte

3

Byte

CHAR

Einzelbyte-Zeichen

3

Byte

DATE

Datum (allein)

13

DateTime

DINT

Doppelte Ganzzahl

6

Int32

DT

Datum und Uhrzeit des Tages [s]

13

DateTime

[P6] 5.2.2.5

DWORD

Bitstring der Länge 32

7

UInt32

INT

Integer

4

Int16

[P6] 5.2.2.1

LDATE

Langes Datum [ns]

8

Int64

LDT

Datum und Uhrzeit des Tages [ns]

8

Int64

LINT

Lange Ganzzahl

8

Int64

LREAL

Lange Gleitpunktzahl

11

Double

LTIME

Dauer [ns]

8

Int64

LTOD

Uhrzeit [ns]

8

Int64

LWORD

Bitstring der Länge 64

9

UInt64

REAL

Gleitpunktzahl

10

Float

[P6] 5.2.2.3

SINT

Kurze Integerzahl

2

SByte

STRING

Kodierung: Windows-1252

12

String

[P6] 5.2.2.4

TIME

Dauer [ms]

8

Int64

TOD

Uhrzeit [ms]

7

UInt32

UDINT

19

StatusCode

[P6] 5.2.2.11

UDINT

VersionTime

[P4] 7.38

UDINT

Vorzeichenlose doppelte Integer

7

UInt32

UINT

Vorzeichenlose Integer

5

UInt16

ULINT

Vorzeichenlose Iange Integer

9

UInt64

USINT

Vorzeichenlose kurze Integer

3

Byte

WCHAR

Doppelbyte-Zeichen

5

UInt16

WORD

Bitstring der Länge 16

5

UInt16

WSTRING

Kodierung: UCS-2

12

String



String

Die Länge eines OPC UA Strings kann aufgrund seiner UTF 8-Kodierung nicht im Voraus bestimmt werden. Sie hängt von den verwendeten Zeichen ab. Daher muss bei der Definition eines DataSetFields dieses Datentyps eine maximale Länge angegeben werden. Der verbleibende Platz wird mit 0 Wertbytes aufgefüllt. Die maximale Länge eines Strings (maxStringLength) ist in [P14] 6.2.2.1.3 FieldMetaData beschrieben.

StatusCode

Die Variable StatusCode wird als UInt32 kodiert.

VersionTime

Die Variable VersionTime ist als UInt32 kodiert. Sie stellt die Zeit in Sekunden seit dem Jahr 2000 dar. Das Epochendatum ist Mitternacht UTC (00:00) am 1. Januar 2000. Sie wird als Versionsnummer auf der Grundlage der letzten Änderungszeit verwendet. Wenn die Version aktualisiert wird, muss der neue Wert größer sein als der vorherige Wert. Der Wert 0 wird verwendet, um anzuzeigen, dass keine Versionsinformationen verfügbar sind.