Inicio Blog CODESYS
CODESYS · Modbus TCP

Comunicación Modbus TCP con CODESYS: guía completa para integradores

Febrero 2025 7 min lectura Hexadecimal SL
Comunicación Modbus TCP CODESYS industrial

Modbus TCP lleva más de 25 años en producción y sigue siendo el protocolo de comunicación más extendido en entornos industriales. Su sencillez, su amplio soporte en dispositivos de campo y la ausencia de coste de licencia lo mantienen vigente incluso frente a OPC-UA o MQTT. CODESYS incluye un stack Modbus TCP certificado que, configurado correctamente, permite integrar cientos de dispositivos con muy poco overhead de programación.

El modelo Modbus: registros, funciones y dirección

Antes de configurar nada en CODESYS, es fundamental entender el modelo de datos de Modbus. Todo gira en torno a cuatro espacios de datos:

EspacioFunción de lecturaFunción de escrituraTipo
Coils (0x)FC01FC05 / FC15Bit R/W
Discrete Inputs (1x)FC02Bit R
Input Registers (3x)FC04Word 16-bit R
Holding Registers (4x)FC03FC06 / FC16Word 16-bit R/W

En la práctica, el 90% de los dispositivos de campo exponen sus datos en Holding Registers (FC03/FC16). La dirección de los registros puede ser base-0 (el registro "1" se accede como dirección 0) o base-1 según el dispositivo — consulta siempre el datasheet del esclavo y verifica el offset.

Configurar el maestro Modbus TCP en CODESYS

En CODESYS, el maestro Modbus TCP se añade como un dispositivo en la vista de árbol del proyecto bajo el nodo Ethernet. Los pasos son:

  1. En Device Tree, haz clic derecho sobre el interfaz Ethernet → Agregar dispositivo
  2. Selecciona Modbus TCP Master del catálogo de dispositivos
  3. Bajo el maestro, agrega un Modbus TCP Slave por cada dispositivo de campo
  4. Configura la IP del esclavo, el puerto (defecto: 502) y el Unit ID (normalmente 1 o 255)
  5. En la pestaña Modbus TCP Slave Channel, define los canales de lectura y escritura

Definición de canales de comunicación

Cada canal representa una petición Modbus independiente. Para un canal de lectura de Holding Registers:

Optimización importante: agrupa registros contiguos en un solo canal en lugar de crear un canal por cada registro individual. Una petición de 20 registros consecutivos es igual de rápida que una de 1 solo, y reduce drásticamente el overhead de red y el tiempo de ciclo de comunicación.

Mapeo de variables en CODESYS

Los registros leídos se mapean automáticamente en el árbol de I/O de CODESYS como variables de tipo WORD o ARRAY OF WORD. Para tipos de dato más complejos (REAL de 32 bits, enteros con signo) necesitas conversión explícita en ST:

(* Leer REAL de 32 bits en dos registros consecutivos Word *)
VAR
    reg_hi : WORD;   (* Registro 40001 → Word alto *)
    reg_lo : WORD;   (* Registro 40002 → Word bajo *)
    valor  : REAL;
END_VAR

(* Combinar los dos Words en DWORD y convertir a REAL *)
valor := DWORD_TO_REAL(
    SHL(WORD_TO_DWORD(reg_hi), 16) OR WORD_TO_DWORD(reg_lo)
);

El orden de los bytes (Big Endian vs Little Endian) y el orden de los Words varía por fabricante. Si obtienes valores incorrectos, prueba intercambiando reg_hi y reg_lo.

Gestión de múltiples esclavos

En instalaciones con 10+ dispositivos Modbus, la gestión del tiempo de respuesta se vuelve crítica. El maestro CODESYS interroga los esclavos secuencialmente dentro del ciclo de tarea. Si el timeout de cada esclavo es 500 ms y tienes 20 esclavos, el ciclo completo puede tardar hasta 10 segundos. Estrategias para mitigarlo:

Debugging en producción

Los problemas más frecuentes en campo y cómo diagnosticarlos:

Conclusión

Modbus TCP en CODESYS es una combinación probada y fiable para la integración de dispositivos de campo. La clave está en modelar correctamente los canales de comunicación, optimizar el agrupamiento de registros y monitorizar activamente los errores de timeout. Con estos fundamentos dominados, integrar un nuevo dispositivo lleva minutos en lugar de horas.

En Hexadecimal implementamos integraciones Modbus TCP complejas — plantas con más de 100 dispositivos en red — como parte de nuestros servicios de integración de sistemas. Contacta con nosotros si necesitas soporte técnico en tu proyecto.

CODESYS System Partner · España

¿Tienes un proyecto de integración Modbus?

Diseñamos e implementamos comunicaciones industriales Modbus TCP/RTU en CODESYS para plantas con múltiples dispositivos de campo. Soporte técnico especializado.

Consultar con un integrador
Ver todos los artículos