El protocolo Modbus es un protocolo de comunicación que se basa en una arquitectura Maestro/Esclavo o Cliente/Servidor. Fue creado en 1979 por Gould-Modicon para la comunicación con sus controladores lógicos programables. En la industria, Modbus se ha convertido en un estándar de facto, ya que es un protocolo abierto. Desde 2007, la versión Modbus TCP forma parte de la norma IEC 61158. [Wikipedia]

Como muestra el siguiente diagrama, Modbus permite la comunicación a través de diferentes redes:

Modbus distingue los siguientes tres modos de operación:

  1. Modbus ASCII:En Modbus ASCII no se transmite una secuencia binaria, sino código ASCII. Esto lo hace directamente legible para los humanos, pero el rendimiento de datos es menor en comparación con RTU.

  2. **Modbus RTU:**Unidad Terminal Remota (RTU) transmite los datos en forma binaria. Esto ofrece un buen rendimiento de datos, pero los datos no pueden analizarse directamente por personas, sino que deben convertirse primero a un formato legible.

  3. **Modbus TCP:**Modbus/TCP es muy similar a RTU, pero se utilizan paquetes TCP/IP para transmitir los datos. El puerto TCP 502 está reservado para Modbus/TCP. [Wikipedia]

En Mondus se trata de una PDU (Protocol Data Unit) o Service Data Unit (SDU), que independientemente de la capa de red subyacente incluye el conjunto completo de datos e información de gestión. Dentro del modelo OSI, el protocolo se sitúa en la capa 7. Mediante el mapeo de Modbus a un bus o red específica se pueden añadir campos adicionales. Esta ampliación aparece en el diagrama como ADU.

El tamaño de un marco es el siguiente:

El modelo de datos Modbus distingue cuatro tipos de datos o tipos de registro diferentes.

La siguiente lista muestra una visión general de los códigos de función PDU:

Para más información sobre los distintos tipos de registro, remito a la especificación.

La siguiente ilustración muestra una comunicación Cliente/Servidor sin errores:

En caso de error, la comunicación se ve así:

Cada participante del bus posee una dirección única. Cada participante puede enviar mensajes por el bus. En la práctica, la comunicación la inicia el Maestro y un Esclavo direccionado responde.

Ejemplo:

Para ilustrar la comunicación entre Cliente (Maestro) y Servidor (Esclavo), utilizo las siguientes aplicaciones:

La ilustración muestra cómo un Esclavo proporciona un valor (24) dentro del registro ‘Holding’ (registro 1 de 65k).

El Maestro se conecta vía TCP puerto 502 con el Esclavo y hace una consulta al registro ‘Holding’ ‘1’ y recibe el valor 24, p. ej. 24 grados Celsius.