Glosario de Automatización • Mapa de registros Modbus

¿Qué es un mapa de registros Modbus y cómo se lee?

Ingeniería Merobix • • 8 min de lectura

Usted no puede sondear un dispositivo Modbus adivinando dónde viven sus datos; tiene que leer el mapa que el fabricante publica. Ese mapa, por lo general una tabla en el manual del dispositivo, le dice la dirección de cada valor, qué clase de valor es, cómo se escala, y si usted puede escribirle. Leer esa tabla correctamente es el cimiento de toda integración Modbus, y leerla mal es la causa más común de datos basura. Esta guía recorre las columnas de un mapa de registros, muestra cómo convertir la tabla en una configuración de sondeo funcional, y cubre las trampas - el direccionamiento de base cero y los tipos de dato mal etiquetados a la cabeza - que descarrilan configuraciones por lo demás correctas.

Volver al glosario

Mapa de registros Modbus en una línea: Un mapa de registros Modbus es la tabla publicada por el fabricante que documenta cada valor que un dispositivo expone por Modbus - la dirección de cada punto, su tipo de registro, su tipo de dato, su escalamiento y unidades, y si es de solo lectura o de lectura y escritura. Es el diccionario de datos del dispositivo, y usted lo usa para armar un sondeo traduciendo cada fila a un punto de su configuración de sondeo. Leerla con precisión, en especial la convención de direccionamiento y los tipos de dato, determina si los valores que recolecta son correctos o sin sentido.

Las columnas de un mapa de registros

Un mapa de registros es una tabla, y cada columna responde una pregunta sobre un valor. La columna de dirección dice dónde vive el valor en la memoria del dispositivo. La columna de tipo de registro dice a cuál de las cuatro tablas Modbus pertenece - una bobina o entrada discreta para datos de un solo bit, o un registro de entrada o de retención para datos de 16 bits - lo que a su vez determina el código de función que usted usa para leerlo. La columna de tipo de dato dice cómo interpretar los bits crudos: un solo registro podría ser un entero sin signo o con signo de 16 bits, o un valor podría abarcar dos registros como un entero de 32 bits o un flotante IEEE-754. Acertar con el tipo de dato es esencial, porque los mismos bytes crudos significan números completamente distintos según cómo se decodifiquen.

Las columnas restantes le dicen cómo convertir el número crudo en una medición real y qué se le permite hacer con él. Una columna de escalamiento o multiplicador, a veces emparejada con una columna de unidades, dice cómo el número almacenado se mapea a un valor de ingeniería - un registro podría contener décimas, así que un crudo 235 significa 23.5, o llevar un multiplicador que convierte cuentas a una presión en las unidades correctas. La columna de acceso dice si el punto es de solo lectura, como una medición viva, o de lectura y escritura, como un setpoint que usted puede comandar. Un buen mapa de registros también nombra cada punto en lenguaje llano, así que la fila ata una dirección a un significado: este registro, de este tipo, decodificado así, escalado de esta forma, es la presión de descarga, y es de solo lectura. Todo eso vive en la tabla, y leerla es cuestión de recorrer cada fila a través de sus columnas.

Convertir la tabla en una configuración de sondeo

Armar un sondeo es en esencia traducir cada fila del mapa de registros a un punto de su configuración. Para cada valor que usted quiere, toma su dirección, su tipo de registro y su tipo de dato del mapa y los ingresa en el sondeador para que sepa dónde leer, qué código de función usar, y cuántos registros ocupa el valor. Usted agrega el escalamiento para que el número crudo se convierta al valor y las unidades de ingeniería correctas, y anota el acceso para configurarlo como un punto de lectura o, donde corresponda, como uno escribible. Hecho para cada punto que le importa, esto produce un sondeo que lee el dispositivo y entrega datos correctamente interpretados y escalados.

La forma eficiente de hacer esto es leer el mapa con un ojo en la disposición además del significado. Como una sola lectura Modbus puede devolver un bloque contiguo de registros, los valores que se ubican uno junto a otro en el espacio de direcciones se pueden recolectar en una sola petición, mientras que los valores dispersos fuerzan más lecturas y más pequeñas. Ojear el mapa en busca de los tramos contiguos que contienen los puntos que usted necesita le permite configurar lecturas por bloque que jalan muchos valores por petición, lo que importa para la velocidad del sondeo - en especial cuando una plataforma SCADA en la nube como Merobix está alcanzando sitios remotos sobre enlaces donde cada ida y vuelta cuesta latencia y datos. El mapa no es solo la clave de lo que significa cada valor sino también la guía de cuán eficientemente se puede sondear el dispositivo, así que vale la pena leerlo por su estructura y no solo punto por punto.

Las trampas: direccionamiento de base cero y tipos de dato mal etiquetados

El error de mapa de registros más común por lejos es un corrimiento de direccionamiento causado por la diferencia entre cómo se numeran los registros en la documentación y cómo se direccionan en el cable. Muchos fabricantes documentan los registros de retención con números que arrancan en 40001, una convención de base uno, mientras que la petición Modbus real usa una dirección de base cero, así que el valor documentado como 40001 se lee en la dirección 0, el 40002 en la dirección 1, y así. Si usted ingresa el número documentado directamente donde el sondeador espera la dirección del cable, cada punto queda corrido por uno y usted lee valores vecinos en lugar de los que quería. La solución es saber qué convención usa el mapa y convertir de forma consistente, y el síntoma revelador de equivocarse es que todos sus valores están corridos por un registro.

La segunda trampa recurrente son los tipos de dato mal etiquetados, ambiguos, o que suponen en silencio un orden de bytes y palabras que el mapa no declara. Un valor que en realidad es un flotante de 32 bits leído como dos enteros separados sale como sinsentido; un valor con signo leído como sin signo lee correctamente para números positivos pequeños pero muy mal para los negativos; y un valor de 32 bits puede tener sus dos registros o sus bytes ordenados de formas que el mapa no especifica, así que el número luce como basura hasta que usted prueba el otro orden. La defensa es verificar contra la realidad: lea un valor que pueda confirmar de forma independiente - una presión que pueda comparar con un manómetro, un estado que pueda conmutar - y revise que su decodificación produzca el número esperado antes de confiar en el resto del mapa. Un mapa de registros preciso leído con cuidado es el cimiento de toda integración Modbus, pero aun un buen mapa tiene que validarse contra unos cuantos valores conocidos, porque la brecha entre lo que dice la tabla y lo que el dispositivo en realidad devuelve es exactamente donde se ocultan estas trampas.

Preguntas frecuentes

¿Qué información contiene un mapa de registros Modbus?

Un mapa de registros documenta cada valor que un dispositivo expone por Modbus, con una fila por punto y columnas para la dirección, el tipo de registro - bobina, entrada discreta, registro de entrada o registro de retención - el tipo de dato que dice cómo decodificar los bits crudos, el escalamiento y las unidades que convierten el número crudo a un valor de ingeniería, y el acceso que dice si el punto es de solo lectura o de lectura y escritura. Los buenos mapas también nombran cada punto en lenguaje llano, así que una fila ata una dirección específica a un significado específico.

¿Por qué mis valores Modbus están todos corridos por un registro?

Esto casi siempre es un desajuste de convención de direccionamiento. Muchos fabricantes numeran los registros de retención arrancando en 40001, una convención de base uno, mientras que la petición real usa una dirección de base cero, así que el registro documentado como 40001 se lee en la dirección 0. Si usted ingresa el número documentado donde el sondeador espera la dirección del cable, cada punto se corre por uno y lee el valor vecino. La solución es identificar qué convención usa el mapa y convertir de forma consistente entre el número documentado y la dirección del cable.

¿Por qué un registro lee correctamente pero devuelve basura para algunos valores?

Por lo general porque el tipo de dato o el orden de bytes y palabras está mal para ese valor. Un flotante de 32 bits leído como dos enteros, un valor con signo leído como sin signo, o un valor de dos registros con sus registros o bytes en el orden equivocado, todos producen números que lucen como basura aunque la dirección sea correcta. El mapa de registros puede no especificar del todo el orden, así que la solución es verificar contra un valor que usted pueda confirmar de forma independiente - una presión contra un manómetro, por ejemplo - y ajustar la decodificación hasta que coincida con la realidad.

Más en Protocolos industriales
Orden de bytes (endianness) en Modbus  •  Límite de 125 registros  •  Flotante de 32 bits en dos registros Modbus  •  Tipos de datos de registros Modbus  •  Tipos de registro de Modbus (coils, entradas discretas, registros de entrada y de retencion)  •  Todo en Protocolos industriales →
Capacitación SCADA gratuita para operadores
Merobix University - 70 lecciones en video y 261 preguntas de examen, del primer inicio de sesión a los reportes de cumplimiento (contenido en inglés). Sin llamada de ventas.
Comenzar gratis →