Tiza Group

Inicio / Guías / Industria y automatización

Modbus: mapa de registros, tipos de datos y sondeo

Cómo se diseña y se lee un mapa Modbus: registros de 16 bits, enteros y flotantes de 32 bits, escalas, funciones de diagnóstico y tiempo de sondeo.

Por Shadai García, CEO e ingeniero de protecciones de Tiza Group.

dir tipo esc orden40001 INT16 x0,1 AB40002 INT16 x10 AB40003 FLOAT CDABbloque 0320 registrosRS-485 A/B (par trenzado)120 Ω120 Ωpol.polarizaciónEsclavo 1Esclavo 2Esclavo 324 V DC (aparte)el maestro lee su mapay arma un bloque de lectura 03sondea esclavo 1esclavo 2esclavo 3ciclo completopetición y respuesta, una a la vezsilencio entre tramasel siguiente esclavootro ciclo de sondeomaestroesclavo 1esclavo 2esclavo 3silenciosilenciosilencioun solo maestro; los silencios delimitan las tramassin colisiones: nadie habla fuera de turnoModbusMaestroRS-485Esclavo© tizagrp.comdir tipo esc orden40001 INT16 x0,1 AB40002 INT16 x10 AB40003 FLOAT CDABbloque 0320 registrosRS-485 A/B (par trenzado)120 Ω120 Ωpol.polarizaciónEsclavo 1Esclavo 2Esclavo 324 V DC (aparte)el maestro lee su mapay arma un bloque de lectura 03sondea esclavo 1esclavo 2esclavo 3ciclo completopetición y respuesta, una a la vezsilencio entre tramasel siguiente esclavootro ciclo de sondeomaestroesclavo 1esclavo 2esclavo 3silenciosilenciosilencioun solo maestro; los silencios delimitan las tramassin colisiones: nadie habla fuera de turnoModbusMaestroRS-485Esclavo© tizagrp.com
Modbus RTU: mapa de registros del maestro, bus RS-485 terminado y sondeo petición-respuesta. Ubicación en el sistema y principio de funcionamiento. Ilustrativo: los valores reales salen de la placa y del manual del fabricante.
Respuesta corta

En Modbus todo se reduce a bits y registros de 16 bits; lo que un registro significa lo define el mapa del fabricante. Un buen mapa fija tipo de dato, escala, orden de palabras y agrupación de lecturas, y de ese mapa depende que el tiempo de sondeo de un bus serie sea de décimas de segundo o de varios segundos.

Respuesta corta

Modbus no define qué significa cada registro: solo entrega bits y palabras de 16 bits. El mapa de registros del fabricante es el que dice qué dato hay en cada dirección, cómo se codifica (entero con o sin signo, 32 bits, flotante, texto), qué escala tiene y si se puede escribir. Leer bien un equipo Modbus es, sobre todo, leer bien ese mapa y construir un plan de sondeo que respete el ancho de banda del bus.

La guía de Modbus RTU y TCP explica las cuatro tablas, los códigos de función y la trama. Aquí se complementa con lo que sigue después: cómo se organiza un mapa, cómo se manejan los datos que no caben en 16 bits, cuánto tarda un sondeo y cómo se diagnostica cuando algo no cuadra.

Qué trae un mapa de registros bien hecho

Un mapa útil es una tabla con una fila por dato. Las columnas mínimas son:

ColumnaQué responde
DirecciónNúmero de la tabla y posición, con la base declarada (desde 0 o desde 1)
FunciónQué código la lee o la escribe
TipoEntero de 16 bits con o sin signo, de 32 bits, flotante, cadena, campo de bits
CantidadCuántos registros ocupa
Unidad y escalaMagnitud y factor, por ejemplo décimas de voltio
AccesoSolo lectura, lectura y escritura, o escritura protegida
ComentarioValores especiales, como el que indica «no disponible»

Si el fabricante no declara la base de las direcciones, es la primera duda a despejar. Un mapa que dice «registro 30001» y otro que dice «dirección 0» pueden describir el mismo dato, y un corrimiento de una posición produce lecturas que parecen casi correctas pero pertenecen al vecino.

Datos que ocupan más de un registro

Modbus transporta palabras de 16 bits, con el byte alto primero dentro de cada palabra. Todo lo demás es convención del fabricante.

DatoRegistrosQué debe aclarar el mapa
Entero de 16 bits sin signo1Rango y escala
Entero de 16 bits con signo1Que se interpreta en complemento a dos
Entero de 32 bits2Qué registro lleva la parte alta
Flotante de 32 bits (IEEE 754)2Orden de palabras y de bytes
Cadena de textoNCuántos caracteres por registro y relleno
Campo de bits1Significado de cada bit

El orden de palabras es la causa más común de valores absurdos. Con dos registros A y B hay cuatro combinaciones posibles: AB, BA y las dos con los bytes invertidos dentro de cada palabra. Los maestros, los gateways y los PLC ofrecen un ajuste para elegirla. Una medida de 32 bits también se debe leer en una sola petición: si se leen los dos registros en peticiones separadas, el equipo puede actualizar el valor entre una y otra y entregar una mezcla de dos muestras distintas. Muchos fabricantes definen en el mapa un registro que «congela» el valor mientras se lee, o agrupan los datos para que una lectura completa sea coherente.

Los enteros con signo pasan por otra trampa: si el maestro interpreta como sin signo un registro de corriente negativa, 65 535 aparece donde debería leerse -1. La corrección es declarar el tipo correcto en el maestro, no tratar el número después.

Escalas, unidades y valores especiales

Para evitar flotantes, muchos equipos publican enteros escalados: una tensión de 231,4 V viaja como 2314 con factor 0,1. El factor puede ser fijo, o puede venir en otro registro cuando el equipo cambia de rango. En este segundo caso, la lectura debe incluir el registro de escala y el dato en la misma petición, o el valor puede quedar mal interpretado durante un cambio de rango.

Muchos mapas reservan un valor para indicar «dato no disponible» o «fuera de servicio» (por ejemplo, el mayor entero que cabe en el registro). Si el SCADA no lo conoce, lo muestra como una medida real. Conviene registrar esos valores en la documentación del punto y filtrarlos en el gateway.

Campos de bits y mandos

Los estados (alarmas, disparos, modos) se entregan casi siempre en un registro por bit o en bobinas. Dos reglas ayudan:

  • Prefiera leer el registro completo de estado y extraer los bits en el maestro, en lugar de pedir muchas bobinas sueltas.
  • Un mando se escribe en una bobina o en un registro, y el equipo debería devolver su estado real en otro lugar del mapa. Dar por ejecutado un mando solo porque la escritura fue aceptada es un error: la respuesta de Modbus confirma que el dato llegó, no que la maniobra se hizo.

Para mandos con consecuencias, vea cómo se confirma la ejecución en mando rechazado desde el SCADA.

Funciones de diagnóstico y de identificación

Además de las funciones de datos, la especificación define funciones para conocer el estado del enlace. En serie existen la lectura del estado de excepción, la función de diagnóstico con contadores de errores de comunicación, el contador y el registro de eventos de comunicación y la identificación del servidor. La lectura de identificación de dispositivo, que viaja en la función 43, devuelve datos como fabricante y código de producto. Son opcionales: el manual del equipo dice cuáles implementa. Cuando existen, los contadores de error de CRC y de excepciones permiten saber si un problema es del cable o del programa del maestro sin conectar un analizador.

Excepciones: cómo leerlas

La respuesta de excepción suma 80 hexadecimal al código de función y agrega un código de causa. Úsela como guía de diagnóstico:

ExcepciónSuele indicarPrimera revisión
01Función no soportadaQue el equipo implemente esa función
02Dirección no válidaBase de direcciones, registro inexistente o rango que cruza el límite del mapa
03Valor o cantidad no válidosCantidad pedida, valor fuera de rango
04Falla interna del dispositivoEstado del equipo y modo de operación
06Dispositivo ocupadoReintentar tras una espera

Una petición que cruza el final del mapa suele devolver 02 aunque los primeros registros existan: el equipo rechaza la petición completa. Por eso conviene que los bloques de lectura se alineen con las zonas que el fabricante publica.

Cuánto tarda un sondeo: ejemplo ilustrativo

El tiempo de un ciclo de sondeo en un bus serie depende de tres datos:

  • El tamaño de las tramas.
  • La velocidad.
  • El silencio entre ellas.

Los números que siguen son ilustrativos. Se supone un bus a 19 200 baudios con 11 bits por carácter (inicio, 8 datos, paridad y parada). Se supone también un tiempo de respuesta del equipo supuesto de 10 ms y 10 esclavos.

  • Tiempo de un carácter: 11 bits / 19 200 bit/s = 0,573 ms.
  • Silencio entre tramas: 3,5 caracteres, unos 2 ms; hay uno antes de la petición y otro antes de la respuesta.

Opción A: veinte registros en una sola lectura (función 03).

  • Petición: 8 caracteres. Respuesta: 5 + 2 × 20 = 45 caracteres. Total 53 caracteres = 30,4 ms.
  • Más dos silencios (4,0 ms) y la respuesta del equipo (10 ms): unos 44 ms por esclavo.
  • Diez esclavos: unos 0,44 s por ciclo.

Opción B: veinte lecturas de un registro cada una.

  • Cada lectura: 8 + 7 = 15 caracteres = 8,6 ms, más 4,0 ms de silencios y 10 ms de respuesta: unos 22,6 ms.
  • Veinte lecturas por esclavo: unos 452 ms. Diez esclavos: unos 4,5 s por ciclo.

La misma información tarda diez veces más cuando se pide en pedazos. Con el período de sondeo de 4,5 s, un cambio de estado puede quedar sin verse durante casi ese tiempo. Con 0,44 s, el mismo bus ofrece una vista bastante más fresca. En Modbus TCP el efecto es menor, porque la velocidad de la red es mucho mayor, pero cada petición sigue costando una transacción y el equipo pequeño tiene límites de conexiones simultáneas.

Diseño de un plan de sondeo

  1. Agrupe por velocidad de cambio. Medidas rápidas (corrientes, potencias) cada ciclo; energías, temperaturas y estados lentos, cada varios ciclos.
  2. Agrupe por contigüidad. Un bloque grande sin huecos es mejor que varios pequeños; si hay un hueco corto, a veces conviene leerlo igual y descartar los registros intermedios.
  3. Respete lo que el equipo declara. Algunos aceptan menos registros por petición que el máximo de la especificación.
  4. Defina tiempo de espera y reintentos. El tiempo de espera debe cubrir el tiempo de respuesta más lento del equipo; los reintentos deben ser pocos para que un esclavo caído no frene al resto del bus.
  5. Marque la calidad. Cuando un esclavo no responde, el SCADA debe mostrar el dato como inválido y no dejar el último valor como si fuera vigente.

Tenga presente que Modbus es sondeo: no avisa cuando algo cambia. Para eventos con estampa de tiempo, los protocolos de subestación son más adecuados, como se compara en IEC 61850, IEC 104, DNP3 y Modbus.

Gateways y mapas de varios equipos

Cuando un gateway traduce Modbus a otro protocolo, el mapa de origen y el de destino deben quedar documentados lado a lado: dirección, tipo, escala, orden de palabras y punto de destino. Un cambio de firmware del equipo puede mover registros. Por eso conviene guardar la versión del mapa junto con la versión del firmware. El caso de los inversores solares, con mapas que varían por modelo, se trata en integración de inversores al SCADA. Qué incluir al especificar un SCADA o BMS que supervisa centros de control de motores se resume en especificación de SCADA para BMS y centros de motores.

Errores frecuentes

  • Usar la dirección del manual sin confirmar si es base 0 o base 1.
  • Leer un entero de 32 bits en dos peticiones separadas.
  • Tratar un registro con signo como si no lo tuviera.
  • Pedir un bloque que cruza el límite del mapa y recibir excepción 02.
  • Sondear todo a la misma frecuencia, incluso los datos que cambian en minutos.
  • Escribir con frecuencia en registros que el equipo guarda en memoria no volátil.
  • Dar un mando por ejecutado porque la escritura fue aceptada.
  • Dejar el último valor en pantalla cuando el esclavo ya no responde.

Lista de verificación

  • El mapa del fabricante corresponde a la versión de firmware instalada.
  • Está declarada la base de direcciones y comprobada con un valor conocido.
  • Cada dato tiene tipo, escala, unidad y acceso documentados.
  • El orden de palabras de los datos de 32 bits está confirmado con una lectura real.
  • Los valores especiales de «no disponible» están identificados.
  • Los bloques de lectura son contiguos y no cruzan los límites del mapa.
  • El tiempo de ciclo del sondeo se calculó o se midió con todos los esclavos.
  • El tiempo de espera y los reintentos están definidos.
  • El SCADA marca como inválido el dato de un esclavo sin respuesta.
  • Los mandos se confirman con un estado real, no solo con la respuesta a la escritura.
  • Los registros que se escriben de forma cíclica no son de memoria no volátil.

Cómo le ayudamos

El mapa de un equipo se vuelve un problema cuando hay decenas de dispositivos, varios fabricantes y un gateway que debe entregar todo al SCADA con calidad y estampa de tiempo. En Tiza Group hacemos la ingeniería de integración y los estudios asociados dentro del servicio de diseño de ingeniería y estudios, y luego verificamos el sistema punto a punto con pruebas y puesta en servicio.

Guías relacionadas

Referencias

  • Modbus Organization, MODBUS Application Protocol Specification V1.1b3.
  • Modbus Organization, MODBUS over Serial Line Specification and Implementation Guide V1.02.
  • Wikipedia, «Modbus» (modelo de datos, funciones, tamaños y silencios de trama).
  • IEEE 754, representación de números en coma flotante (norma de pago).

Preguntas frecuentes

¿Cómo sé si un equipo envía el flotante con la palabra alta primero?

Se lee un valor conocido, por ejemplo una tensión que también se ve en la pantalla del equipo, y se prueban los cuatro ordenamientos posibles de los dos registros. El que reproduce la cifra correcta es el del equipo. Después se deja fijo en el maestro y se anota en la documentación del mapa.

¿Es mejor leer registro por registro o en bloques?

En bloques contiguos. Cada petición paga un costo fijo de tramas, silencios y tiempo de respuesta del equipo. Una lectura de veinte registros en una sola petición puede ser unas diez veces más rápida que veinte lecturas sueltas en un bus serie.

¿Puedo escribir en un registro de retención cada segundo?

Depende de dónde guarda el equipo ese dato. Si el registro está respaldado en memoria no volátil, una escritura cíclica la desgasta y puede acortar su vida útil. El manual del fabricante indica qué registros son de uso cíclico y cuáles solo de configuración.

¿Qué hago cuando un equipo responde con excepción 04?

La excepción 04 indica una falla interna del dispositivo al atender la petición. Se revisa el estado del equipo, si el dato está disponible en su modo de operación actual y si la petición cumple lo que dice el manual. Si se repite con peticiones válidas, se consulta al fabricante.

WhatsApp