Fundamentos de Modbus: tipos de datos, códigos de función, RTU y TCP
Fundamentos de Modbus
Modbus es un protocolo de comunicación ampliamente utilizado con PLCs (Controladores Lógicos Programables). Este protocolo utiliza líneas de comunicación serial o Ethernet como capa de transporte y permite la comunicación hacia y desde múltiples dispositivos conectados al mismo cable o red Ethernet. Los PLCs de Industrial Shields son compatibles con Modbus RTU a través de RS-232 o RS-485, así como con Modbus TCP a través de Ethernet.
Características clave
- Arquitectura maestro-esclavo/cliente-servidor: Modbus utiliza una arquitectura maestro- esclavo (o cliente-servidor). En este sistema, un dispositivo actúa como maestro, iniciando la comunicación al enviar solicitudes, mientras que los dispositivos esclavos responden a estas.
- Sencillo y confiable: Es conocido por su simplicidad y fiabilidad, lo que lo convierte en una opción adecuada para aplicaciones de control en tiempo real.
- Funciones estándar: Modbus define un conjunto de funciones para leer y escribir datos, entre ellas:
- Lectura y escritura de salidas discretas (bobinas) y lectura de entradas discretas.
- Lectura y escritura de múltiples registros.
Tipos de datos
En Modbus, los tipos de datos se pueden dividir principalmente en dos categorías: bobinas (coils)y registros (registers). Las bobinas (coils) se pueden entender como digitales, ya que solo pueden estar en estados ON (1) o OFF (0). Los "coils" pueden representar entradas, que monitorean el estado de interruptores o sensores, o salidas, que controlan dispositivos como motores o luces.
Los registros (registers), por otro lado, son de 16 bits (2 bytes) sin signo, lo que les permite contener valores que van de 0 a 65535 (0 a FFFF). Sin embargo, tienen limitaciones, como no poder representar números negativos, números de punto flotante o valores superiores a 65535, sin un tratamiento adicional o combinando varios registros.
La siguiente tabla resume los tipos de objetos en Modbus:
Tipos de objetos | Acceso | Longitud | Rol |
Entrada discreta | Solo lectura | 1 bit | Entrada digital |
Bobinas (Coils) | Lectura/escritura | 1 bit | Salida digital |
Registros de entrada | Solo lectura | 16 bits | Entrada analógica |
Registros de retención | Lectura/escritura | 16 bits | Salida analógica |
Nuestros PLCs permiten un control y monitoreo precisos al referenciar bobinas (coils) y registros (registers), tanto entradas como salidas, según roles específicos.
Códigos de función
Modbus funciona como un protocolo de solicitud y respuesta, utilizando códigos de función, para especificar los servicios que ofrece. Estos códigos son elementos clave de la Unidad de Datos del Protocolo Modbus (PDU), que definen las tareas que los dispositivos servidor (esclavo) deben realizar al recibir una solicitud del cliente (maestro).
El campo del código de función en un mensaje Modbus es un byte único, con valores válidos que van del 1 al 255. Los códigos del 128 al 255 están reservados para respuestas de excepciones. Y el código '0' no se utiliza. Cuando un cliente envía una solicitud a un servidor, el código de función indica el tipo de operación a ejecutar. Como la lectura o escritura de bobinas, entradas discretas, registros de mantenimiento o registros de entrada.
Códigos de función comunes
| Código de función (FC) | Acción | Nombre de la función |
| 01 | Lectura | Lectura de bobinas (coils) |
| 02 | Lectura de entradas discretas | |
| 03 | Lectura de registros de retención | |
| 04 | Lectura de registros de entrada | |
| 05 | Escritura | Bobina única |
| 06 | Registro de retención único | |
| 15 | Múltiples bobinas | |
| 16 | Varios registros de retención |
Versiones de Modbus
Modbus RTU
Modbus RTU es una implementación de Modbus que utiliza representación binaria y transmisión asíncrona. Generalmente, se usa sobre interfaces seriales RS-232 o RS-485.
En Modbus RTU, los datos se transmiten en un formato binario compacto, lo que lo hace eficiente para la comunicación a través de líneas seriales.
Formato del marco
Un marco de Modbus RTU consta de los siguientes campos:
- Address Field: Identifica al dispositivo esclavo.
- Function Code: Indica el tipo de acción a realizar.
- Data Field: Contiene los datos de la solicitud o respuesta.
- CRC (Cyclic Redundancy Check): Asegura la integridad del mensaje.

Dependiendo del código de función utilizado, los datos en el marco cambian:
- Para los "Read function codes", que comprenden desde FC=01 hasta FC=04, en el marco se debe especificar la Dirección (Address) de la primera bobina (coil)/registro (dependiendo del código de función utilizado) y el Número (Num) de bobinas (coils)/registros (registers) a leer.

- Para los "Write Single Coil/Register function codes", que son FC=05 y FC=06, en el marco se debe especificar la Dirección (Address) de la bobina (coil)/registro (register) a escribir (dependiendo del código de función utilizado) y el Valor (Value) de las bobinas (coils)/registros (registers) a escribir.

- Para los Write Multiple Coils/Registers function codes, que son FC=15 y FC=16, en el marco se debe especificar la Dirección (Address) de la primera bobina (coil)/registro (register) a escribir (dependiendo del código de función utilizado), el Número (Num) de bobinas (coils) / registros (registers) a escribir, el número de bytes de datos en la solicitud (BC) y los valores de las bobinas (coils) /registros (registers) a establecer en valores (values).

Modbus TCP
Modbus TCP es una implementación del protocolo Modbus que utiliza Ethernet como su capa de transporte.
Modbus TCP ofrece ventajas como tasas de transmisión de datos más rápidas, mayor cobertura de distancia y una integración más fácil con otros sistemas basados en Ethernet.
Formato del marco
Un marco de Modbus TCP consta de varios campos:
- Cabecera MBAP (Modbus Application Protocol):
- Transaction Identifier: Empareja las solicitudes con las respuestas.
- Protocol Identifier: Siempre cero para Modbus.
- Length: Indica el número de bytes restantes del mensaje.
- Unit Identifier: Identifica el dispositivo servidor remoto.
- Function Code: Indica el tipo de acción a realizar.
- Data: Contiene los datos de la solicitud o respuesta.

El campo de Datos (Data) del marco actúa de la misma manera que con Modbus RTU, dependiendo del código de función utilizado.
No hay comentarios por ahora.