EtherNet/IP es el protocolo de red industrial más extendido en la industria norteamericana y está ganando terreno en Europa para la integración de robots, variadores de velocidad y sistemas de visión. Basado en el protocolo CIP (Common Industrial Protocol) sobre TCP/IP estándar, ofrece comunicación en tiempo real implícita (I/O Messaging) y consultas explícitas bajo demanda. CODESYS soporta EtherNet/IP de forma nativa a través del paquete de protocolos industrial. Este tutorial te guía desde cero hasta tener variables de un adaptador leyéndose en tiempo real.
Conceptos clave: escáner vs. adaptador
En EtherNet/IP, el escáner (Scanner) es el controlador maestro que inicia la conexión y gestiona el intercambio de datos cíclico — en CODESYS, es el PLC. El adaptador (Adapter) es el dispositivo esclavo que expone sus I/O — un variador, un robot, un módulo de I/O distribuida o cualquier dispositivo compatible CIP.
La comunicación implícita (Implicit Messaging / Class 1) intercambia datos I/O de forma cíclica a alta velocidad (típicamente 5–100 ms). La comunicación explícita (Explicit Messaging / Class 3) se usa para configuración, diagnóstico y lectura de parámetros no cíclicos.
Prerequisitos
- CODESYS 3.5 o superior con el paquete EtherNet/IP Scanner instalado
- Archivo EDS (Electronic Data Sheet) del adaptador — lo proporciona el fabricante del dispositivo
- PLC y adaptador en la misma subred Ethernet (p. ej. 192.168.1.x / 255.255.255.0)
- El adaptador configurado con IP estática accesible desde el PLC
Paso a paso: configuración completa
Leer variables en tiempo real
Una vez online, las variables mapeadas se actualizan automáticamente en cada ciclo RPI. Puedes verificarlo con el Watch Window de CODESYS: Ver → Watch y Trace → Watch. Arrastra las variables del adaptador y confirma que los valores cambian al modificar el estado del dispositivo de campo.
(* Ejemplo: leer velocidad y estado de un variador via EtherNet/IP *)
VAR
eip_drive_speed : INT; (* Velocidad actual [rpm] - mapeado desde adaptador *)
eip_drive_status : WORD; (* Word de estado CIP del variador *)
eip_drive_fault : BOOL; (* Bit de fallo extraído del word de estado *)
eip_speed_setpoint : INT; (* Consigna de velocidad [rpm] - hacia adaptador *)
END_VAR
(* Extraer bit de fallo del word de estado *)
eip_drive_fault := eip_drive_status.8; (* Bit 8 = General Fault *)
Troubleshooting: errores frecuentes
- Adaptador en estado "Connection Failed": IP incorrecta o no alcanzable (prueba ping desde PC), firewall bloqueando puerto TCP/UDP 44818, adaptador no configurado en modo EtherNet/IP.
- Datos incorrectos o swapeados: el adaptador usa Big Endian y CODESYS Little Endian. Algunos EDS configuran el swap automáticamente; si no, haz el swap manualmente en el mapeo de variables.
- Conexión intermitente (Timeout periodic): RPI demasiado bajo para la latencia de la red, o switch no compatible con tráfico en tiempo real. Usa switches gestionados con QoS configurado para EtherNet/IP.
- EDS no instalable: algunos EDS están en formato obsoleto (versión 1.x). Usa la herramienta EDS Checker de ODVA para validar y convertir el archivo.
Tip: muchos problemas de EtherNet/IP son de red, no de configuración CODESYS. Wireshark con el plugin dissector de CIP (incluido por defecto) te permite ver las conexiones implicit messaging y diagnosticar timeouts, paquetes perdidos y errores de sesión directamente en la trama Ethernet.
Conclusión
Con el EDS correcto y la configuración descrita, una conexión EtherNet/IP funcional entre CODESYS y un adaptador de campo se consigue en menos de 30 minutos. El protocolo es robusto y sus herramientas de diagnóstico son maduras — la curva de aprendizaje está en entender el modelo de objetos CIP, no en la herramienta de configuración.
