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.“
IEC 61131-3 | [P6] 5.2.1 | OPC UA | References | |
---|---|---|---|---|
| Boolescher Wert | 1 |
| [P6] 5.2.2.1 |
| Byte | 3 |
| |
| Einzelbyte-Zeichen | 3 |
| |
| Datum (allein) | 13 |
| |
| Doppelte Ganzzahl | 6 |
| |
| Datum und Uhrzeit des Tages [s] | 13 |
| [P6] 5.2.2.5 |
| Bitstring der Länge 32 | 7 |
| |
| Integer | 4 |
| [P6] 5.2.2.1 |
| Langes Datum [ns] | 8 |
| |
| Datum und Uhrzeit des Tages [ns] | 8 |
| |
| Lange Ganzzahl | 8 |
| |
| Lange Gleitpunktzahl | 11 |
| |
| Dauer [ns] | 8 |
| |
| Uhrzeit [ns] | 8 |
| |
| Bitstring der Länge 64 | 9 |
| |
| Gleitpunktzahl | 10 |
| [P6] 5.2.2.3 |
| Kurze Integerzahl | 2 |
| |
| Kodierung: Windows-1252 | 12 |
| [P6] 5.2.2.4 |
| Dauer [ms] | 8 |
| |
| Uhrzeit [ms] | 7 |
| |
| 19 |
| [P6] 5.2.2.11 | |
|
| [P4] 7.38 | ||
| Vorzeichenlose doppelte Integer | 7 |
| |
| Vorzeichenlose Integer | 5 |
| |
| Vorzeichenlose Iange Integer | 9 |
| |
| Vorzeichenlose kurze Integer | 3 |
| |
| Doppelbyte-Zeichen | 5 |
| |
| Bitstring der Länge 16 | 5 |
| |
| Kodierung: UCS-2 | 12 |
|
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.