miércoles, 10 de junio de 2015

Lenguajes de programación PLC




El estándar IEC-61131
Los lenguajes de programación de PLCs habituales (IL, ST, FBD, LD, SCL) se regulan por la norma IEC-61131-3. Esta norma fue establecida por la Comisión Electrotécnica Internacional (IEC) en la década de los sesenta con el objetivo de estandarizar el mercado de los autómatas programables.
Los lenguajes que regula la norma se dividen en:

Lenguajes literales o textuales: Las instrucciones están formadas por letras, símbolos o números.
  • Lista de instrucciones (IL): Es un lenguaje de bajo nivel, tipo ensamblador, que permite crear programas de usuario propios de hardware y con optimización de tiempo de ejecución y espacio de almacenamiento.
  • Texto estructurado (ST): Se trata de un lenguaje de alto nivel que permite programación estructurada (división de tareas), facilitando la programación de procesos que requieren instrucciones complejas o grandes cálculos.

Lenguajes gráficos: Las instrucciones se representan por esquemas o figuras. 
  • Esquema de contactos (LD): El lenguaje utiliza una representación gráfica de los esquemas eléctricos de control tradicionales. Es el lenguaje de programación de PLCs más utilizado. 
  • Diagrama de funciones (FBD): Se trata de un lenguaje formado por un conjunto de bloques lógicos que se interconectan en cascada de forma similar a como se hace en electrónica digital. 

Lenguajes orientados a objetos: 
  • Diagrama funcional de secuencias (SFC): Este lenguaje, sustituto del GRAFCET, permite representar el desarrollo en el tiempo de las distintas acciones de un proceso, describiéndolo con secuencias de pasos alternativas o paralelas. Se emplea frecuentemente en el diseño de sistemas secuenciales, donde las acciones se ejecutan en orden conforme se cumplen ciertas condiciones.

Los entornos de programación de origen alemán, como STEP7 de Siemens, utilizan las siglas en este idioma. La equivalencia es la siguiente:


FUP
FBD
KOP
LD  
AWL  
IL  
SCL
ST  
GRAPH
SFC 
     
¿Y qué hay del lenguaje CFC?
El lenguaje CFC (Continuous Function Chart) es una extensión no estandarizada del lenguaje FBD.

Es también un lenguaje gráfico, muy similar al empleado en diagramas de electrónica digital en el que se interconectan elementos como bloques, entradas, salidas, etiquetas, etc. 

Su principal ventaja radica en su fácil programación. Existen una serie de bloques predefinidos que pueden ser arrastrados y colocados para posteriormente configurarlos e interconectarlos rápidamente. Por tanto, debido a su naturaleza intuitiva, no requiere de amplia experiencia en programación.

Sin embargo, uno de sus principales inconvenientes es que en programas que requieran un gran número de variables E/S o bucles, la legibilidad puede verse muy comprometida, dificultando así la labor de mantenimiento.

Se trata de un lenguaje de gran utilidad para aplicaciones con funciones aritméticas, lógica combinacional y cálculos sencillos, pero no muy eficaz para lógica secuencial.

¿Qué lenguaje usar?
La respuesta a esta pregunta no es fácil de formular, puesto que depende de muchos factores. Sin embargo, para tomar una buena decisión es necesario tener en cuenta, al menos, los siguientes puntos:

- El tipo de aplicación y su complejidad.
- Los requisitos y prácticas del cliente final y de su departamento de mantenimiento.
- El tiempo de implementación del proyecto.
- Seguimiento del proyecto.
- PLC y entorno de programación.
- Aceptación universal del lenguaje.
- Facilidad de portabilidad.
- Facilidad de aprendizaje.



La siguiente tabla recoge algunos de los puntos fuertes y débiles de cada lenguaje (aunque quizá de una forma algo subjetiva):

LENGUAJE PUNTOS FUERTES PUNTOS DÉBILES




LD 
- Popular en el mundo de la automatización.
- Funciones binarias y booleanas.
Procesado rápido.
- Fácil integración de bloques funcionales estándar.
- Programación visual y fácil de interpretar.
- Fácil de modificar.
- Cálculos matemáticos.
- Procesamiento de datos (cadena de caracteres, E/S analógicas, rutinas de comunicación).
- Bucles e instrucciones de repetición.
- Lógica secuencial con gran número de secuencias.
- Creación de bloques funcionales de usuario con gran número de variables.



FBD
- Funciones booleanas.
- Cálculos matemáticos simples.
- Procesamiento de datos analógicos.
- Fácil integración de bloques funcionales - estándar.
- Programación visual y fácil de interpretar.

- Lógica secuencial con gran número de secuencias.
- Bucles e instrucciones de repetición.
- Creación de bloques funcionales de usuario con gran número de variables.
- Modificación del programa.
- Seguimiento e interpretación en programas complejos.





IL
- Codificación rápida y simple introducción de datos.
- Código compacto.
- Rápido procesamiento y velocidad de ejecución (ciclos optimizados).
- Bucles, instrucciones de repetición y saltos.
- Lógica secuencial simple.
- Representación ordenada.
- Portabilidad, transferible a otras plataformas.
- Lógica combinacional compleja.
- Cálculos matemáticos y procesamiento de datos.
- Difícil seguimiento posterior (interpretación, comprensión y modificación).
- Interpretación por usuarios inexpertos.







ST
- Codificación rápida y simple introducción de datos.
- Programación estructurada similar a lenguajes de alto nivel de programación de PCs.
- Código compacto y buena velocidad de ejecución.
- Cálculos matemáticos y procesamiento de datos.
- Bucles e instrucciones de repetición.
- Fácil de usar y rápida asimilación por nuevos usuarios.
- Creación de bloques funcionales de usuario con gran número de variables.
- Portabilidad a otras plataformas.
- Lógica combinacional con una cantidad significante de variables.
- Requiere mayor habilidad de programación.
- Carencia de instrucciones de salto.
- Peligro de bucles grandes o infinitos (error de perro guardián).
- Visualización e interpretación en caso de programas complejos con gran número de variables.
- Modificaciones en el programa.





SFC
- Fácil realización de aplicaciones secuenciales y tareas repetitivas.
- Representación clara y precisa de las secuencias.
- Incorporación de secuencias complejas (ej. GEMMA).
- Mantenimiento fácil por el usuario final.
- Documentación de ayuda del proyecto.
- Difícil introducción de datos y programación (gráficos, acciones, transiciones).
- No puede traducirse a otros lenguajes estándar.
- No es totalmente compatible con GRAFCET.
- Requiere más recursos.

Por último, un gráfico orientativo que muestra el potencial de cada lenguaje según la fase del proyecto:


Última actualización: 10/06/2015

2 comentarios:

  1. Me ha aclarado algunas cosas,pero soy mas a un con mi poca experiencia de usar de usar combinación de LD y ST mas que de hacerlo todo con un único lenguaje.
    Tienes un nuevo seguidor. Saludos

    ResponderEliminar