Comunicación industrial: Modbus

comunicación-industrial modbus

Introducción

Este post es recuperando una sección que utilizo en mi TFM donde explicaba la comunicación industrial y Modbus. Espero que sea útil para alguien que quiera aprender sobre estos temas.

Comunicación Industrial

En los sistemas industriales modernos, la comunicación entre dispositivos es un elemento clave para garantizar la automatización, supervisión y control de procesos. Existen múltiples tecnologías y protocolos diseñados específicamente para este entorno, cada uno con ventajas en términos de velocidad, robustez, topología y compatibilidad.

Comunicación Industrial

Entre las comunicaciones industriales más comunes se encuentran:

  • Profibus y Profinet: desarrollados por Siemens, ampliamente utilizados en Europa. Profibus se basa en comunicación serie, mientras que Profinet utiliza Ethernet industrial.

  • EtherCAT: protocolo basado en Ethernet, diseñado para aplicaciones de tiempo real y muy baja latencia.

  • CANopen: basado en el bus CAN, muy extendido en automoción e industrias que requieren alta fiabilidad en redes distribuidas.

  • EtherNet/IP: estándar industrial basado en TCP/IP, promovido por Rockwell Automation, muy usado en Norteamérica.

  • Modbus: uno de los protocolos más antiguos y extendidos, valorado por su simplicidad, compatibilidad e implementación en equipos de bajo coste.

  • MQTT (Message Queuing Telemetry Transport): protocolo ligero basado en el modelo publicador/suscriptor, ampliamente adoptado en IoT industrial por su bajo consumo de ancho de banda y su facilidad para conectar dispositivos remotos con sistemas de supervisión en la nube.

La elección de un protocolo depende de factores como la criticidad del tiempo de respuesta, la compatibilidad con los equipos existentes, la complejidad de la red y los costes de implementación. En la siguiente tabla se presenta una comparativa de los protocolos anteriormente mencionados.

ProtocoloTipo/ModeloVelocidadTiempo realComplejidadUsos
ModbusMaestro / EsclavoBaja (115 kbps RTU, Mbps en TCP)NoMuy bajaAutomatización básica, compatibilidad con PLCs y sensores
ProfibusMaestro / EsclavoMedia (hasta 12 Mbps)ParcialMediaRedes industriales en Europa, PLC Siemens
ProfinetEthernet industrialAlta (100 Mbps+)Media / AltaAutomatización avanzada, tiempo real
EtherCATEthernet industrialMuy alta (100 Mbps determinístico)AltaRobótica, control de movimiento
CANopenBus CANMedia (hasta 1 Mbps)Sí (limitado)MediaAutomoción, maquinaria distribuida
EtherNet / IPTCP / IP industrialAlta (100 Mbps+)Sí (con CIP Sync)AltaIndustria en Norteamérica, integración con IT
MQTTPublicador / SuscriptorDepende de red (TCP/IP)No (orientado a datos)Muy bajaIoT industrial, supervisión remota, cloud

:Comparativa de Protocolos de Comunicación Industrial. Fuente: Maisvch {#tbl:protocolos-comunicacion}

Según lo visto, los protocolos más usados para comunicaciones con PLC son Modbus y Profibus. Al contrario de Profibus que se centra en PLC Siemens, Modbus es un protocolo más genérico y ampliamente adoptado. Por ello, este trabajo se centrará en Modbus.

Protocolo Modbus

El protocolo Modbus, desarrollado en 1979 por Modicon (actual Schneider Electric), se basa en un modelo de comunicación maestro-esclavo. El cliente es el encargado de iniciar las transacciones solicitando la lectura o escritura de datos, mientras que el servidor responde proporcionando la información requerida o confirmando la acción realizada.

Existen varias implementaciones del protocolo: Modbus RTU (orientado a comunicación serie en entornos industriales), Modbus TCP (sobre redes Ethernet) y Modbus ASCII (menos utilizado en la actualidad). Cada una de estas variantes mantiene la misma estructura lógica, lo que facilita la migración entre tecnologías según el entorno físico de la red.

Las funciones principales de Modbus se centran en la lectura y escritura de registros, con operaciones que permiten obtener estados binarios, valores analógicos o modificar parámetros de configuración en dispositivos remotos.

Mapeo de Registros

Modbus organiza la información en distintos espacios de memoria denominados registros, los cuales representan variables binarias o analógicas accesibles mediante funciones de comunicación. Los principales se resumen en la siguiente tabla.

Tipo de RegistroDirección típicaAccesoUso común
Coils00001–09999R/WEstados de salida digital
Discrete Inputs10001–19999RLectura de entradas digitales
Input Registers30001–39999RLectura de valores analógicos
Holding Registers40001–49999R/WVariables de proceso y consignas

:Mapeo de Registros Modbus {#tbl:mapeo-registros-modbus}

Este mapeo permite representar desde señales binarias (ejemplo: un relé activado) hasta valores analógicos como temperatura, presión o caudal. En la práctica, los sistemas SCADA o aplicaciones de supervisión utilizan estas direcciones para consultar y controlar el estado de los dispositivos conectados.

Tipo de Datos

Los registros Modbus pueden contener diferentes tipos de datos, los cuales ocupan diferentes espacios en memoria y tienen distintos rangos de valores. En la siguiente tabla se resumen los formatos más comunes.

FormatoIEC 61131-3DescripciónBitsMin ValorMax Valor
BOOLBOOLRepresenta un único estado (0 o 1).101
INT16INTNúmero entero de 16 bits.16-3276832767
UINT16UINTNúmero entero sin signo de 16 bits.16065535
INT32DINTNúmero entero de 32 bits.32-21474836482147483647
UINT32UDINTNúmero entero sin signo de 32 bits.3204294967295
REALREALNúmero de punto flotante de 32 bits.32-3.4028235E383.4028235E38

:Formatos de Datos Modbus. Fuente: Ingeteam {#tbl:formatos-datos-modbus}

Formato Real

El formato REAL de 32 bits según IEEE 754 permite representar números decimales en sistemas industriales. La estructura incluye un bit de signo, un exponente y una mantisa. El orden de los bytes en Modbus es específico y no secuencial. Los valores del exponente determinan si el número es normalizado, cero, infinito o NaN (no es un número). Así, se pueden identificar y manejar correctamente valores especiales en la comunicación industrial. En la siguiente tabla se detalla la estructura del formato REAL.

SignoExponenteMantisa
3130-2322-0

:Estructura del Formato REAL. Fuente: Ingeteam {#tbl:estructura-real}

Como ejemplo, si se quiere representar el número decimal -3.5 en formato REAL, se seguirían los pasos de conversión a binario y ajuste a la norma IEEE 754, obteniendo una representación específica en los registros Modbus.

  1. Conversión a Binario: El número -3.5 en binario se representa como -11.1. En formato de punto flotante, se normaliza a -1.11 x 2^1.
  2. Ajuste a IEEE 754: Se asignan los valores a la estructura: bit de signo = 1, exponente = 10000001 (en binario) y mantisa = 11000000000000000000000 (en binario).
  3. Representación en Registros Modbus: Finalmente, se organiza la información en los registros Modbus, teniendo en cuenta el orden de los bytes.

Gestión de Errores de Comunicación

En la comunicación industrial es de vital implementar mecanismos para detectar y gestionar errores que puedan surgir durante la transmisión de datos. Por lo tanto, Modbus incluye diversos mecanismos integrados para detectar, reportar y manejar errores de comunicación.

Tipos de Errores

En la documentación oficial de Modbus, se mencionan estos principales tipos de errores:

  • Transmisión física: el error más común en las comunicaciones están relacionados a esta causa.
  • CRC: cuando el receptor computa el CRC y este es diferente al enviado se detecta el error, y el mensaje es descartado.
  • Timeout:: cuando el dispositivo maestro no recibe respuesta del esclavo dentro de un tiempo establecido.
  • Bytes Insuficientes: cuando se recibe un número menor de bytes del esperado.
  • Excepciones Propias: ver la siguiente tabla.
CódigoNombre
0x01Función ilegal
0x02Dirección de datos ilegal
0x03Valor de datos ilegal
0x04Fallo del dispositivo servidor
0x05Reconocimiento
0x06Dispositivo servidor ocupado
0x08Error de paridad de memoria

:Excepciones Modbus. Fuente: Documentación Modbus {#tbl:excepciones-modbus}

Estrategias de Manejo de Errores

Existen dos enfoques principales para el manejo de errores: la recuperación automática y el monitoreo.

En cuanto a la recuperación automática, se pueden aplicar reintentos automáticos: cuando se detecta un error de timeout o CRC, el maestro puede reenviar la petición un número limitado de veces antes de reportar el fallo definitivo. Por otro lado, el diagnóstico y monitoreo se apoya en herramientas especializadas como Modbus Poll, Modbus Slave y Serial Port Monitor, que permiten:

  • Monitorear el tráfico en tiempo real
  • Detectar errores de configuración
  • Verificar la integridad de las tramas

Para identificar problemas sistemáticos en la red, es posible implementar técnicas de análisis de patrones de errores, como el Análisis de Componentes Principales (PCA).