1. El Reinado del RS-485 y Modbus RTU
Antes de la llegada de Ethernet a la planta, el protocolo de comunicación más universal y robusto era Modbus RTU, que operaba sobre una capa física RS-485. Para un técnico de automatización (UF1794), es crucial entender sus fundamentos, ya que miles de dispositivos "legacy" siguen utilizándolo.
- Capa Física (RS-485): Es un bus serie que utiliza un par de cables trenzados. Permite conectar hasta 32 dispositivos en una topología de "Daisy-Chain" (línea) a lo largo de cientos de metros. Es Half-Duplex, lo que significa que solo un dispositivo puede "hablar" a la vez.
- Capa Lógica (Modbus RTU): Sigue un estricto modelo Maestro-Esclavo. Solo puede haber un Maestro en el bus. El Maestro interroga (hace "polling") a cada Esclavo de forma secuencial: "Esclavo 1, dame tu temperatura", espera la respuesta, "Esclavo 2, dame tu presión", espera la respuesta, y así sucesivamente.
- Limitaciones: Este modelo es lento, no permite que varios maestros consulten datos simultáneamente y es muy sensible a errores de cableado y ruido eléctrico.
2. Modbus TCP: La Encapsulación Inteligente
Con la llegada de Ethernet, en lugar de inventar un protocolo nuevo, la industria optó por una solución brillante: tomar el "corazón" de Modbus RTU y "envolverlo" o encapsularlo dentro de un paquete TCP/IP estándar. Así nació Modbus TCP.
La idea es simple: la parte de datos del mensaje Modbus (llamada PDU - Protocol Data Unit) es idéntica en RTU y en TCP. Lo único que cambia es el "sobre" que la transporta. Modbus TCP utiliza el puerto estándar 502 y reemplaza el modelo Maestro-Esclavo por el modelo Cliente-Servidor, mucho más flexible, donde múltiples Clientes (SCADAs, HMIs) pueden consultar a un mismo Servidor (PLC) de forma simultánea.
3. El Encabezado MBAP (Modbus Application Protocol)
Para que esta encapsulación funcione, Modbus TCP añade una pequeña cabecera de 7 bytes al principio del paquete, llamada MBAP Header. Esta cabecera es el "traductor" entre el mundo Modbus y el mundo TCP/IP.
- Transaction ID (2 bytes): Un número de secuencia. Permite a un Cliente enviar múltiples peticiones sin esperar la respuesta de la anterior. El Servidor incluirá este mismo ID en su respuesta, para que el Cliente sepa a qué pregunta corresponde.
- Protocol ID (2 bytes): Siempre es 0 para Modbus.
- Length (2 bytes): Indica cuántos bytes de datos vienen a continuación.
- Unit ID (1 byte): Este es el campo más importante para la integración. Actúa como el antiguo "ID de Esclavo". Permite que un único dispositivo con una IP (un Gateway Modbus TCP) actúe como pasarela para toda una red de dispositivos Modbus RTU serie. El Cliente TCP envía la petición a la IP del Gateway, pero pone en el Unit ID el número del esclavo final al que quiere llegar.
Es importante destacar que Modbus TCP elimina el campo CRC que era vital en Modbus RTU. La razón es que la capa TCP ya se encarga de forma nativa y mucho más robusta de la detección y corrección de errores, por lo que el CRC se vuelve redundante.
Fuente: Elaboración Propia. Licencia: CC BY-SA 4.0.
🎥 Formación Técnica: Modbus RTU vs. Modbus TCP
Comprende visualmente las diferencias físicas y lógicas entre el bus serie y la red Ethernet, y por qué el MBAP Header es la clave para la integración de sistemas modernos y antiguos.
▶ Ver Comparativa en YouTube📝 Evaluación Técnica: Evolución de Protocolos
1. ¿Cuál es la principal diferencia en el modelo de comunicación entre Modbus RTU y Modbus TCP?
2. En Modbus TCP, ¿qué función cumple la cabecera MBAP (Modbus Application Protocol)?
3. Un Gateway Modbus TCP tiene la IP 192.168.1.100 y está conectado a una línea serie RS-485 con 5 variadores (esclavos RTU con IDs del 1 al 5). Si un cliente SCADA quiere leer la velocidad del variador con ID=3, ¿cómo lo hace?
🤖 Ejercicio Práctico 5: Cliente Modbus TCP en Python
Objetivo: Crear un cliente Modbus TCP funcional para leer datos de un dispositivo real o simulado, entendiendo la simplicidad y potencia del protocolo.
Copia el siguiente *prompt* y pégalo en un modelo de IA (como ChatGPT, Gemini o Claude).