Skip to main content

OPC UA Binary Data Encoding

Le OPC UA Binary Data Encoding est un format de données qui a été développé pour répondre aux exigences de performances des applications OPC UA. Ce format est principalement conçu pour un codage et un décodage rapides, la taille des données codées sur la ligne étant également prise en compte

Le codage des données binaires OPC UA est basé sur plusieurs types de données primitifs avec des règles de codage clairement définies qui peuvent être écrites ou lues de manière séquentielle dans un flux binaire.

Une structure est codée en écrivant séquentiellement la forme codée de chaque champ. Si un champ particulier est également une structure, les valeurs de ses champs sont écrites de manière séquentielle avant que le champ suivant ne soit écrit dans la structure contenant

Tous les champs doivent être écrits dans le flux de données, même s'ils contiennent des valeurs nulles. Les codages pour chaque type primitif indiquent comment coder une valeur nulle ou une valeur par défaut pour le

Le codage des données binaires OPC UA ne contient aucune information de type ou de nom de champ, car toutes les applications OPC UA sont censées savoir à l'avance quels services et quelles structures elles prennent en charge.

[P6] 5.2.1 :

« Les termes OPC UA Binary Data Encoding et Raw Data Field Encoding ont la même signification et sont utilisés en conséquence en fonction de la source citée.

Tableau 1. Cartographie des types de données élémentaires

CEI 61131-3

[P6] 5.2.1

OPC États-Unis

Références

BOOL

Valeur booléenne

1

Boolean

[P6] 5.2.2.1

BYTE

octet

3

Byte

CHAR

Caractère à un octet

3

Byte

DATE

Date (uniquement)

13

DateTime

DINT

Nombre entier double

6

Int32

DT

Date et heure de la journée [s]

13

DateTime

[P6] 5.2.2.5

DWORD

Chaîne de bits d'une longueur de 32

7

UInt32

INT

Nombre entier

4

Int16

[P6] 5.2.2.1

LDATE

Date longue [ns]

8

Int64

LDT

Date et heure du jour [ns]

8

Int64

LINT

Entier long

8

Int64

LREAL

Nombre à virgule flottante longue

11

Double

LTIME

Durée [ns]

8

Int64

LTOD

Heure de la journée [ns]

8

Int64

LWORD

Chaîne de bits de longueur 64

9

UInt64

REAL

Nombre à virgule flottante

10

Float

[P6] 5.2.2.3

SINT

Nombre entier court

2

SByte

STRING

Codage : Windows-1252

12

String

[P6] 5.2.2.4

TIME

Durée [ms]

8

Int64

TOD

Heure de la journée [ms]

7

UInt32

UDINT

19

StatusCode

[P6] 5.2.2.11

UDINT

VersionTime

[PAGE 4] 7,38

UDINT

Nombre entier double non signé

7

UInt32

UINT

Entier non signé

5

UInt16

ULINT

Entier Iong non signé

9

UInt64

USINT

Entier court non signé

3

Byte

WCHAR

Caractère à deux octets

5

UInt16

WORD

Chaîne de bits d'une longueur de 16

5

UInt16

WSTRING

Codage : UCS-2

12

String



Corde

La longueur d'une chaîne OPC UA ne peut pas être déterminée à l'avance en raison de son encodage UTF 8. Cela dépend des caractères utilisés. Par conséquent, une longueur maximale doit être spécifiée lors de la définition d'un DataSetField de ce type de données. L'espace restant est rempli avec 0 octet de valeur. La longueur maximale d'une chaîne (maxStringLength) est décrit dans [P14] 6.2.2.1.3 FieldMetaData.

StatusCode

La variable StatusCode est codé comme UInt32.

VersionTime

La variable VersionTime est codé comme UInt32. Il indique le temps en secondes depuis l'an 2000. La date d'époque est minuit UTC (00:00) le 1er janvier 2000. Il est utilisé comme numéro de version en fonction de l'heure de la dernière modification. Si la version est mise à jour, la nouvelle valeur doit être supérieure à la valeur précédente. La valeur 0 est utilisée pour indiquer qu'aucune information de version n'est disponible.