Skip to main content

OPC UA Binary Data Encoding

Le OPC UA Binary Data Encoding è un formato di dati sviluppato per soddisfare i requisiti prestazionali delle applicazioni OPC UA. Questo formato è progettato principalmente per la codifica e la decodifica veloci, tenendo conto anche delle dimensioni dei dati codificati sulla linea.

La codifica dei dati binari OPC UA si basa su diversi tipi di dati primitivi con regole di codifica chiaramente definite che possono essere scritte o lette in sequenza da un flusso binario.

Una struttura viene codificata scrivendo in sequenza la forma codificata di ogni campo. Se un particolare campo è anche una struttura, i valori dei relativi campi vengono scritti in sequenza prima che il campo successivo venga scritto nella struttura contenente.

Tutti i campi devono essere scritti nel flusso di dati, anche se contengono zero valori. Le codifiche per ogni tipo primitivo indicano come codificare un valore zero o un valore predefinito predefinito per il tipo.

La codifica dei dati binari OPC UA non contiene alcuna informazione sul tipo o sul nome di campo perché tutte le applicazioni OPC UA devono sapere in anticipo quali servizi e strutture supportano.

[P6] 5.2.1:

«I termini OPC UA Binary Data Encoding e Raw Data Field Encoding hanno lo stesso significato e vengono utilizzati di conseguenza a seconda della fonte citata. »

Tabella 1. Mappatura dei tipi di dati elementari

IEC 61131-3

[P6] 5.2.1

OPC UA

Referenze

BOOL

Valore booleano

1

Boolean

[P6] 5.2.2.1

BYTE

Byte

3

Byte

CHAR

Carattere a byte singolo

3

Byte

DATE

Data (solo)

13

DateTime

DINT

Numero intero doppio

6

Int32

DT

Data e ora del giorno [s]

13

DateTime

[P6] 5.2.2.5

DWORD

Stringa di bit di lunghezza 32

7

UInt32

INT

Numero intero

4

Int16

[P6] 5.2.2.1

LDATE

Data lunga [ns]

8

Int64

LDT

Data e ora del giorno [ns]

8

Int64

LINT

Numero intero lungo

8

Int64

LREAL

Numero a virgola mobile lungo

11

Double

LTIME

Durata [ns]

8

Int64

LTOD

Ora del giorno [ns]

8

Int64

LWORD

Stringa di bit di lunghezza 64

9

UInt64

REAL

Numero in virgola mobile

10

Float

[P6] 5.2.2.3

SINT

Numero intero breve

2

SByte

STRING

Codifica: Windows-1252

12

String

[P6] 5.2.2.4

TIME

Durata [ms]

8

Int64

TOD

Ora del giorno [ms]

7

UInt32

UDINT

19

StatusCode

[P6] 5.2.2.11

UDINT

VersionTime

[P4] 7.38

UDINT

Numero intero doppio senza segno

7

UInt32

UINT

Numero intero senza segno

5

UInt16

ULINT

Numero intero Jong senza segno

9

UInt64

USINT

Numero intero breve senza segno

3

Byte

WCHAR

Carattere a doppio byte

5

UInt16

WORD

Stringa di bit di lunghezza 16

5

UInt16

WSTRING

Codifica: UCS-2

12

String



Corda

La lunghezza di una stringa OPC UA non può essere determinata in anticipo a causa della sua codifica UTF 8. Dipende dai caratteri utilizzati. Pertanto, è necessario specificare una lunghezza massima quando si definisce un DataSetField di questo tipo di dati. Lo spazio rimanente viene riempito con 0 byte di valore. La lunghezza massima di una stringamaxStringLength) è descritto in [P14] 6.2.2.1.3 FieldMetaData.

StatusCode

La variabile StatusCode è codificato come UInt32.

VersionTime

La variabile VersionTime è codificato come UInt32. Mostra il tempo in secondi dall'anno 2000. La data dell'epoca è la mezzanotte UTC (00:00) del 1° gennaio 2000. Viene utilizzato come numero di versione in base all'ora dell'ultima modifica. Se la versione viene aggiornata, il nuovo valore deve essere maggiore del valore precedente. Il valore 0 viene utilizzato per indicare che non sono disponibili informazioni sulla versione.