Modbus — Protocolo de comunicación industrial
Definición e historia
Modbus es un protocolo de comunicación industrial publicado en 1979 por Modicon (hoy Schneider Electric) para permitir la comunicación entre su controlador lógico programable y los dispositivos de campo. Modbus, que se convirtió en un estándar abierto y libre de derechos en 2002, es hoy en día el protocolo más extendido en la industria, presente en cientos de millones de dispositivos en todo el mundo.
Su popularidad se basa en tres cualidades fundamentales: simplicidad (fácil de implementar, bien documentado), robustez (funciona con conexiones de mala calidad) e interoperabilidad (estándar abierto, compatible con prácticamente todos los equipos industriales: controladores lógicos programables, variadores de velocidad, contadores de energía, sensores y reguladores).
A pesar de su antigüedad, Modbus sigue siendo imprescindible, sobre todo en instalaciones ya existentes (brownfield) y para equipos de bajo coste. Su principal inconveniente es la falta de seguridad nativa (sin autenticación ni cifrado), lo que obliga a protegerlo tras una VPN cuando transita por una red no controlada.
Modbus RTU frente a Modbus TCP
Existen dos variantes principales del protocolo Modbus:
Modbus RTU (serie)
- Capa física: RS-232 (punto a punto) o RS-485 (bus multipunto con hasta 32 dispositivos, 1 200 m de distancia máxima a 9 600 baudios).
- Transmisión: binaria, compacta. Cada mensaje contiene la dirección del esclavo, el código de función, los datos y un CRC-16 de control de integridad.
- Topología: maestro-esclavo (un único maestro, hasta 247 esclavos direccionables del 1 al 247).
- Uso: contadores de energía, variadores de frecuencia, sensores industriales con salida RS-485, controladores lógicos programables antiguos.
Modbus TCP (Ethernet)
- Capa física: Ethernet (10/100/1000 Mbps), protocolo IP, puerto TCP 502.
- Encapsulación: la trama Modbus RTU se encapsula en una cabecera MBAP (Modbus Application Protocol) de 7 bytes que sustituye al CRC (Ethernet garantiza por sí misma la integridad).
- Topología: cliente-servidor (el cliente, antes denominado «maestro», consulta al servidor, antes denominado «esclavo»). Varios clientes pueden consultar simultáneamente a un mismo servidor.
- Uso: controladores lógicos programables con puerto Ethernet (Siemens S7, Schneider M340/M580, Allen-Bradley), HMI/SCADA, pasarelas a la nube.
| Criterio | Modbus RTU | Modbus TCP |
|---|---|---|
| Capa física | RS-232 / RS-485 | Ethernet / TCP-IP |
| Velocidad típica | De 9 600 a 115 200 baudios | 10/100 Mbps |
| Distancia | Hasta 1 200 m (RS-485) | Red Ethernet estándar |
| Número de esclavos | De 1 a 247 | Ilimitado (direccionamiento IP) |
| Control de integridad | CRC-16 | Suma de comprobación TCP |
| Seguridad nativa | Ninguna | Ninguna (utilizar VPN) |
Estructura de un mensaje Modbus
Modbus RTU — Trama
| Dirección de esclavo (1 byte) | Código de función (1 byte) | Datos (N bytes) | CRC-16 (2 bytes) |
Ejemplo de consulta FC03 que lee 2 registros a partir de la dirección 0x0000 en el esclavo 1:
01 03 00 00 00 02 C4 0B
Modbus TCP — Trama (con encabezado MBAP)
| ID de transacción (2 bytes) | ID de protocolo (2 bytes, = 0x0000) | Longitud (2 bytes) | ID de unidad (1 byte) | Código de función | Datos |
Registros Modbus
Modbus organiza los datos en cuatro tipos de registros, identificados por su dirección de referencia:
| Tipo | Dirección | Acceso | Descripción |
|---|---|---|---|
| Coils (bobinas) | 0x0001–0xFFFF (base 1) | Lectura/Escritura | Salidas digitales binarias (bit) — estado de una válvula o un relé |
| Entradas discretas | 0x1001–0xFFFF | Solo lectura | Entradas digitales discretas (bit) — estado de un sensor de todo o nada |
| Registros de retención | 0x4001–0xFFFF | Lectura/escritura | Registros de 16 bits de lectura/escritura — consignas, parámetros, valores medidos |
| Registros de entrada | 0x3001–0xFFFF | Solo lectura | Registros de 16 bits de solo lectura — mediciones de sensores, valores de proceso |
Nota: la direccionamiento real en las tramas comienza en 0 (desplazamiento de -1 con respecto a las referencias documentadas). Por lo tanto, el registro de retención (Holding Register) con referencia 40001 tiene la dirección 0x0000 en la trama.
Códigos de función (Function Codes) habituales
| Código | Hex | Nombre | Descripción |
|---|---|---|---|
| FC01 | 0x01 | Leer bobinas | Leer el estado de N bobinas (salidas digitales) |
| FC02 | 0x02 | Leer entradas discretas | Leer el estado de N entradas digitales |
| FC03 | 0x03 | Leer registros de retención | Leer N registros de 16 bits en lectura/escritura — el más utilizado |
| FC04 | 0x04 | Leer registros de entrada | Leer N registros de 16 bits de solo lectura |
| FC05 | 0x05 | Escribir una sola salida digital | Escribir una sola salida digital (0x0000 = OFF, 0xFF00 = ON) |
| FC06 | 0x06 | Escribir un solo registro de retención de 16 bits | |
| FC16 | 0x10 | Escribir varios registros | Escribir varios registros consecutivos en una sola transacción |
El FC03 es, con diferencia, el código más utilizado para la supervisión: permite leer las mediciones, los estados y los contadores de un equipo.
Direccionamiento de esclavo (ID de unidad)
En Modbus RTU, cada dispositivo del bus RS-485 tiene una dirección única comprendida entre 1 y 247. La dirección 0 está reservada para la difusión (broadcast); solo se pueden difundir los comandos de escritura.
En Modbus TCP, el campo Unit ID (antes denominado Slave ID) se conserva en la cabecera MBAP. Por lo general, se fija en 1 o 255 para los controladores con una sola entidad, pero puede utilizarse para direccionar diferentes buses RS-485 detrás de una misma pasarela Modbus TCP/RTU.
Configuración de Modbus en la pasarela Eziwan
La pasarela Eziwan es compatible de forma nativa con Modbus RTU (a través de RS-485) y Modbus TCP (a través de Ethernet). La configuración se realiza a través de la interfaz web de la pasarela:
- Seleccionar el protocolo: elegir «Modbus RTU» o «Modbus TCP» en el menú «Fuente de datos».
- Parámetros serie (solo RTU): velocidad de transmisión (9 600, 19 200, 38 400, 57 600 o 115 200), paridad (Ninguna/Par/Impar), bits de parada (1 o 2).
- Dirección de esclavo: introduce la dirección del equipo (de 1 a 247).
- Definir los puntos de datos: para cada valor que se desee leer, especificar el código de función (FC01 a FC04), la dirección del registro y el tipo de datos (INT16, UINT16, INT32, FLOAT32, BOOL).
- Período de adquisición: frecuencia de sondeo (de 1 segundo a varios minutos, según sea necesario).
- Probar la conexión: utiliza la función «Prueba de lectura» para comprobar que los datos se leen correctamente antes de activar la transmisión a la nube.
Recursos relacionados
- Guía completa sobre RS-485 y Modbus
- Cómo conectar un controlador lógico programable a la plataforma Eziwan
- Artículo del blog: Modbus TCP frente a RTU: ¿cuándo utilizar cada uno?
- PLC / API — Controlador lógico programable
Preguntas frecuentes
¿En qué se diferencian Modbus RTU y Modbus TCP?
Modbus RTU se transmite a través de un enlace serie RS-485 (bus multiesclavo, hasta 1 200 m); Modbus TCP encapsula las mismas solicitudes en una trama Ethernet/IP en el puerto 502. Una pasarela sirve de puente entre ambos entornos.
¿Qué es un registro Modbus?
Una celda de memoria de 16 bits identificada por una dirección. Los registros de retención (holding registers, FC03/FC06/FC16) contienen los valores del proceso; las magnitudes de 32 bits (números en coma flotante, contadores) ocupan dos registros consecutivos.
¿Es seguro Modbus?
No: el protocolo no cuenta con autenticación ni cifrado. Nunca debe exponerse en Internet; la norma es limitarlo a la red local y transportar los datos a la nube a través de un túnel VPN cifrado.
¿Cuántos dispositivos pueden conectarse a un bus Modbus RTU?
Hasta 32 esclavos sin repetidor (247 direcciones lógicas posibles). Si se superan estas cifras, o para combinar diferentes frecuencias de sondeo, se segmenta en varios buses a través de puertos RS-485 distintos.
Recursos relacionados
- Modbus a la nube — recopilar datos y supervisar tus equipos Modbus
- Pasarela Modbus RTU / TCP — el puente serie ↔ IP
- Modbus RTU frente a TCP — la comparativa detallada
- Guía completa de Modbus — configuración y resolución de problemas
- Protocolos industriales — el centro de protocolos OT