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.
IEC 61131-3 | [P6] 5.2.1 | OPC EE. UU. | Referencias | |
---|---|---|---|---|
| Valor booleano | 1 |
| [P6] 5.2.2.1 |
| Byte | 3 |
| |
| Carácter de un solo byte | 3 |
| |
| Fecha (solo) | 13 |
| |
| Número entero doble | 6 |
| |
| Fecha y hora del día [s] | 13 |
| [P6] 5.2.2.5 |
| Cadena de bits de longitud 32 | 7 |
| |
| Entero | 4 |
| [P6] 5.2.2.1 |
| Fecha larga [ns] | 8 |
| |
| Fecha y hora del día [ns] | 8 |
| |
| Entero largo | 8 |
| |
| Número largo de punto flotante | 11 |
| |
| Duración [ns] | 8 |
| |
| Hora del día [ns] | 8 |
| |
| Cadena de bits de longitud 64 | 9 |
| |
| Número de punto flotante | 10 |
| [P6] 5.2.2.3 |
| Entero corto | 2 |
| |
| Codificación: Windows-1252 | 12 |
| [P6] 5.2.2.4 |
| Duración [ms] | 8 |
| |
| Hora del día [ms] | 7 |
| |
| 19 |
| [P6] 5.2.2.11 | |
|
| [P4] 7.38 | ||
| Número entero doble sin signo | 7 |
| |
| Entero sin signo | 5 |
| |
| Entero largo sin signo | 9 |
| |
| Entero corto sin signo | 3 |
| |
| Carácter de doble byte | 5 |
| |
| Cadena de bits de longitud 16 | 5 |
| |
| Codificación: UCS-2 | 12 |
|
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.