Tiza Group

Inicio / Guías / Industria y automatización

IEC 61131-3: los cinco lenguajes de programación de PLC

Los cinco lenguajes de la IEC 61131-3 (LD, FBD, ST, IL y SFC): para qué sirve cada uno, cuándo conviene y cómo combinarlos en un mismo proyecto.

Por Shadai García, CEO e ingeniero de protecciones de Tiza Group.

LD · lenguaje de contactosI0.0Q0.0I0.1I0.2Q0.0ST · texto estructuradokm1 := (marcha OR km1) AND paro_ok AND termico_ok;FBD · compuertas IEC 60617-12 (vista derecha)FBD · el mismo marcha-paromarcha≥1paro_oktermico_ok&km1S1 y F2 son NC: la señal vale 1 en reposo y nonecesita negación; al abrirse o fallar el hilo, cae a 0los tres lenguajes dan el mismo resultadoLenguajesLDSTFBDMisma salida© tizagrp.comLD · lenguaje de contactosI0.0Q0.0I0.1I0.2Q0.0ST · texto estructuradokm1 := (marcha OR km1) AND paro_ok AND termico_ok;FBD · compuertas IEC 60617-12 (vista derecha)FBD · el mismo marcha-paromarcha≥1paro_oktermico_ok&km1S1 y F2 son NC: la señal vale 1 en reposo y nonecesita negación; al abrirse o fallar el hilo, cae a 0los tres lenguajes dan el mismo resultadoLenguajesLDSTFBDMisma salida© tizagrp.com
IEC 61131-3: el mismo marcha-paro en lenguaje de contactos, texto estructurado y bloques de función. Ubicación en el sistema y principio de funcionamiento. Ilustrativo: los valores reales salen de la placa y del manual del fabricante.
Respuesta corta

La IEC 61131-3 define cinco lenguajes de programación de controladores: diagrama de contactos (LD), diagrama de bloques de función (FBD), texto estructurado (ST), lista de instrucciones (IL) y gráfico de funciones secuenciales (SFC). Cada uno resuelve mejor un tipo de problema y un mismo proyecto suele combinarlos.

Respuesta corta

La parte 3 de la norma IEC 61131 define los lenguajes de programación de los controladores programables. Son cinco: dos gráficos (lógica; LD, diagrama de contactos, y FBD, diagrama de bloques de función), dos textuales (ST, texto estructurado, e IL, lista de instrucciones) y uno de organización de secuencias (SFC, gráfico de funciones secuenciales). La norma es de pago; esta guía describe los lenguajes con palabras propias, sin reproducir su texto. Para probar un programa sin PLC físico, con OpenPLC y otros simuladores, vea simulación y herramientas gratuitas de PLC.

Los cinco lenguajes en una tabla

LenguajeFormaMejor paraPunto débil
LD, diagrama de contactos (ladder)Gráfico, parecido a un esquema de relésLógica discreta, enclavamientos, mantenimiento por electricistasSe vuelve ilegible con cálculos y datos extensos
FBD, diagrama de bloques de funciónGráfico, bloques unidos por líneasLazos de regulación, flujos de señal, procesamiento analógicoLos diagramas grandes consumen mucha pantalla
ST, texto estructuradoTextual, parecido a PascalCálculos, arreglos, bucles, comunicación, algoritmosExige formación de programador
IL, lista de instruccionesTextual, estilo ensambladorCódigo heredadoObsoleto, difícil de leer y mantener
SFC, gráfico de funciones secuencialesGráfico, pasos y transicionesProcesos por etapas y arranques secuencialesDescribe el orden, no la lógica interna de cada paso

Cómo piensa cada lenguaje

Ladder. El programa se lee como una escalera: a izquierda y derecha dos rieles, y entre ellos peldaños con contactos (condiciones) y bobinas (resultados). Un contacto en serie con otro actúa como Y; contactos en paralelo, como O. Es el idioma común entre quien programa y quien mantiene, porque reproduce el esquema de mando con relés. Se desarrolla en ladder: contactos, bobinas y enclavamiento como guía de la serie.

Diagrama de bloques de función. Cada bloque (temporizador, comparador, regulador, escalado) tiene entradas a la izquierda y salidas a la derecha; el programador las une con líneas. Es natural para quien viene de la instrumentación, porque el diagrama se parece a un diagrama de lazo.

Texto estructurado. Un lenguaje de alto nivel con asignaciones, condicionales (IF, CASE) y bucles. Cuando una lógica necesita operar con datos, recorrer una tabla o implementar una fórmula, el texto es más corto y claro que cualquier gráfico.

Lista de instrucciones. Una instrucción por línea, con un acumulador implícito. Es compacta y muy cercana a la máquina. La tercera edición de la norma la dejó como obsoleta; se encuentra en programas antiguos que hay que mantener.

Gráfico de funciones secuenciales. No describe cómo se calcula una salida, sino en qué etapa está la máquina y qué condición la lleva a la siguiente. Cada paso contiene acciones escritas en otro de los lenguajes. Su origen es el GRAFCET francés; la guía GRAFCET y SFC lo trata aparte.

Organización del programa: unidades de organización

La norma no solo define lenguajes, también una forma de estructurar el proyecto. Las piezas son:

  • Programa: unidad principal que el controlador ejecuta en una tarea.
  • Bloque de función: unidad con memoria propia; cada vez que se usa se crea una instancia con sus datos internos (un temporizador es el ejemplo clásico).
  • Función: unidad sin memoria; para las mismas entradas devuelve siempre el mismo resultado.
  • Variables globales y locales, con tipos de dato declarados.
  • Tareas y recursos: deciden cuándo y con qué prioridad se ejecuta cada programa.

Esta separación permite escribir una vez un bloque de función para un motor y reutilizarlo por cada motor de la planta. Es la base de lo que se explica en buenas prácticas de programación de PLC.

Cómo escoger lenguaje por tipo de problema

¿Qué lenguaje conviene?
  • ¿El problema es una secuencia por etapas (arranque, llenado, ciclo de máquina)?
    • Sí: SFC para la secuencia, y ladder o texto estructurado dentro de cada paso
    • No: ¿Es lógica discreta de enclavamientos que debe mantener personal eléctrico?
      • Sí: Ladder
      • No: ¿Es un lazo de regulación o un flujo de señales analógicas?
        • Sí: Bloques de función
        • No: Texto estructurado

Ejemplo ilustrativo: el motor de 15 kW en tres lenguajes

Datos supuestos: motor de 15 kW, 400 V, con pulsador de marcha, pulsador de paro y contacto del relé térmico.

  • En ladder, la marcha y el contacto de la propia bobina en paralelo, en serie con el paro y el térmico, forman el enclavamiento clásico de marcha-paro.
  • En texto estructurado, la misma lógica se escribe como una asignación: la salida es verdadera si hay marcha o ya estaba activa, y además no hay paro ni disparo del térmico.
  • En bloques de función, un bloque biestable con dominancia de paro recibe marcha y la condición de paro.

Las tres versiones hacen lo mismo. Cuál es mejor depende de quién va a mantenerla: en una planta donde el mantenimiento lo hace personal eléctrico, ladder; en un sistema con muchos motores iguales, un bloque de función en texto estructurado que se instancia por cada motor.

Qué trae cada marca y qué no

La norma fija los lenguajes, pero cada fabricante ofrece su propio entorno, con sus extensiones, nombres de instrucciones y limitaciones. Algunos entornos emplean nombres propios (por ejemplo, SCL para el texto estructurado en un fabricante, o lenguajes sin equivalente exacto en otros). Por eso un programa no se traslada de una marca a otra sin trabajo; la guía equivalencias entre marcas de PLC recoge los nombres que corresponden entre sí. El organismo PLCopen publica documentos de apoyo y define un formato de intercambio XML que algunos entornos admiten para mover programas entre herramientas.

Reutilizar y mantener: lo que la norma facilita

Más allá de los lenguajes, la parte 3 de la norma aporta una disciplina de proyecto que se nota a los años de servicio:

  • Tipos de datos declarados. El compilador avisa cuando se mezclan tipos incompatibles, lo que evita errores silenciosos.
  • Interfaces explícitas. Un bloque de función muestra sus entradas y salidas; nadie necesita leer su interior para usarlo.
  • Separación entre lógica y asignación de señales. La lógica trabaja con variables con nombre, y la asignación a direcciones físicas se hace aparte, en la configuración de hardware.
  • Bibliotecas. Los bloques probados se agrupan y se reutilizan entre proyectos.

Un equipo de mantenimiento que recibe una planta programada con esta estructura puede intervenir un motor sin recorrer todo el programa. En cambio, un programa escrito sin ella obliga a seguir cada señal a mano. Por eso, al especificar un sistema de control, exija por contrato cuatro cosas: el uso de la norma, los lenguajes aceptados, la entrega del código fuente y la documentación de las variables.

Errores frecuentes

  • Elegir el lenguaje por costumbre y no por el problema. Cálculos largos en ladder o enclavamientos simples en texto sin necesidad.
  • Mezclar lenguajes sin criterio. Un proyecto legible reparte los lenguajes por capa: SFC para la secuencia, ladder para enclavamientos, texto para cálculos.
  • No aprovechar bloques de función. Copiar y pegar la lógica de cada motor en vez de crear un bloque reutilizable.
  • Dar por hecho que todo se convierte. Una conversión automática entre lenguajes puede producir código correcto y ilegible.
  • Usar lista de instrucciones en proyectos nuevos.
  • Suponer que un lenguaje implica un rendimiento distinto. El tiempo de ejecución depende del compilador y del hardware, no del lenguaje con que se dibujó.

Lista de verificación

  • Se confirmó en el manual qué lenguajes admite el modelo de controlador.
  • Cada capa del programa tiene un lenguaje definido y documentado.
  • El personal que mantendrá la planta puede leer el lenguaje escogido.
  • La lógica repetida está en bloques de función reutilizables.
  • Las variables están declaradas con tipo y nombre significativo.
  • No hay lista de instrucciones en código nuevo.
  • El proyecto tiene un respaldo en el formato nativo de la herramienta.

Dudas técnicas frecuentes

  • ¿Hay un lenguaje más rápido?: no por sí mismo; el compilador convierte todos a código máquina.
  • ¿Se puede mezclar ladder y texto en la misma tarea?: sí, como unidades distintas del mismo proyecto, dentro de lo que permita el entorno del fabricante.
  • ¿Qué es PLCopen?: una asociación que promueve el uso de la norma y publica guías y un formato de intercambio.
  • ¿La norma cubre la comunicación entre PLC?: la parte 3 cubre la programación; las redes y protocolos se tratan aparte, como en Modbus RTU y TCP.

Cómo le ayudamos

Definir la estructura del programa, los lenguajes por capa y las convenciones del proyecto evita que un sistema de control se vuelva imposible de mantener. En Tiza Group hacemos la ingeniería de control y los estudios asociados, y luego probamos y ponemos en servicio el sistema. Vea diseño de ingeniería y estudios y pruebas y puesta en servicio, o escríbanos por contacto.

Guías relacionadas

Referencias

  • IEC 61131-3, lenguajes de programación para controladores programables (norma de pago).
  • PLCopen, material introductorio a la IEC 61131-3.
  • OpenPLC, documentación del proyecto sobre los cinco lenguajes soportados.

Preguntas frecuentes

¿Qué lenguaje de PLC conviene aprender primero?

El diagrama de contactos (ladder), porque es el más extendido en tableros de potencia y mantenimiento y se parece a un esquema de relés. Después conviene el texto estructurado, que cubre cálculos, arreglos y lógica compleja.

¿La lista de instrucciones sigue vigente?

Se conserva en equipos existentes, pero la tercera edición de la norma la marcó como obsoleta y los fabricantes han dejado de promoverla. En proyectos nuevos se prefiere texto estructurado.

¿Todos los PLC soportan los cinco lenguajes?

No. Cada fabricante implementa un subconjunto y a veces con variantes. Un controlador puede ofrecer ladder y texto estructurado pero no lista de instrucciones; por eso se verifica en el manual del modelo antes de escoger.

¿Un programa hecho en un lenguaje se puede pasar a otro?

Algunas herramientas convierten entre ladder, bloques y texto, pero la conversión no siempre es posible ni legible. Es mejor decidir el lenguaje de cada parte desde el diseño.

WhatsApp