El protocolo Modbus, surgido en los años 70, se ha consolidado como una solución fundamental para la comunicación en entornos industriales. Su diseño sencillo pero robusto ha permitido que máquinas y sistemas dispares puedan "hablar" entre sí en tiempo real, facilitando la automatización y el monitoreo en fábricas, plantas de producción y una amplia gama de sistemas. Desde sus inicios como un protocolo de programación para Controladores Lógicos Programables (PLCs), Modbus ha evolucionado para adaptarse a las tecnologías de red modernas, manteniendo su relevancia a lo largo de décadas.

La interoperabilidad es clave en la automatización industrial, y Modbus proporciona una forma rentable e independiente del hardware para lograrla. Su naturaleza de código abierto, facilidad de uso y ubicuidad lo convierten en una opción fiable para la transferencia de datos, ya sean entradas o salidas discretas, analógicas o datos de registro entre dispositivos de control. Este protocolo se sitúa en la capa de aplicación del modelo OSI (nivel 7), y su puerto por defecto en un dispositivo servidor es el 502.
Historia y Evolución de Modbus
La génesis de Modbus se remonta a 1979, cuando Modicon (actualmente parte de Schneider Electric) publicó el primer protocolo Modbus, conocido como Modbus RTU (Remote Terminal Unit). Inicialmente diseñado para la comunicación con sus PLCs, este protocolo serie sentó las bases para lo que se convertiría en un estándar de facto en la industria. A pesar de ser un protocolo abierto, la denominación "Modbus" es una marca registrada de Schneider Electric.
Con el avance de las tecnologías de red, surgió la necesidad de un estándar que pudiera aprovechar protocolos de transporte más complejos y populares, como TCP/IP y UDP. En respuesta a esta demanda, en 1999 se desarrolló una variante clave: Modbus TCP. Esta evolución permitió la implementación de Modbus en redes Ethernet, ampliando significativamente su alcance y flexibilidad.
¿Qué es Modbus y cómo funciona? PARTE 1
Dispositivos Compatibles con Modbus
La versatilidad de Modbus se refleja en la amplia gama de dispositivos que lo soportan. Entre ellos se incluyen:
- Hardware HMI (Interfaz Hombre-Máquina)
- Interfaces y módulos de E/S (Entrada/Salida)
- Sensores
- Módems
- Controladores de dispositivos
- PLCs (Controladores Lógicos Programables)
- Pasarelas de red
- Adaptadores de host de red
- Inversores de CA/CC
- RTUs (Unidades Terminales Remotas)
- Hardware SCADA (Supervisión, Control y Adquisición de Datos)
- Controladores de dispositivos de software
- Dispositivos domésticos inteligentes
- Enrutadores
La mayoría de las implementaciones de Modbus en el mundo real se centran en dispositivos que manejan pequeñas cantidades de datos, como el monitoreo de temperatura, donde la velocidad de transmisión no es un factor crítico.
Variantes de Modbus: Adaptándose a Diferentes Necesidades
Es crucial entender que las diferentes variantes de Modbus no son interoperables en el mismo segmento de red y están diseñadas para usos específicos. No se trata de versiones sucesivas, sino de implementaciones con enfoques distintos.
Modbus RTU: El Estándar Serie
Modbus RTU es, sin duda, la variante más extendida. Se utiliza primordialmente para conexiones serie y se basa en una representación binaria compacta de los datos. Los mensajes RTU se complementan con una suma de comprobación de redundancia cíclica (CRC) para garantizar la fiabilidad de los datos, y la transmisión de un mensaje debe ser continua, sin pausas entre caracteres.
Dentro de las comunicaciones serie, encontramos dos tipos principales: Modbus RTU y Modbus ASCII. Aunque a menudo se les agrupa genéricamente como "Modbus serie" o "Modbus RTU", existen diferencias significativas:
- Modbus RTU (Binario): Transmite datos en formato binario. Los mensajes son más cortos y, teóricamente, más rápidos de transmitir. No tiene tokens de inicio de texto explícitos; el dispositivo receptor detecta el inicio de un nuevo mensaje por un período de "silencio".
- Modbus ASCII: Presenta los datos en caracteres ASCII legibles. Los mensajes son más largos que en RTU, pero ofrecen la ventaja de ser fácilmente monitoreados por administradores. Los mensajes ASCII sí incluyen tokens de inicio de texto.
Ambas variantes, RTU y ASCII, utilizan conexiones punto a punto (P2P), donde un cliente inicia la comunicación con un servidor. A diferencia de Modbus TCP, Modbus RTU típicamente soporta un único dispositivo cliente y hasta 247 dispositivos servidores (dependiendo de la señal física utilizada), requiriendo un puerto separado para cada dispositivo.
Las conexiones serie son, en general, más sencillas de configurar que las conexiones Ethernet, que implican la instalación de hardware de red y configuración de direcciones IP.
Tipos de Conexiones Serie en Modbus RTU
Las redes Modbus RTU emplean estándares de señalización física aprobados por la EIA (Electronic Industries Alliance), como RS-485, RS-422 o RS-232. Estos estándares definen las características eléctricas de los transceptores.
- RS-232: Utilizado en las primeras versiones de Modbus, es más lento (hasta 20 KB/s), tiene un alcance limitado (hasta 15 metros) y solo permite la conexión de un cliente a un servidor. Aún se utiliza en aplicaciones específicas, como la conexión de PLCs a dispositivos que ya utilizan RS-232. Los dispositivos se clasifican como DTE (Equipo Terminal de Datos, como PCs) o DCE (Equipo de Comunicaciones de Datos, como módems).
- RS-485 y RS-422: Estos estándares son fundamentales para las necesidades modernas, ya que soportan la conexión de múltiples dispositivos servidores, ofrecen transferencias de datos más rápidas (hasta 10 Mbps, aunque a menudo se opera entre 100 Kbps y 1 Mbps) y permiten un mayor alcance de transmisión (hasta 1200 metros antes de requerir un repetidor).
- RS-485: Facilita el cableado multipunto, permitiendo conectar varios dispositivos servidores a un cliente. Ofrece mayor inmunidad al ruido que RS-232. Sin repetidores, puede soportar hasta 32 dispositivos cliente en un cable troncal. Con repetidores, se pueden añadir hasta 256 dispositivos servidores. Puede operar en modo full duplex (4 hilos) o half duplex (2 hilos).
- RS-422: Similar a RS-485 pero menos común, también soporta comunicaciones multipunto.

Modbus TCP: La Conexión Ethernet Industrial
Modbus TCP, también conocido como Modbus Ethernet, es la adaptación del protocolo a redes Ethernet industriales, utilizando TCP/IP en la capa de transporte. Permite crear redes multipunto donde un único cliente puede comunicarse con múltiples servidores a través de una capa física Ethernet. En Modbus TCP, un mensaje Modbus se encapsula dentro de un paquete TCP, que a su vez se envuelve en un paquete IP.
Existen dos variantes principales comúnmente agrupadas bajo el término "Modbus TCP":
- Modbus TCP: Un paquete Modbus TCP dentro de una envoltura TCP.
- Modbus sobre TCP: Un paquete Modbus RTU dentro de una envoltura TCP.
Aunque una conexión Ethernet es intrínsecamente más rápida que una conexión serie, la velocidad no siempre es un requisito crítico para muchos dispositivos Modbus. Sin embargo, Ethernet ofrece mayor fiabilidad y la capacidad de transmitir datos a distancias mucho mayores.
A diferencia de Modbus RTU, Modbus TCP permite que varios dispositivos compartan un único puerto de red. Los mensajes incluyen una cabecera de 7 bytes, la cabecera Modbus Application Protocol (MBAP), que identifica la Unidad de Datos de Aplicación Modbus (ADU) y el protocolo de transporte. Modbus TCP soporta la conexión concurrente de miles de dispositivos servidores y múltiples dispositivos clientes en una red.
La cabecera MBAP en Modbus TCP contiene campos como:
- Transaction ID: Un número de solicitud que el maestro incrementa con cada petición, y que el esclavo devuelve para correlacionar las respuestas.
- Protocol ID: Siempre 0 en Modbus TCP.
- Length: La longitud de los datos Modbus en bytes, más dos bytes para el propio campo de longitud.
- Unit ID: En Modbus TCP, este campo se mantiene por compatibilidad con el direccionamiento serial (dirección del esclavo detrás de una pasarela). El direccionamiento único se realiza a través de la dirección IP del esclavo.

Otras Variantes y Extensiones
Se han desarrollado otras variantes para casos de uso específicos:
- Pemex Modbus y Enron Modbus: Diseñadas para soportar datos históricos y de flujo en las industrias del petróleo y gas. Enron Modbus, en particular, soporta nativamente números enteros de 32 bits y variables de punto flotante.
- Modbus Seguro (Secure Modbus): Publicado en 2018, implementa características de seguridad utilizando TLS (Transport Layer Security) para autorización y autenticación basadas en certificados.
- Modbus Plus (Modbus+, MBP): Un protocolo propietario de alta velocidad de Schneider Electric, que utiliza una estructura de paso de token y requiere hardware propietario. No es una variante directa de Modbus y no es compatible con las interfaces estándar.
¿Cómo Funciona Modbus? El Modelo de Datos y los Mensajes
Independientemente de la variante, el funcionamiento básico de Modbus se basa en un modelo de solicitud-respuesta y una estructura de mensajes consistente.
El Modelo Maestro/Esclavo y Cliente/Servidor
Modbus opera bajo una arquitectura maestro/esclavo (en el contexto serial) o cliente/servidor (en el contexto TCP/IP).
- Maestro/Cliente: Es el dispositivo que inicia la comunicación, enviando solicitudes a los esclavos/servidores.
- Esclavo/Servidor: Es el dispositivo que responde a las solicitudes del maestro/cliente. Cada esclavo/servidor tiene una dirección única en la red.
Estructura de Mensajes: ADU y PDU
Los mensajes Modbus se estructuran en Unidades de Datos de Protocolo (PDU) y Unidades de Datos de Aplicación (ADU).
- PDU (Protocol Data Unit): Contiene el código de función (indicando la operación a realizar, como leer o escribir) y los datos asociados. Es independiente de las capas de comunicación subyacentes.
- ADU (Application Data Unit): Envuelve la PDU e incluye información adicional, como la dirección del esclavo/servidor y un campo de suma de comprobación (CRC o LRC) para la verificación de errores. La ADU define el inicio y el fin de una trama de solicitud.
Los formatos de trama no son interoperables entre las distintas variantes de Modbus.
Tablas de Datos y el Mapa Modbus
La información que un dispositivo cliente solicita o escribe se almacena en el dispositivo servidor en hasta cuatro tablas principales:
- Bobinas (Coils): Almacenan valores discretos de activación/desactivación (ON/OFF). Hay una tabla de solo lectura (Entradas Discretas) y una tabla de lectura/escritura (Salidas Discretas o Bobinas).
- Registros (Registers): Almacenan valores numéricos. Hay una tabla de solo lectura (Registros de Entrada) y una tabla de lectura/escritura (Registros de Retención).
El mapa Modbus de un dispositivo define qué datos se almacenan, dónde se encuentran y en qué formato. Las direcciones de datos en los mensajes Modbus utilizan un rango de 0 a 9999, mientras que las direcciones de los dispositivos suelen ser de 1 a 10000. Esto implica que a menudo es necesario restar un offset (generalmente 1) a la dirección del dispositivo para usarla en un mensaje.
Tipos de Datos en Modbus
Modbus, en su diseño original, se limitaba a tipos de datos sencillos, adecuados para los PLCs de finales de los 70. Principalmente maneja:
- Registros (Holding Registers): Enteros sin signo de 16 bits. Se utilizan para almacenar valores analógicos (tanto de entrada como de salida).
- Bobinas (Coils): Bits binarios simples que representan un estado ON u OFF. Se utilizan para salidas digitales (comandos de encendido/apagado) y entradas digitales (estado de sensores, botones, etc.).
Limitaciones y Soluciones para Tipos de Datos Complejos:
- Valores Negativos: No hay una representación directa para números negativos. Estos se transmiten utilizando el formato de complemento a dos.
- Números de Punto Flotante: Modbus no soporta directamente números de punto flotante (float). Las soluciones comunes incluyen:
- Redondear el valor hacia arriba o hacia abajo.
- Transmitir el número de punto flotante utilizando dos registros de 16 bits contiguos para emular un tipo de dato de 32 bits.
- Enteros de 32 bits: Similar a los números de punto flotante, pueden emularse utilizando dos registros de 16 bits.
Formato de Datos y Endianness:
Modbus especifica el uso de una representación "big-endian" para direcciones y elementos de datos. Esto significa que, al transmitir un número mayor que un byte, el byte más significativo se envía primero. Sin embargo, algunos fabricantes pueden utilizar una representación "little-endian". La interoperabilidad se garantiza si ambos dispositivos (cliente y servidor) utilizan el mismo método.
Ejemplo de Conversión de Bits a Valor Numérico:
Un ejemplo ilustra cómo se pueden representar valores complejos a partir de bits. Si los bits 3, 6, 8 y 15 de un registro de 16 bits están a 1, y el resto a 0, el valor numérico se calcula sumando las potencias de 2 correspondientes: 2^3 + 2^6 + 2^8 + 2^15 = 8 + 64 + 256 + 32768 = 33096.
El proceso inverso, convertir un número a sus bits correspondientes, implica verificar si el número es mayor o igual a la potencia de 2, establecer el bit a 1 si es así, y restar la potencia de 2 del número.

Códigos de Función
Los códigos de función son el segundo byte en un mensaje Modbus y especifican la acción que el dispositivo servidor debe realizar. Indican qué tabla de datos acceder (bobinas, registros) y la operación concreta (leer, escribir, diagnosticar, etc.).
Los códigos de función se clasifican en:
- Públicos: Documentados y validados por la comunidad MODBUS.org.
- Definidos por el Usuario: Códigos reservados para usos específicos por los fabricantes.
- Reservados: No utilizados.
Algunos códigos de función comunes incluyen:
- 01 (Read Coils): Leer el estado de bobinas discretas.
- 02 (Read Discrete Inputs): Leer el estado de entradas discretas.
- 03 (Read Holding Registers): Leer el valor de registros de retención.
- 04 (Read Input Registers): Leer el valor de registros de entrada.
- 05 (Write Single Coil): Escribir un valor en una bobina discreta.
- 06 (Write Single Register): Escribir un valor en un registro de retención.
- 15 (Write Multiple Coils): Escribir valores en múltiples bobinas discretas.
- 16 (Write Multiple Registers): Escribir valores en múltiples registros de retención.
Verificación de Errores
La integridad de los datos es crucial. Las variantes serie (RTU y ASCII) utilizan sumas de comprobación:
- CRC (Cyclic Redundancy Check): Utilizado en Modbus RTU.
- LRC (Longitudinal Redundancy Check): Utilizado en Modbus ASCII.
En Modbus TCP, la fiabilidad de la transmisión de datos se garantiza principalmente por el protocolo TCP subyacente, que incluye mecanismos de acuse de recibo y retransmisión.
¿Dónde se Utiliza Modbus? Aplicaciones Industriales
La simplicidad, fiabilidad y flexibilidad de Modbus han llevado a su adopción en una vasta gama de aplicaciones industriales y de automatización:
- Automatización de Fábricas: Control de líneas de producción, monitoreo de maquinaria, gestión de procesos.
- Sistemas SCADA: Comunicación entre centros de control y unidades remotas (RTUs) para la supervisión y adquisición de datos.
- Automatización de Edificios: Control de sistemas HVAC (Calefacción, Ventilación y Aire Acondicionado), iluminación y seguridad.
- Sistemas de Energía: Monitoreo de subestaciones, gestión de redes eléctricas, control de generación renovable.
- Tratamiento de Agua: Control de bombas, válvulas y sensores en plantas de tratamiento.
- Industria Petrolera y Gas: Monitoreo de pozos, refinerías y oleoductos.
- Carga de Vehículos Eléctricos: La versatilidad de Modbus se extiende a la comunicación con puntos de recarga inteligentes, permitiendo la gestión remota, la obtención de datos de medidores y la integración con sistemas fotovoltaicos.
El protocolo Modbus es una herramienta esencial en la automatización industrial, ofreciendo una comunicación eficiente y fiable entre dispositivos electrónicos. Su adopción en aplicaciones de carga de vehículos eléctricos demuestra su versatilidad y capacidad para mejorar la eficiencia y seguridad de los sistemas de carga.
Monitoreo Modbus con Herramientas Especializadas
El monitoreo efectivo de las redes Modbus es fundamental para garantizar el rendimiento y prevenir fallos. Herramientas como PRTG Network Monitor están diseñadas para facilitar esta tarea, ofreciendo:
- Compatibilidad Amplia: Soporte para todos los principales proveedores, productos y sistemas que utilizan Modbus.
- Alertas Personalizadas: Notificaciones en tiempo real para identificar y prevenir rápidamente problemas de salud y rendimiento de la red.
- Visualización de Datos: Representación clara de los datos para facilitar el análisis y la solución de problemas.
Estas herramientas permiten identificar la causa raíz de los problemas con mayor rapidez, permitiendo actuar antes de que se produzcan fallos más graves.
La capacidad de Modbus para facilitar la comunicación entre dispositivos electrónicos de manera eficiente y fiable lo convierte en una herramienta esencial para optimizar la funcionalidad de diversos sistemas, desde la maquinaria industrial hasta las emergencias de carga de vehículos eléctricos.