Soluciones para la Industria

contacto@rpingenieria.com

, ,

Lenguajes de programación IEC 61131-3: características, comparativa y aplicaciones en PLC y sistemas de control

¿LD, FBD, ST o SFC? La norma IEC 61131-3 no obliga a elegir uno: define un modelo de software común en el que cada lenguaje aporta sus fortalezas.

La norma IEC 61131-3 define los lenguajes de programación de los controladores programables y de los sistemas de control basados en ellos. Su objetivo es que un mismo modelo de software, con tipos de datos, variables y unidades de organización de programa comunes, pueda expresarse mediante distintos lenguajes según la naturaleza de la tarea. La cuarta edición, publicada en mayo de 2025, especifica los lenguajes Texto Estructurado (ST), Diagrama de Contactos (LD) y Diagrama de Bloques de Funciones (FBD), junto con el Diagrama Funcional Secuencial (SFC) para la organización de programas [1]. Para técnicos e ingenieros de factory y process automation, conocer las fortalezas de cada lenguaje permite escribir aplicaciones más claras, mantenibles y fáciles de diagnosticar.

Un modelo de software común

Antes de comparar los lenguajes, conviene recordar que todos comparten la misma base definida por la norma [1]:

  • Tipos de datos normalizados: BOOL, INT, DINT, REAL, LREAL, TIME, STRING y tipos derivados como estructuras, enumeraciones y arreglos. La edición 2025 incorpora cadenas UTF-8 y sus funciones asociadas.
  • Unidades de organización de programa (POU, Program Organization Units): funciones, bloques de función y programas. Desde la tercera edición (2013) se incorporan además clases, interfaces y métodos, que permiten aplicar programación orientada a objetos [2].
  • Modelo de configuración: recursos, tareas y asignación de programas a tareas cíclicas o por evento.

El principal beneficio de este modelo común es la interoperabilidad entre lenguajes dentro de un mismo proyecto: un bloque de función escrito en ST puede invocarse desde una red LD, un diagrama FBD o una acción SFC sin adaptaciones.

Los lenguajes de la norma

Diagrama de Contactos (LD, Ladder Diagram)

Lenguaje gráfico que representa la lógica mediante contactos, bobinas y bloques conectados entre dos barras de alimentación, a semejanza de un esquema eléctrico de relés. Su lectura resulta intuitiva para el personal de mantenimiento con formación eléctrica, y la visualización en línea del flujo de energía facilita la localización de fallas en terreno.

Diagrama de Bloques de Funciones (FBD, Function Block Diagram)

Lenguaje gráfico en el que funciones y bloques de función se interconectan mediante señales, de forma similar a un diagrama de flujo de datos. Representa de manera natural el procesamiento continuo de señales: escalamiento, filtrado, lazos PID, selectores y cálculos. Su estructura coincide con la forma en que los ingenieros de proceso describen las estrategias de control, lo que facilita la revisión conjunta entre disciplinas.

Texto Estructurado (ST, Structured Text)

Lenguaje textual de alto nivel con sintaxis derivada de Pascal. Dispone de sentencias IF, CASE, FOR, WHILE y REPEAT, expresiones aritméticas complejas y manejo directo de arreglos y estructuras. Es el lenguaje con mayor capacidad para algoritmos, procesamiento de datos y programación orientada a objetos. Además, al ser texto plano, se integra con herramientas de control de versiones y de comparación de código.

IF Marcha AND NOT Parada AND NOT FallaTermica THEN
    Motor := TRUE;
ELSIF Parada OR FallaTermica THEN
    Motor := FALSE;
END_IF;

Diagrama Funcional Secuencial (SFC, Sequential Function Chart)

Elemento de estructuración que organiza un programa o bloque de función en etapas (steps), transiciones y acciones, con soporte para ramas alternativas y paralelas. Cada acción y cada condición de transición se programan en cualquiera de los otros lenguajes. Su beneficio principal es que la estructura del programa refleja directamente la secuencia del proceso, lo que permite identificar en línea la etapa activa y la condición de transición pendiente.

Lista de Instrucciones (IL, Instruction List)

Lenguaje textual de bajo nivel, similar a un ensamblador. Fue declarado obsoleto (deprecated) en la tercera edición [2] y la cuarta edición ya no lo incluye entre los lenguajes especificados [1]. Los proyectos existentes en IL pueden migrarse a ST, que cubre las mismas funciones con mayor legibilidad.

Comparativa entre lenguajes

CriterioLDFBDSTSFC
TipoGráficoGráficoTextualGráfico, de estructuración
ParadigmaLógica booleana tipo reléFlujo de datosAlgorítmico, imperativoSecuencia de estados
Lógica discreta y enclavamientosMuy adecuadoAdecuadoAdecuadoOrganiza, no reemplaza
Control continuo y regulatorioLimitadoMuy adecuadoAdecuadoNo aplica
Cálculos, arreglos y manejo de datosLimitadoModeradoMuy adecuadoNo aplica
Secuencias y procesos por lotesPosible, con mayor complejidadPosible, con mayor complejidadPosibleMuy adecuado
Diagnóstico en líneaVisual, por flujo de energíaVisual, por valores en las señalesPor observación de variablesVisual, por etapa activa
Perfil habitual del usuarioMantenimiento eléctricoIngeniería de procesosIngeniería de software y desarrollo de bibliotecasIngeniería de procesos y de máquinas
Control de versiones y comparaciónRequiere herramientas específicasRequiere herramientas específicasDirecto, por ser textoRequiere herramientas específicas

Aplicaciones habituales

AplicaciónLenguajes habitualesMotivo
Enclavamientos, permisivos y arranque de motoresLD, FBDLógica booleana con lectura directa en terreno
Lazos de control PID, escalamiento y filtrado de señalesFBDRepresentación natural del flujo de señales
Secuencias de máquina y procesos por lotesSFC con acciones en LD o STLa estructura sigue las etapas del proceso
Cálculos de ingeniería, recetas y manejo de datosSTExpresiones complejas, arreglos y estructuras
Comunicaciones, protocolos y tramasSTManejo de bytes, bucles y cadenas de caracteres
Bibliotecas reutilizables y bloques de equipoST, con interfaz utilizable desde LD y FBDEncapsulamiento y orientación a objetos
Control de movimientoFBD o ST con bloques de función normalizadosUso de bibliotecas con interfaz uniforme [3]
Lógica de aplicación de seguridadLD o FBDLenguajes de variabilidad limitada [4]

En factory automation predomina la combinación de LD para la lógica discreta, SFC para las secuencias de máquina y ST para los cálculos y bibliotecas. En process automation, FBD es el lenguaje habitual para las estrategias de control, mientras que SFC estructura los procedimientos de arranque, parada y operación por lotes.

En el ámbito de la seguridad funcional, IEC 61511-1 distingue entre lenguajes de variabilidad limitada (LVL, Limited Variability Language) y lenguajes de variabilidad completa (FVL, Full Variability Language). LD y FBD, cuando se restringen a bloques de función certificados, corresponden a la primera categoría, lo que simplifica la verificación de la lógica de aplicación del sistema instrumentado de seguridad [4].

Combinación de lenguajes en un mismo proyecto

La norma no exige elegir un único lenguaje. Las directrices de aplicación de IEC 61131-8 recomiendan seleccionar el lenguaje según la naturaleza de cada parte del problema y estructurar el software en POU con interfaces bien definidas [5]. Una arquitectura habitual consiste en:

  • SFC como nivel superior, que describe la secuencia de operación de una máquina o unidad de proceso.
  • Bloques de función en ST que encapsulan la lógica de cada equipo (motores, válvulas, accionamientos) y se reutilizan como bibliotecas.
  • Redes LD o diagramas FBD que instancian esos bloques y presentan los enclavamientos de forma legible para mantenimiento.

Esta combinación permite que cada especialista trabaje en el lenguaje más afín a su disciplina, sin perder la coherencia del modelo de datos.

Portabilidad e intercambio de proyectos

IEC 61131-10 define un formato de intercambio basado en XML para los elementos de programa de IEC 61131-3, lo que facilita el traspaso de código entre herramientas de ingeniería, la generación automática de software y el archivo a largo plazo de las aplicaciones [6]. Para arquitecturas distribuidas, IEC 61499 complementa este modelo con bloques de función orientados a eventos que pueden distribuirse entre varios dispositivos [7].

Novedades de la edición 2025

La cuarta edición de IEC 61131-3 consolida la evolución de la norma [1]:

  • Se incorporan las cadenas UTF-8 y sus funciones asociadas, lo que simplifica el manejo de textos en distintos idiomas en pantallas, registros y mensajes.
  • La Lista de Instrucciones ya no forma parte de los lenguajes especificados.
  • El anexo B entrega un inventario de las características agregadas, eliminadas o declaradas obsoletas respecto de la edición anterior, útil para planificar la migración de proyectos existentes.

Conclusión

Los lenguajes de IEC 61131-3 son herramientas complementarias que comparten un modelo de software común. LD aporta claridad en la lógica discreta y en el diagnóstico de terreno; FBD representa con naturalidad el control continuo; ST ofrece la potencia necesaria para algoritmos, datos y bibliotecas reutilizables; y SFC estructura las secuencias de máquina y proceso. Seleccionar el lenguaje adecuado para cada parte de la aplicación, y combinarlos dentro de una arquitectura ordenada, se traduce en programas más legibles, mantenibles y portables durante todo el ciclo de vida de la instalación.


Sigue leyendo

Este artículo es parte de nuestra guía de comunicaciones industriales.

Referencias

[1] IEC 61131-3:2025 (ed. 4.0). Programmable controllers – Part 3: Programming languages. Ginebra: IEC, 2025.

[2] IEC 61131-3:2013 (ed. 3.0). Programmable controllers – Part 3: Programming languages. Ginebra: IEC, 2013.

[3] PLCopen. Technical Specification – Function Blocks for Motion Control, Part 1. PLCopen Technical Committee 2.

[4] IEC 61511-1:2016+AMD1:2017. Functional safety – Safety instrumented systems for the process industry sector – Part 1: Framework, definitions, system, hardware and application programming requirements. Ginebra: IEC.

[5] IEC TR 61131-8:2017. Industrial-process measurement and control – Programmable controllers – Part 8: Guidelines for the application and implementation of programming languages. Ginebra: IEC.

[6] IEC 61131-10:2019. Programmable controllers – Part 10: PLC open XML exchange format. Ginebra: IEC.

[7] IEC 61499-1:2012. Function blocks – Part 1: Architecture. Ginebra: IEC.

Compartir

Seguir leyendo

Otras publicaciones