6. Modbus

¿Qué es Modbus?

Modbus es un protocolo de comunicación abierto, utilizado para transmitir información a través de redes en serie entre dispositivos electrónicos. El dispositivo que solicita la información se llama maestro  cliente Modbus y los dispositivos que suministran la información son los esclavos  server Modbus.

Sitio:https://modbus.org/

 


Desde el 9 de Julio de 2020, Modbus reemplaza el termino master-slave por client-server, por cuestiones racismo.(https://modbus.org/docs/Client-ServerPR-07-2020-final.docx.pdf)

El esquemático quedaría:


 

 

MODBUS es un protocolo de mensajería de capa de aplicación, posicionado en el nivel 7 del modelo OSI,

que proporciona comunicación cliente/servidor entre dispositivos conectados en diferentes tipos de

autobuses o redes.
 

El estándar serial de facto de la industria desde 1979, MODBUS continúa permitiendo a millones de Dispositivos de automatización para comunicarse. Hoy, el apoyo a la estructura simple y elegante de MODBUS sigue creciendo. La comunidad de Internet puede acceder a MODBUS al puerto reservado 502 en la pila TCP/IP.
MODBUS es un protocolo de solicitud/respuesta y ofrece servicios especificados por códigos de función.

Los códigos de función MODBUS son elementos de las PDU (Unidad de datos del protocolo) de solicitud/respuesta MODBUS. El documento original de este protocolo se puede acceder a : https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf
 
¿Quién inventó Modbus?
Este protocolo industrial estándar fue creado por Modicon, ahora Schneider Electric, a finales de los 70 para la comunicación entre controladores lógicos programables (PLC). En la actualidad, Modbus sigue siendo el protocolo más usado para conectar dispositivos industriales.
El SCADA que es una herramienta de automatización y control industrial utilizada en los procesos productivos que puede controlar, supervisar, recopilar datos, analizar datos y generar informes a distancia mediante una aplicación informática. Su principal función es la de evaluar los datos con el propósito de subsanar posibles errores.
 
¿Como funciona?
 
 
El Cliente pide información a los Servidores, los Servidores SOLO responden a pedidos del Cliente.
Trama

Podrían existir direcciones de Servidores de 1 a 247 en principio.
En modo Unicast el Cliente consulta a UNO de los Servidores. En modo Broadcast a TODOS.
En el diagrama podemos ver un escenario de funcionamiento con el diagrama temporal.
 
 
 
 
 
Actualmente se implementa usando:
  • TCP/IP sobre Ethernet. Consulte la Guía de implementación de mensajería MODBUS V1.0a.
  • Transmisión serial asíncrona a través de una variedad de medios (cable: EIA/TIA -232-E, EIA-422,EIA/TIA-485-A; fibra, radio, etc.)
  • MODBUS PLUS, una red de paso de token de alta velocidad.

Esquema de una red Modbus.

Trama

Campo Función: valores de 1 a 127, el rango 128 a 255 está reservado. El 0 no es válido. Para mayores referencias sobre los campos de función referirse a la bibliografía. A modo de resumen presentamos una tabla que resume:

Implementaciones de Modbus.

Las más comunes son:

  •     Modbus RTU
  •     Modbus TCP
  •     Modbus ASCII
  •     Modbus Plus

Modbus RTU.

En esta configuración se usa una codificación binaria en el campo de datos y una fuerte verificación de errores CRC. En realidad, es la implementación del protocolo Modbus utilizado con mayor frecuencia en aplicaciones industriales e instalaciones de producción automatizada.

Los datos se transmiten en bytes de 8 bits, un bit cada vez, a velocidades en baudios que van de 1200 bits por segundo (baudios) a 115200 bits por segundo. La mayoría de los dispositivos sólo soportan velocidades de hasta 38400 bits por segundo.

Modbus ASCII

Es similar al Modbus RTU , solo que en el campo de datos de la trama van caracteres ASCII. Modbus ASCII es una implementación más antigua que contiene todos los elementos de un paquete RTU, pero expresada completamente en caracteres ASCII imprimibles. Estos son caracteres hexadecimales que contienen 4 bits de datos cada uno.

Actualmente, este protocolo se considera obsoleto, ya no se utiliza con frecuencia y no está incluido en la especificación formal del protocolo Modbus.

 

¿Qué diferencias existen entre Modbus ASCII y Modbus RTU?
La principal diferencias principales son:
- Modbus RTU comunica a 8 bits de datos y Modbus ASCII a 7 bits.
- El inicio y fin de trama en RTU se realiza por intervalos de tiempo, el inicio y fin es una pausa de al menos 3.5 caracteres (tiempo que tarda en transmitirse 1 caracter) y entre caracteres no se puede superar un pausa superior de 1.5; En ASCII en cambio el inicio de trama se informa con el carácter ":" y el fin de trama con los caracteres Carrier Return + Line Feed (CR+LF). 
- Modbus ASCII utiliza para el control de errores el mecanismo LRC (Longitudinal Redundancy Check), mientras que MB RTU utiliza CRC 

 
Modbus TCP

Modbus/TCP se introdujo para aprovechar las infraestructuras LAN actuales. A su vez,  aumentó el número de unidades que podían conectarse a la misma red.
Este sistema engloba los bloques de datos de solicitud y respuesta del Modbus RTU en un bloque TCP transmitido a través de redes estándar de Ethernet.
Por otro lado, el número de unidades sigue estando incluido y su interpretación varía según la aplicación: la dirección de la unidad o del esclavo no es el medio principal de direccionamiento en el TCP. Entonces, la dirección más importante aquí es la dirección IP,.
El puerto estándar para Modbus TCP es el 502, pero el número de puerto a menudo puede reasignarse si se desea.
La versión TCP  sigue el modelo de referencia de Red OSI. Por otro lado, define las capas de presentación y aplicación en el modelo OSI.
En consecuencia, Modbus TCP hace que la definición de maestro y esclavo sea menos obvia, porque la Ethernet permite la comunicación entre pares. La definición de cliente y servidor son los elementos más conocidos en las redes basadas en Ethernet.

En este contexto, el esclavo se convierte en el servidor y el maestro en el cliente. Puede haber más de un cliente que obtenga datos de un servidor. En términos de Modbus, esto significa que puede haber múltiples maestros así como múltiples esclavos.

El Modbus/TCP se utiliza frecuentemente en

  •     PLC (controladores industriales)
  •     Sistemas SCADA (visualizaciones y control básico de procesos industriales)
  •     Sensores y actuadores

Modbus Plus (MB+)

Modbus Plus es un protocolo de red con alta velocidad punto a punto (1 a 2 Mbps). Es una versión mejorada de Modbus creada por Schneider y Modicon, (hoy es manejada por la organización Modbus) pensada para el control Industrial. A diferencia de comunicación Cliente/Servidor, cualquier dispositivo puede iniciar la transmisión, siempre que cumpla la condición de poseer el token (Token passing channel access )

El token (trama especial) circula entre todos los nodos de la red (cada dispositivo va pasando el token al siguiente). Solo el nodo que posee el token puede transmitir datos, lo que elimina la posibilidad de colisiones en el bus. En definitiva, es un sistema completo con un medio predefinido y la aplicación de un sistema de comunicación de paso rápido, da lugar a un funcionamiento determinista, aunque no del todo rápido en todas las condiciones.(Recordar Token Ring).

Por consiguiente, es un sistema LAN para aplicaciones de control industrial, que permite a los dispositivos en red intercambiar mensajes para el control y la supervisión de procesos en lugares remotos de la planta industrial.

La capa física se implementa con RS485 y funciona sobre cable de par trenzado blindado.