La norma IEC 61131-3 lleva más de tres décadas siendo el estándar de facto para la programación de controladores lógicos programables. Sin embargo, conocer los cinco lenguajes que define no es suficiente: la diferencia entre un proyecto mantenible y un proyecto que nadie quiere tocar reside en cómo se organiza el código desde el primer día. CODESYS, como entorno de desarrollo más extendido compatible con IEC 61131-3, ofrece todas las herramientas necesarias para construir proyectos industriales robustos. Aquí explicamos cómo usarlas correctamente.
La norma IEC 61131-3: más que una convención
IEC 61131-3 no es solo una lista de lenguajes de programación. Define también el modelo de ejecución (unidades de organización de programa o POUs), el sistema de tipos de datos, las variables y sus rangos de visibilidad, y el comportamiento de las tareas de ejecución. Entender esta estructura es el primer paso para escribir código que funcione correctamente en cualquier plataforma compatible.
En CODESYS, el modelo de organización se mapea directamente sobre la norma: tienes Programas (PRG), Bloques de Función (FB) y Funciones (FC). Cada uno tiene un propósito distinto y confundirlos es el error más frecuente en proyectos de automatización.
Los cinco lenguajes: cuándo usar cada uno
Ladder Diagram (LD)
El lenguaje de contactos sigue siendo el más legible para técnicos de mantenimiento con formación eléctrica. Úsalo para lógica de enclavamientos, arranques de motor y secuencias de seguridad que deberán ser diagnosticadas en campo sin ordenador. Su limitación principal es que escala mal en lógica compleja: más de 15-20 rungs por bloque empieza a ser ilegible.
Function Block Diagram (FBD)
Ideal para representar flujos de señal analógica y regulación PID. Si el proceso implica transformaciones de señal continuas (filtros, escalados, controladores), FBD muestra visualmente el flujo de datos de forma mucho más natural que cualquier otro lenguaje. Es también el lenguaje preferido para los bloques de comunicación y los drivers de dispositivo.
Structured Text (ST)
ST es el lenguaje más potente de los cinco. Similar a Pascal o C, permite expresar lógica compleja, bucles, cálculos matemáticos y manipulación de cadenas de forma compacta. Recomendamos ST como lenguaje principal para la lógica de negocio (recetas, gestión de modos, comunicación con SCADA) y para cualquier algoritmo que supere la complejidad de unos pocos escalones Ladder.
Sequential Function Chart (SFC)
Para secuencias con estados bien definidos (ciclos de llenado, procesos batch, maquinaria con fases claras) SFC es insustituible. Un SFC bien escrito documenta el proceso mientras lo controla. La clave es no mezclar lógica compleja dentro de las acciones del SFC: las acciones deben llamar a FBs externos, manteniendo el diagrama limpio y legible.
Instruction List (IL)
IL fue declarado obsoleto en la edición de 2013 de la norma. No lo uses en proyectos nuevos. Cualquier cosa que pueda escribirse en IL se expresa mejor y más claramente en ST.
Estructura de proyecto recomendada en CODESYS
La estructura que usamos en Hexadecimal para proyectos industriales medianos y grandes sigue esta jerarquía:
Application
├── _Config ← constantes, parámetros de máquina, GVL de configuración
├── _Types ← tipos de datos (STRUCT, ENUM, UNION)
├── IO_Mapping ← mapeo de variables de I/O físicas a variables simbólicas
├── SafetyLayer ← interbloqueos, paradas de emergencia (si aplica)
├── Drives ← FBs de control de accionamientos/motores
├── Process ← lógica de proceso principal (SFC + FBs de estado)
├── Communication ← Modbus, OPC-UA, MQTT u otros protocolos
├── HMI_Interface ← variables expuestas a panel HMI/SCADA
└── Diagnostics ← gestión de alarmas y registro de eventos
Regla de oro: nunca accedas a I/O físicas directamente desde la lógica de proceso. Siempre pasa por la capa IO_Mapping. Esto permite simular el PLC sin hardware y facilita el cambio de plataforma.
Configuración de tareas y tiempos de ciclo
En CODESYS, el Task Configuration define cuándo se ejecuta cada programa. Los errores más comunes que vemos en proyectos externos son dos: todo en una sola tarea o tareas con prioridades mal asignadas.
Una configuración correcta para un proyecto típico:
- Task_Fast (2 ms, prioridad 1): lectura de I/O, control de accionamientos, regulación PID. Solo código crítico en tiempo.
- Task_Cyclic (10 ms, prioridad 5): lógica de proceso principal, SFC, gestión de modos.
- Task_Slow (100 ms, prioridad 10): comunicación, generación de alarmas, estadísticas.
- Task_Event (evento externo, prioridad 2): para respuesta a interrupciones hardware si el target lo soporta.
El tiempo de ciclo de la tarea más rápida debe ser como mínimo el doble del tiempo de ejecución máximo medido para esa tarea. CODESYS Profiler es tu herramienta para medirlo.
Manejo de errores y diagnóstico robusto
Un proyecto IEC 61131-3 profesional no solo funciona cuando todo va bien: gestiona los fallos de forma predecible. Implementa siempre:
- Watchdog de tarea: actívalo en todas las tareas cíclicas. Si el tiempo de ciclo se excede, el PLC pasa a estado seguro.
- FB de diagnóstico de comunicación: cada canal de comunicación (Modbus, OPC-UA) debe tener un bloque que detecte timeout y notifique al sistema de alarmas.
- GVL_Alarms: una lista global de variables de alarma con niveles (Info / Warning / Error / Critical). El SFC de proceso solo escribe en estas variables; la lógica de visualización las lee.
- Persistent variables: los datos que deben sobrevivir a un corte de alimentación (contadores de ciclos, recetas activas, setpoints de proceso) deben declararse como
PERSISTENTy guardarse en la memoria no volátil del target.
Conclusión
Un proyecto CODESYS bien estructurado desde el inicio multiplica la velocidad de puesta en marcha, reduce los errores durante el comisionado y permite que otro ingeniero tome el relevo sin una curva de aprendizaje excesiva. La norma IEC 61131-3 proporciona el marco; aplicarla con disciplina de ingeniería de software es lo que diferencia al automatizador experto.
En Hexadecimal aplicamos estas prácticas en todos nuestros proyectos de integración y los transmitimos en nuestros servicios de formación CODESYS certificada. Si tienes un proyecto que necesita ser refactorizado o arrancas uno nuevo y quieres hacerlo bien desde el principio, contáctanos.