Skip to main content

OPC UA Binary Data Encoding

El OPC UA Binary Data Encoding es un formato de datos que se ha desarrollado para satisfacer las demandas de rendimiento de las aplicaciones OPC UA. Este formato está diseñado principalmente para una codificación y decodificación rápidas, por lo que también se ha tenido en cuenta el tamaño de los datos codificados en la línea

La codificación de datos binarios OPC UA se basa en varios tipos de datos primitivos con reglas de codificación claramente definidas que se pueden escribir o leer secuencialmente en un flujo binario.

Una estructura se codifica escribiendo secuencialmente la forma codificada de cada campo. Si un campo concreto también es una estructura, los valores de sus campos se escriben secuencialmente antes de escribir el siguiente campo en la estructura contenedora

Todos los campos se deben escribir en el flujo de datos, incluso si contienen valores cero. Las codificaciones de cada tipo primitivo indican cómo codificar un valor cero o un valor predeterminado para el

La codificación de datos binarios de OPC UA no contiene ninguna información de tipo o nombre de campo porque se espera que todas las aplicaciones OPC UA sepan de antemano qué servicios y estructuras admiten.

[P6] 5.2.1:

«Los términos OPC UA Binary Data Encoding y Raw Data Field Encoding tienen el mismo significado y se usan en consecuencia según la fuente citada.

tabla 1. Mapeo de los tipos de datos elementales

IEC 61131-3

[P6] 5.2.1

OPC EE. UU.

Referencias

BOOL

Valor booleano

1

Boolean

[P6] 5.2.2.1

BYTE

Byte

3

Byte

CHAR

Carácter de un solo byte

3

Byte

DATE

Fecha (solo)

13

DateTime

DINT

Número entero doble

6

Int32

DT

Fecha y hora del día [s]

13

DateTime

[P6] 5.2.2.5

DWORD

Cadena de bits de longitud 32

7

UInt32

INT

Entero

4

Int16

[P6] 5.2.2.1

LDATE

Fecha larga [ns]

8

Int64

LDT

Fecha y hora del día [ns]

8

Int64

LINT

Entero largo

8

Int64

LREAL

Número largo de punto flotante

11

Double

LTIME

Duración [ns]

8

Int64

LTOD

Hora del día [ns]

8

Int64

LWORD

Cadena de bits de longitud 64

9

UInt64

REAL

Número de punto flotante

10

Float

[P6] 5.2.2.3

SINT

Entero corto

2

SByte

STRING

Codificación: Windows-1252

12

String

[P6] 5.2.2.4

TIME

Duración [ms]

8

Int64

TOD

Hora del día [ms]

7

UInt32

UDINT

19

StatusCode

[P6] 5.2.2.11

UDINT

VersionTime

[P4] 7.38

UDINT

Número entero doble sin signo

7

UInt32

UINT

Entero sin signo

5

UInt16

ULINT

Entero largo sin signo

9

UInt64

USINT

Entero corto sin signo

3

Byte

WCHAR

Carácter de doble byte

5

UInt16

WORD

Cadena de bits de longitud 16

5

UInt16

WSTRING

Codificación: UCS-2

12

String



Cuerda

La longitud de una cadena OPC UA no se puede determinar de antemano debido a su codificación UTF 8. Depende de los caracteres utilizados. Por lo tanto, se debe especificar una longitud máxima al definir un DataSetField de este tipo de datos. El espacio restante se rellena con 0 bytes de valor. La longitud máxima de una cadena (maxStringLength) se describe en [P14] 6.2.2.1.3 FieldMetaData.

StatusCode

La variable StatusCode está codificado como UInt32.

VersionTime

La variable VersionTime está codificado como UInt32. Muestra el tiempo en segundos desde el año 2000. La fecha de la época es la medianoche UTC (00:00) del 1 de enero de 2000. Se utiliza como número de versión en función de la hora de la última modificación. Si la versión se actualiza, el nuevo valor debe ser mayor que el valor anterior. El valor 0 se usa para indicar que no hay información de versión disponible.