Tipos de datos y empaquetado de registros Modbus
Un registro Modbus no es más que una palabra cruda de dieciséis bits; el protocolo no tiene concepto de entero con signo, de flotante ni de cadena de texto. Cada tipo de dato más rico es una convención construida encima, empaquetando palabras crudas juntas, y el maestro debe conocer esa convención para decodificar un valor correctamente. Esta referencia explica cómo se empaquetan los tipos de datos comunes en los registros y por qué el arreglo es específico de cada dispositivo.
Tipos de datos de registros Modbus en una línea: Los tipos de datos de registros Modbus son convenciones, no características del protocolo. Cada registro es una palabra cruda de dieciséis bits, así que un entero de 16 bits con o sin signo cabe en un registro, un entero o un flotante de 32 bits abarca dos, y una cadena empaqueta dos caracteres por registro. Modbus no etiqueta el tipo, de modo que al maestro hay que indicarle el arreglo, incluido el orden de bytes y de palabras, para decodificar cualquier valor más allá de una palabra de 16 bits.
Cómo se empaquetan los tipos comunes en los registros
Un solo registro contiene dieciséis bits, que es exactamente un entero con o sin signo dentro del rango de un valor de 16 bits, así que esos tipos ocupan un registro cada uno y son el caso más simple. Un entero de 32 bits o un flotante IEEE de 32 bits no cabe en un registro y se empaqueta en dos registros consecutivos, que el maestro lee juntos y vuelve a ensamblar. La forma en que esos dos registros se combinan, y las trampas de decodificación que resultan, son el tema de la referencia sobre el flotante de 32 bits en dos registros Modbus.
Las cadenas se empaquetan a dos caracteres por registro, ya que cada registro contiene dos bytes, así que un nombre de dieciséis caracteres ocupa ocho registros. Algunos dispositivos colocan primero el byte alto y otros primero el byte bajo, que es el equivalente en cadenas del problema de orden de bytes que afecta a los números. Los enteros más anchos, como los valores de 64 bits, simplemente extienden el patrón a cuatro registros. En todos los casos la tabla de registros en sí es solo palabras, como lo describe la referencia sobre los tipos de registro Modbus.
Por qué al maestro hay que indicarle el arreglo
El hecho crucial es que Modbus no transporta información de tipo. Una lectura de registro devuelve dieciséis bits sin ninguna etiqueta que diga si es la mitad de un flotante, un entero independiente o dos caracteres de una cadena. La documentación del dispositivo, o su mapa de registros, es la única fuente de verdad sobre cómo interpretar las palabras, y por eso una lectura correcta con el tipo de dato equivocado produce un número plausible pero sin sentido. Construir ese mapa autoritativo es de lo que trata la referencia del mapa de registros Modbus.
Dos convenciones en particular deben conocerse: cuál registro va primero en un valor de varios registros, llamado orden de palabras, y cuál byte va primero dentro de un registro, llamado orden de bytes. Distintos dispositivos eligen distinto, y equivocarse en cualquiera de las dos produce un valor revuelto aunque la lectura cruda haya tenido éxito. Como estas elecciones son por dispositivo, pertenecen al mapa de registros, y confirmarlas contra un valor conocido es la manera confiable de fijar el arreglo antes de confiar en cualquier tipo empaquetado.
Preguntas frecuentes
¿Cuántos registros usa un flotante de 32 bits en Modbus?
Dos registros consecutivos, porque un solo registro contiene únicamente dieciséis bits. El maestro lee ambos y vuelve a ensamblar el valor de 32 bits. El orden en que se combinan los dos registros, el orden de palabras, y el orden de bytes dentro de cada registro son específicos del dispositivo, así que los mismos dos registros pueden decodificarse a números muy distintos si el arreglo está mal.
¿Modbus indica el tipo de dato de un registro?
No. Los registros Modbus son palabras crudas de dieciséis bits sin etiqueta de tipo. Una lectura devuelve bits, no un entero o un flotante etiquetado. Debe saber por la documentación del dispositivo o por su mapa de registros cómo interpretar cada registro, y por eso leer un valor como el tipo equivocado produce un número plausible pero incorrecto en lugar de un error.
¿Cómo se almacenan las cadenas en registros Modbus?
A dos caracteres por registro, ya que cada registro contiene dos bytes. Una cadena de dieciséis caracteres ocupa ocho registros. Los dispositivos difieren en si el primer carácter va en el byte alto o en el bajo de un registro, así que la cadena puede aparecer con los bytes intercambiados si se asume mal el orden. Igual que con los números, el mapa del dispositivo define el arreglo correcto.
Fuentes y lecturas
Referencias primarias de los organismos de normas y reguladores que definen este tema:
- Modbus Specifications - Modbus Organization
Servicios de automatización
¿Necesita convertir esta información en un sistema que funcione?
Merobix integra SCADA, programa PLC Allen-Bradley y Siemens, y diseña y fabrica tableros de control industrial.
Las solicitudes de reunión se revisan antes de confirmarse.