Configurar Modbus en un Raspberry Pi PLC con CODESYS

Cómo configurar Modbus TCP y Modbus RTU en un PLC Raspberry Pi de Industrial Shields con CODESYS V3.5 — árbol de dispositivos, mapeo de registros y ejemplo práctico maestro/esclavo.
19 de junio de 2026 por
Configurar Modbus en un Raspberry Pi PLC con CODESYS
Joan F. Aubets - Industrial Shields

Esta guía asume que ya has completado la configuración inicial de CODESYS descrita en Configuración de CODESYS para PLC Raspberry Pi en automatización industrial: CODESYS V3.5 SP19 instalado en tu PC, el runtime CODESYS Control for Raspberry Pi ejecutándose en el PLC, y una conexión activa entre ambos.

También necesitarás el paquete CODESYS Modbus instalado en CODESYS. Si no está disponible, descárgalo desde la CODESYS Store e instálalo desde Tools → Package Manager.

Maestro Modbus TCP

Esta configuración establece el PLC Raspberry Pi como Maestro Modbus TCP — el dispositivo que inicia la comunicación y lee o escribe datos en uno o más esclavos de la red.

1. Añadir el Modbus TCP Master al árbol de dispositivos

En el panel Devices, haz clic derecho sobre Ethernet (el adaptador de red de tu Raspberry PLC) y selecciona Add Device. En el catálogo de dispositivos, navega hasta Fieldbuses → Modbus → Modbus TCP Master y añádelo.

2. Configurar el maestro

Haz doble clic en el dispositivo Modbus TCP Master para abrir sus propiedades. La configuración por defecto (puerto 502, reconexión automática habilitada) funciona para la mayoría de aplicaciones. Activa Auto-reconnect para gestionar interrupciones de red temporales de forma automática.

3. Añadir un esclavo Modbus TCP

Haz clic derecho sobre el Modbus TCP Master y selecciona Add Device → Modbus TCP Slave. En las propiedades del esclavo, configura:

  • Dirección IP: la dirección IP del dispositivo esclavo
  • Puerto: 502 (por defecto)
  • Unit Identifier (Slave ID): normalmente 1, salvo que tu dispositivo indique otro valor

4. Configurar el canal (mapeo de registros)

Bajo el Modbus TCP Slave, haz doble clic en Modbus TCP Slave I/O Mapping para definir qué registros leer o escribir. Añade canales con Add Channel y configura:

  • Código de función: FC3 (Read Holding Registers) para leer, FC16 (Write Multiple Registers) para escribir
  • Offset: dirección inicial del registro en el dispositivo esclavo
  • Length: número de registros a leer o escribir

Cada canal se asigna a una variable en tu proyecto CODESYS. Asigna los nombres de variable en la pestaña I/O Mapping.

5. Declarar las variables en el programa PLC

En tu PLC_PRG o en un POU, declara las variables que has mapeado. Ejemplo para leer 4 holding registers de un esclavo:

VAR
    rTemperature    : REAL;
    rPressure       : REAL;
    rFlowRate       : REAL;
    rLevel          : REAL;
END_VAR

Tras compilar y desplegar, CODESYS consultará el esclavo en cada ciclo de scan y actualizará las variables mapeadas automáticamente.

Esclavo Modbus TCP

Esta configuración establece el PLC Raspberry Pi como Esclavo Modbus TCP — expone un conjunto de registros que un maestro externo (SCADA, HMI, otro PLC) puede leer o escribir.

1. Añadir el Modbus TCP Slave al árbol de dispositivos

Haz clic derecho sobre Ethernet en el panel Devices y selecciona Add Device → Modbus TCP Slave.

2. Configurar el esclavo

En las propiedades del esclavo, configura:

  • Puerto: 502 (por defecto)
  • Unit Identifier: 1 (o el que requiera tu maestro)

3. Definir la tabla de registros

En el Modbus TCP Slave I/O Mapping, define qué variables de tu proyecto serán accesibles para el maestro externo. Mapea tus variables a las áreas de registro correspondientes (Holding Registers, Input Registers, Coils o Discrete Inputs).

Cualquier variable mapeada aquí será legible o modificable por un maestro Modbus TCP externo en las direcciones de registro configuradas.

Maestro Modbus RTU

Modbus RTU funciona a través del puerto RS-485 del PLC Raspberry Pi. Usa esta configuración para comunicarte con dispositivos de campo como sensores, variadores o medidores conectados por RS-485.

1. Identificar el puerto serie

En los PLCs Raspberry Pi de Industrial Shields, el puerto RS-485 aparece en CODESYS como dispositivo COM Port. Normalmente es /dev/ttySC0 o /dev/ttySC2 según el modelo. Consulta la guía de usuario de tu modelo para confirmar qué puerto corresponde a la interfaz RS-485.

2. Añadir el puerto COM al árbol de dispositivos

En el panel Devices, haz clic derecho sobre tu dispositivo Raspberry Pi y selecciona Add Device → COM Port. Establece el puerto con la ruta del dispositivo RS-485 identificada anteriormente.

3. Añadir el Modbus COM Master

Haz clic derecho sobre el COM Port y selecciona Add Device → Modbus COM Master. En las propiedades del maestro, configura:

  • Baud rate: debe coincidir con el dispositivo esclavo (normalmente 9600 o 19200)
  • Paridad: None, Even u Odd — debe coincidir con el esclavo
  • Stop bits: 1 o 2 — debe coincidir con el esclavo

4. Añadir dispositivos Modbus COM Slave

Haz clic derecho sobre el Modbus COM Master y añade un Modbus COM Slave por cada dispositivo físico en el bus RS-485. En las propiedades de cada esclavo, establece:

  • Slave Address: la dirección Modbus del dispositivo (1–247)

A continuación, configura los canales y el mapeo de E/S del mismo modo que el esclavo TCP descrito anteriormente.

Esclavo Modbus RTU

Para configurar el PLC Raspberry Pi como esclavo Modbus RTU (respondiendo a un maestro externo por RS-485):

Haz clic derecho sobre el COM Port y selecciona Add Device → Modbus COM Slave. Establece el Slave Address con la dirección que usará tu maestro para identificar este dispositivo. Mapea las variables del proyecto a la tabla de registros en la pestaña I/O Mapping.

Ejemplo práctico: lectura de un sensor Modbus RTU

Un caso de uso habitual es la lectura de datos de un sensor industrial — por ejemplo, un transmisor de temperatura y humedad Modbus RTU conectado por RS-485.

Pasos de configuración típicos:

  1. Consulta el datasheet del sensor para obtener: dirección esclavo, baud rate, paridad y mapa de registros (qué registro contiene la temperatura, cuál la humedad).
  2. Configura el COM Master con los parámetros serie del sensor.
  3. Añade un Modbus COM Slave con la dirección del sensor.
  4. Añade un canal por valor: FC3 en la dirección de registro especificada en el datasheet, longitud 1 (un registro de 16 bits por valor, o 2 si el sensor usa floats de 32 bits).
  5. Mapea los canales a variables REAL o INT en tu proyecto.
  6. En PLC_PRG, usa las variables directamente — CODESYS las actualiza en cada ciclo de scan.

Ejemplo de uso de variables en Texto Estructurado:

IF rTemperature > 75.0 THEN
    bOverheatAlarm := TRUE;
END_IF

Resolución de problemas

El esclavo no responde (Modbus TCP): verifica que el esclavo es accesible haciendo ping a su IP desde la Raspberry Pi. Comprueba que ningún firewall está bloqueando el puerto 502.

El esclavo no responde (Modbus RTU): verifica el cableado RS-485 (A+ con A+, B- con B-). Confirma que el baud rate y la paridad coinciden entre maestro y esclavo. Comprueba que estás usando el puerto serie correcto para tu modelo de PLC.

Las variables no se actualizan: confirma que el runtime CODESYS está ejecutándose en el PLC (no solo conectado). Revisa el panel Messages en busca de errores de dispositivo. Verifica que el tiempo de ciclo de la tarea de scan no sea demasiado rápido para la velocidad de consulta Modbus.

Valores de registro incorrectos: comprueba el offset de dirección de registro en la configuración del canal. Algunos dispositivos usan direccionamiento desde 0, otros desde 1 — consulta la documentación del esclavo.

Posts relacionados

Explora la gama completa de PLCs Raspberry Pi en industrialshields.com

Buscar en nuestro blog

Configurar Modbus en un Raspberry Pi PLC con CODESYS
Joan F. Aubets - Industrial Shields 19 de junio de 2026
Compartir esta publicación
Etiquetas

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.

Comparativa de PLCs