Soluciones para la Industria

contacto@rpingenieria.com

Modbus RTU: principios, funciones y áreas de aplicación

Modbus RTU sigue presente en medidores de energía, variadores, analizadores y estaciones de telemetría gracias a su simplicidad y a su especificación abierta. En este artículo revisamos su arquitectura maestro-esclavo, la estructura de la trama con dirección, PDU y CRC-16, las reglas de temporización de 3,5 y 1,5 caracteres, el modelo de datos de cuatro…

Introducción

Modbus es un protocolo de comunicación publicado en 1979 para la comunicación con controladores programables y difundido posteriormente como especificación abierta y libre de regalías. Actualmente, su desarrollo y publicación están a cargo de la Modbus Organization. La especificación se divide en un protocolo de aplicación, independiente del medio de transmisión [1], y en especificaciones de transporte para distintos medios. Modbus RTU (Remote Terminal Unit) corresponde al modo de transmisión binario sobre línea serie, definido en la especificación Modbus over Serial Line [2]. Su simplicidad y su amplio soporte lo convierten en uno de los protocolos más utilizados para integrar dispositivos de campo.

Arquitectura de la comunicación

Modbus RTU emplea un esquema maestro-esclavo (master-slave): un único maestro inicia todas las transacciones y los esclavos solo responden a las solicitudes dirigidas a ellos. En la especificación de aplicación, estos roles se denominan cliente y servidor, respectivamente [1].

Cada esclavo se identifica mediante una dirección entre 1 y 247. La dirección 0 se reserva para difusión (broadcast), que solo se utiliza en funciones de escritura y no genera respuesta. El maestro puede comunicarse en modo unicast, en el cual espera la respuesta del esclavo antes de iniciar una nueva transacción, o en modo broadcast.

Estructura de la trama

La unidad de datos del protocolo (PDU, Protocol Data Unit) es común a todas las variantes de Modbus y contiene un código de función y los datos asociados. En la línea serie, la PDU se encapsula en una unidad de datos de aplicación (ADU, Application Data Unit) que agrega la dirección del esclavo al inicio y un código de verificación CRC-16 al final. La longitud máxima de la ADU serie es de 256 bytes [2].

En modo RTU, cada carácter se transmite con 1 bit de inicio, 8 bits de datos, 1 bit de paridad y 1 bit de parada. La paridad par es la configuración predeterminada; si no se utiliza paridad, se deben emplear 2 bits de parada, de modo que cada carácter mantenga 11 bits. Las tramas se delimitan mediante intervalos de silencio: el inicio y el fin de un mensaje se identifican por un tiempo sin transmisión de al menos 3,5 caracteres, y dentro de una trama no deben existir pausas superiores a 1,5 caracteres.

El CRC-16 permite al receptor detectar errores de transmisión. Si el CRC no coincide, el esclavo descarta la trama y no responde, y el maestro reintenta la transacción tras el tiempo de espera configurado.

Modelo de datos

Modbus organiza la información de cada dispositivo en cuatro tablas [1]:

TablaTipo de datoAcceso
Discrete Inputs (entradas discretas)1 bitSolo lectura
Coils (bobinas)1 bitLectura y escritura
Input Registers (registros de entrada)16 bitsSolo lectura
Holding Registers (registros de retención)16 bitsLectura y escritura

Cada tabla admite hasta 65 536 elementos, direccionados en la PDU desde 0. En la documentación de numerosos dispositivos se emplea además la convención de prefijos 0xxxx, 1xxxx, 3xxxx y 4xxxx, con numeración a partir de 1, por lo que conviene verificar en el manual de cada equipo cuál de ambas referencias se utiliza.

Los valores de 32 bits, como números enteros largos o en coma flotante, se transmiten en dos registros consecutivos. El orden de las palabras no está fijado por la especificación, por lo que debe consultarse en el manual del dispositivo durante la integración.

Códigos de función

Los códigos de función públicos más utilizados son [1]:

  • 01 y 02: lectura de bobinas y de entradas discretas (hasta 2000 bits por solicitud).
  • 03 y 04: lectura de registros de retención y de registros de entrada (hasta 125 registros por solicitud).
  • 05 y 06: escritura de una bobina y de un registro.
  • 15 y 16: escritura de múltiples bobinas y de múltiples registros.
  • 23: lectura y escritura de registros en una sola transacción.
  • 08: funciones de diagnóstico de la línea serie, como contadores de mensajes y de errores.
  • 43/14: lectura de la identificación del dispositivo (fabricante, código de producto y versión).

Cuando un esclavo no puede ejecutar una solicitud, responde con una excepción: el código de función original con el bit más significativo activado y un código de excepción, por ejemplo, 01 (función no admitida), 02 (dirección de datos no válida) o 03 (valor de datos no válido). Este mecanismo facilita la identificación de errores de configuración durante la puesta en marcha.

Capa física

La especificación define como capa física principal RS-485 de dos hilos más un conductor común, según TIA/EIA-485 [3], con opción de cuatro hilos. Para enlaces punto a punto de corta distancia también se admite RS-232 [2]. Sus principales requisitos son:

  • Velocidades obligatorias de 9600 y 19 200 bit/s, esta última como valor predeterminado; se admiten velocidades superiores según el dispositivo.
  • Hasta 32 dispositivos por segmento sin repetidor.
  • Longitud del troncal de hasta aproximadamente 1000 m, según la velocidad y el tipo de cable.
  • Terminación de línea en ambos extremos y polarización de la línea en un único punto del bus, para mantener un estado definido en ausencia de transmisión.
  • Topología en línea con derivaciones cortas.

Beneficios

  • Simplicidad: la estructura de la trama y el modelo de datos facilitan la implementación y la interpretación de las comunicaciones con un analizador serie.
  • Bajo costo de implementación: puede ejecutarse en microcontroladores sencillos, sin hardware dedicado.
  • Interoperabilidad: la especificación abierta ha permitido su adopción en una gran variedad de dispositivos.
  • Robustez: la transmisión diferencial RS-485 y la verificación CRC respaldan la comunicación en entornos con ruido eléctrico.
  • Integración con redes Ethernet: el mismo modelo de datos y los mismos códigos de función se utilizan en Modbus TCP, lo que simplifica la integración mediante pasarelas.

Principales áreas de aplicación

  • Medidores de energía y analizadores de redes eléctricas.
  • Variadores de frecuencia, arrancadores suaves y relés de protección de motores.
  • Controladores de temperatura, detectores de gases y analizadores.
  • Estaciones de bombeo y telemetría en servicios sanitarios, incluidos enlaces por radio.
  • Sistemas de climatización y automatización de edificios.
  • Inversores fotovoltaicos y grupos electrógenos.

Conclusión

Modbus RTU ofrece un modelo de datos simple, un conjunto acotado de funciones y una capa física robusta, características que explican su vigencia en la integración de dispositivos de campo. Su conocimiento detallado, en particular del direccionamiento, del orden de los registros y de las reglas de temporización, permite realizar integraciones confiables y diagnosticar con rapidez los problemas de comunicación.


Referencias

[1] Modbus Organization, MODBUS Application Protocol Specification V1.1b3, 2012.

[2] Modbus Organization, MODBUS over Serial Line Specification and Implementation Guide V1.02, 2006.

[3] TIA/EIA-485-A, Electrical Characteristics of Generators and Receivers for Use in Balanced Digital Multipoint Systems.

Compartir

Seguir leyendo

Otras publicaciones