Informática
Autómatas programables
Trabajo
sobre
Lenguajes
de
Programación
de
Autómatas
Programables.
Índice
1.- Lenguajes de programación.
1.1.- Lenguajes Booleanas y lista de instrucciones.
1.2.- Diagrama de contactos.
1.3.- Plano de funciones.
1.4.- Lenguajes de Alto Nivel.
1.5.- Grafcet.
1.5.1.- Resumen histórico.
1.5.2.- Diseño basado en Grafcet.
1.5.3.- Gemma.
2.- Resumen.
1.- Lenguajes de programación.
Se ha descrito el programa como el conjunto de instrucciones, ordenes y símbolos reconocibles por el autómata a través de su unidad de programación, que le permiten ejecutar la secuencia de control deseada. Al conjunto total de estas instrucciones, ordenes y símbolos que están disponibles se le llama lenguaje de programación del autómata.
Seria deseable que la misma simbología utilizada para representar el sistema de control pudiera emplearse para programar el autómata: el ahorro de tiempo y documentación y la seguridad en el programa obtenido serían considerables.
Sin embargo, esta solución no es siempre posible: El lenguaje depende del autómata empleado y de su fabricante, que decide el tipo de unidad de programación
( literal, gráfica ) y el interprete ( firmware ) que utiliza su máquina, mientras que el modelo de representación depende del usuario, que lo elige según sus necesidades o conocimientos.
Pese a ello, los lenguajes de programación de autómatas intentan ser lo más parecidos posibles a los modelos de presentación usuales. Los lenguajes pueden ser:
- Algebraicos.
- Lenguajes booleanos.
- Lenguajes de instrucciones.
- Lenguajes de alto nivel.
- Gráficos.
- Diagrama de contactos.
- Diagrama de funciones - bloques.
- Grafcet.
Si la representación elegida para el sistema de control es comprensible por la unidad de programación, no será necesario realizar ninguna codificación, al aceptar ésta los símbolos utilizados. En caso contrario, habrá que traducirla a un programa, según uno de los anteriores lenguajes.
El programa obtenido está formado por un conjunto de instrucciones, sentencias, bloques funcionales y grafismo que indican las operaciones a realizar sucesivamente por el PLC.
La instrucción representa la tarea más elemental de un programa: leer una entrada, realizar una operación AND, activar una salida, etc.
La sentencia representa el mínimo conjunto de instrucciones que definen una tarea completa: encontrar el valor de una función lógica combinación de varias variables, consultar un conjunto de condiciones y, si son ciertas, activar un temporizador, etc.
El bloque funcional es el conjunto de instrucciones o sentencias que realizan una tarea o función compleja: contadores, registros de desplazamientos, transferencias de información, etc.
Todos estos elementos están relacionados entre sí mediante los símbolos o grafismos ( algebraicos o gráficos ) definidos en el lenguaje empleado.
La figura 10.11 muestra la estructura de una instrucción típica en diferentes lenguajes de programación.
En general, las instrucciones pueden ser de distintos tipos: lógicas, aritméticas, de transferencias, etc., que adoptan diferentes formas de representación según el lenguaje empleado.
En algunos autómatas, el programa necesita para su correcta ejecución de una tabla de parámetros, introducida también desde la unidad de programación, que define el entorno de funcionamiento de la máquina:
- uso o no de entradas de reset o stop,
- capacidad de la memoria de usuario empleada,
- conexión o no en red local,
- variables internas a mantener contra pérdidas de tensión, etc.
La tabla de parámetros es especifica para cada programa y es grabada con el mismo cuando se transfiere al autómata.
1.1.- Lenguajes Booleanos y Lista de Instrucciones.
El lenguaje booleano esta constituido por un conjunto de instrucciones que son transcripción literal de las funciones del álgebra de Boole, a saber:
- OR función suma lógica.
- AND función producto lógico.
- LOD leer variable inicial.
- OUT enviar resultado a salida.
- OR LOD coloca bloque en paralelo
- AND LOD coloca bloque en serie.
En una operación normal el autómata utiliza algunas otras instrucciones del lenguaje booleano que le permiten manejar elemento de común automatización y que son las siguientes instrucciones secuenciales:
- TIM definir un temporizador.
- CNT definir un contador.
- SET activar una variable binaria ( unidad de memoria )
- RST desactivar una variable binaria.
También existe otros tipos de instrucciones como las siguientes:
- DD sumar.
- BB restar.
- MUL multiplicar.
- DIV Dividir.
- CMP comparar variables digitales.
- FR rotaciones de bits ( variables de binarias ).
- HIFT rotaciones de palabras ( variables digitales ).
- MOV transferencias de datos.
- CD / BIN conversiones de códigos numéricos, etc.
- END fin de programa.
- JMP salto de bloque de programa.
- MCS habilitación de bloque de programa.
- JMPSUB salto a subrutina, etc.
Al lenguaje restante que no puede llamarse ya booleano después de ampliarlo con estas extensiones se le denomina de lista de instrucciones ( “ Instruction List “ ).
Algunos fabricantes amplían las capacidades de programación de sus autómatas de gama baja con estas instrucciones avanzadas que serian de más lógica aplicación en autómatas de superiores prestaciones. El tiempo de ejecución resultante ( tiempo de
“ scan “ ) sobre CPU básicas desaconseja su empleo en la mayoría de las ocasiones.
1.2.- Diagrama de contactos.
El lenguaje de contactos expresa las relaciones entre señales binarias como una sucesión de contactos en serie y en paralelo según las equivalencias que se muestran en la tabla 10.6.
Adoptado por muchos fabricantes de autómatas ( norteamericanos y japoneses, principalmente ) como lenguaje base de programación, el diagrama de contactos (
“ Ladder Diagram “ ) puede ser introducido directamente en la unidad de programación mediante un editor de símbolos gráficos. Normalmente este editor incluye restricciones en cuanto al numero de contactos o bobinas a representar en cada línea, la ubicación de los mismos, la forma de las conexiones, etc.
Siendo los contactos de relés componentes de dos estados, asignados a los valores lógicos:
0: contacto abierto.
1: Contactos cerrado.
las equivalencias de la tabla 10.6 permiten definir sobre ellos un álgebra de Boole, denominada usualmente álgebra de contactos.
Esto significa que cualquier función lógica puede ser transcrita directa e inmediatamente a diagrama de contactos y viceversa, transcripciones de utilidad cuando se trata de visualizar gráficamente un programa escrito en lenguaje booleano.
Sin embargo el diagrama de contactos de origen norteamericano no nació como una posible herramienta de visualización de programa ya escritos en lista de instrucciones, sino como transcripción directa de los esquemas eléctricos de relés ( circuitos de mando) de uso común en la automatización previa a la aparición de los sistemas programables.
Por esta razón, los diagramas de contactos incluyen desde sus orígenes bloques funcionales que ya aparecían como elementos propios en aquellos esquemas, los temporizadores y los contadores.
Utilizando estos bloques sobre los cuales pueden definirse la base de lo tiempos y el tiempo final en el caso de temporizadores y el módulo de contaje y condiciones de paro y reset en el caso de contadores, el lenguaje de contactos permite programar directamente cualquier esquema eléctrico de reles.
Sin embargo, y al igual que ocurría en los lenguajes Booleanos, también en este se desarrollan bloques funcionales complejos que permiten la manipulación de datos y las operaciones con variables digitales de varios bits.
La presencia de estos bloques de ejecución dependiente de una más condiciones binarias, multiplica la potencia de programación sin dejar de mantener las ventajas de la representación gráfica del programa. Así, pueden programarse situaciones de automatización compleja que involucren variables digitales, registros, transferencias, comparaciones, señales analógicas, etc.
Por supuesto, y al igual que ocurre con las extensiones al lenguaje booleano, no todos los autómatas, aun del mismo fabricante, pueden manejar todas las posibilidades de programación con contactos: solo las gamas más altas acceden a la totalidad de extensiones del lenguaje.
1.3.- Plano de funciones.
El diagrama lógico o plano de funciones es la representación de las tareas de automatización utilizando los símbolos contenidos en las normas DIN 40700 y DIN 40719, cuya forma general se presenta en la figura 10.14.
Algunos de estos símbolos normalizados, correspondientes a las funciones más frecuentes, se dan en la figura 10.15:
La programación por diagramas lógicos, que deriva de la representación por logigrama habitual entre los técnicos en electrónica digital, incluye como bloques normalizados algunas funciones secuenciales típicas en automatización como temporizadores y contadores, e incluso algunos bloques combinacionales y de tratamiento numéricos, como multiplexores, demultiplexores, sumadores, multiplicadores, etc., pero no alcanza la multitud de funciones que han ido añadiéndose a las listas de instrucciones y diagramas de contactos, como extensiones a estos lenguajes.
Por esta razón, y en sentido estricto, la programación por diagramas lógicos queda reservada a aplicaciones en las que solo intervengan variables booleanas todo - nada, y algunos bloques secuenciales elementales: temporizadores, contadores, registros de desplazamiento, etc.
Esta circunstancia, unida al desconocimiento del diagrama lógico por parte del usuario habitual del autómata, explica la baja difusión de estos lenguajes de programación.
La figura 10.16 muestra un ejemplo de programación con plano de funciones, comparado con el mismo programa en diagrama de contactos según los lenguajes gráficos STEP 5 de Siemens. Dada la existencia, antes comentada, de bloques normalizados para todas las posibles operaciones del autómata, los fabricantes han optado por permitir el uso en sus consolas gráficas el uso de los bloques de extensión definidos en el diagrama de contactos, aun trabajando bajo el entorno de diagrama lógico: el lenguaje resultante resulta un grupo que recoge toda la potencia de programación del autómata y en el que el usuario puede elegir la forma de representación que prefiera para las representaciones básicas ( AND, OR, NOT, etc. ).
Algunas unidades de programación basadas en ordenador ( especifico de cada fabricante o PC de uso general) permiten al usuario definir sus propios bloques lógicos a partir de los preexistentes incorporando nuevas funciones ( macrobloques ) que pueden ser incorporadas al lenguaje.
1.4.- Lenguajes de Alto Nivel.
Con CPU´s cada vez más rápidas, más potentes y de mayor capacidad de tratamiento, los autómatas de gamas altas invaden aplicaciones hasta hace bien poco reservadas a los miniordenadores industriales.
Para estas aplicaciones, los lenguajes tradicionales en lista de instrucciones ( IL ) o diagrama de contacto ( LD ) resultan ya insuficientes, aun mejorados con las expansiones comentadas en apartados anteriores.
Por esta razón, los fabricantes han desarrollado lenguajes de programación próximos a la informática tradicional, con sentencias literales que equivalen a secuencias completas de programación: son lenguajes de alto nivel.
En ellos las instrucciones son líneas de texto que utilizan palabras o símbolos reservados ( SET, AND, FOR, etc. ) Las operaciones se definen por los símbolos matemáticos habituales ( +, *, <, etc.), y se dispone de funciones trigonométricas, logarítmicas y de manipulación de variables complejas ( Cos, pi, real, img, ....).
Sin embargo, lo que distingue realmente estos lenguajes avanzados de las listas de instrucciones ampliadas son las tres características siguientes:
- Son lenguajes estructurados, donde es posible la programación por bloques o “ procedimientos” , con definición de variables locales o globales,
- Incluyen estructuras de cálculo repetitivo y condicional ( figura 10.18 ) tales como:
- FOR ... TO
- REPEAT ... UNTIL X
- WHILE X...
- IF ... THEN ...ELSE
- disponen de instrucciones de manipulación de cadenas de caracteres, muy útiles en aplicaciones de gestión, estadística, etc.
Dada su facilidad de manejo y su difusión a todos los niveles, el BASIC, convenientemente adaptado a las aplicaciones del autómata, se configura como el lenguaje de alto nivel más extendido. Sin embargo, también se pueden encontrar intérpretes o compiladores de C, PASCAL, FORTRAN, etc., lo que permite resolver tareas de cálculo científico en alta resolución, clasificaciones de datos, estadísticas, etc., con total facilidad, y con acceso además a módulos y subrutinas específicos ya escritos en estos lenguajes y de uso general en aplicaciones informáticas.
Dado lo especifico de su aplicación un programas escrito en alto nivel necesita para su edición de una unidad de programación avanzada o de un software de desarrollo de programas que corra sobre PC.
Adicionalmente, es frecuente que el empleo de estos lenguajes estructurados obligue además a utilizar no solo una unidad de programación tipo PC, sino incluso una CPU especial en el autómata ( coprocesadora ), capaz de interpretar y ejecutar las nuevas instrucciones.
En cualquier caso, los lenguajes de alto nivel son posibilidades adicionales al alcance del programador, que puede si así lo desea, utilizar solo las formas básicas de contactos / bloques o lista de instrucciones para escribir sus aplicaciones: en otras palabras, los lenguajes avanzados nuca constituyen el lenguaje básico de un autómata o familia de autómatas, papel que queda reservado a la lista de instrucciones o al diagrama de contactos.
La figura 10.19 muestra un ejemplo de programación con este lenguaje. Como se observa, una ventaja adicional del programa en alto nivel es que a él se puede transcribir, casi literalmente el diagrama de flujos que constituye la primera aproximación a la representación del sistema de control. Esta ventaja, que evita pasar a algún otro modelo o transcribir este inicial a otro lenguaje, supone sin duda un importante ahorro de tiempo en la puesta en marcha de la aplicación.
1.5.- Grafcet.
1.5.1.- Resumen Histórico.
El grafcet nació como resultado de los trabajos de la AFCET, iniciados en la década de los sesenta. Su significado es el de GRÁfico Funcional de Control de Etapas y Transiciones ).
En principio se pretendía satisfacer la necesidad de disponer de un método de descripción de procesos, con total independencia de la tecnología, mediante un gráfico funcional que pudiera ser interpretado por no especialistas en automatización. El gráfico funcional permite la forma de descripción del proceso para técnicos de distintos campos, desde el ingeniero de organización o de producción, que define las necesidades del automatismo, pasando por el de diseño, que debe implementar el sistema de control y los accionamientos, hasta el técnico de mantenimiento, que debe cuidar de su funcionamiento o introducir modificaciones en la fase de explotación.
A partir de 1977 y gracias a la colaboración entre AFCET y ADEPA se crearon una serie de útiles metodológicos entre los que destaca el GEMMA para apoyar el GRAFCET como método no solo descriptivo, sino como herramienta de diseño.
En 1982 el trabajo fue recogido por un grupo de trabajo de AFNOR, organismo encargado de la normalización en Francia, compuesto por miembros de UTE, CNOMO, UNM y de otros organismos relacionados con la industria de la automatización y la enseñanza culminado con la publicación de la Norma NF C03-1904.
En la actualidad, diversos autómatas programables incorporan algunas instrucciones de programación que permiten introducir directamente el grafo de GRAFCET. En otros casos se dispone de software capaz de compilar un grafo GRAFCET al lenguaje de la máquina, permitiendo en ambos una gran flexibilidad y rapidez de diseño con ventajas sustanciales en las fases de verificación, explotación o eventual modificación del automatismo. A pesar de ello no debe confundirse el GRAFCET con un lenguaje de programación.
El gráfico funcional complementado con los métodos del álgebra de Boole, permite ir más allá de la simple descripción e interpretación gráfica de un proceso y se ha convertido en una potente herramienta de diseño de sistemas lógicos, con unas reglas bastantes simples.
1.5.2.- Diseño basado en GRAFCET.
Los principios que inspiraron la creación del GRAFCET y en los que se basa su aplicación son los siguientes:
a) debe caracterizarse el funcionamiento del automatismo con total independencia de los componentes con los que vaya a ser construido.
b) el conjunto de un sistema automático se divide en dos partes: parte de control ( PC ) y parte operativa ( PO ). La parte de control comprende todo aquello que contribuye a la automatización del proceso.
c) El elemento fundamental de un proceso es la “ operación” ( denominada etapa en el lenguaje de GRAFCET ), entendiendo como tal una acción realizada por el automatismo.
d) Debe dividirse el proceso en macroetapas y estas en etapas más elementales, hasta conseguir que las acciones a realizar en cada una de ellas dependan solo de relaciones combinacionales entre entrada y salidas. Cada una de estas etapas elementales tendrá asociada una variable de estado.
e) Establecer un gráfico de evolución que indique la secuencia de operaciones secuencia de etapas y las condiciones lógicas para pasar de una a otra ( denominadas condiciones de transición en el lenguaje de GRAFCET ). Como resultado de esta fase se obtienen las ecuaciones lógicas de las variables de estado y, por tanto, queda resuelta la parte secuencial del automatismo.
f) Establecer para cada operación elemental ( etapa ) las relaciones lógicas entre entradas y salidas, utilizando eventualmente otras variables internas combinacionales.
g) Finalmente, implementar el sistema utilizando tantos biestables como variables de estado y cableando o programando las relaciones lógicas obtenidas en las fases e y f.
A continuación le expongo algunos equivalentes en GRAFCET de algunos bucles
1.5.3.- Gemma
He insistido varias veces en que el desarrollo y explotación de sistemas automáticos de producción requiere el empleo de útiles metódicos, con un vocabulario preciso y una aproximación sistemática y guiada donde se reflejen punto por punto los procedimientos a emplear a modo de un “ check list “.
En lo que se refiere al GRAFCET es un útil adecuado para ello, pero es preciso partir de unas especificaciones precisas y prever posibles condiciones anómalas. En otras palabras, las especificaciones son la “ materia prima “ a partir de la cual construimos un proyecto. Unas especificaciones incorrectas o incompletas nos llevaran a un resultado final incorrecto. Es necesario, pues, un útil previo que nos permita generar unas especificaciones correcta, asegurando que no dejan situaciones imprevistas y no dejan situaciones imprevistas y no contienen incoherencias.
Uno de los intentos de creación de dicho útil ha sido llevado a cabo por un equipo de investigación impulsado en Francia por ADEPA y ha dado como resultado la creación del GEMMA. El GEMMA es un método para el estudio de las posibles situaciones de marcha y parada en que puede encontrarse la parte operativa ( PO ) de un proceso y las formas de evolucionar de unas a otras. Para ello se apoya en un útil gráfico que representa una serie de estados tipificados de la POR y muestra las posibles formas de evolución de unos a otros.
2.- Resumen.
Programar un autómata consiste en introducirle una secuencia de órdenes
( instrucciones ) obtenidas desde un modelo de control, según una codificación determinada ( lenguaje ) que por su forma puede ser:
- literal o de textos,
- gráfica, o de símbolos.
Cada instrucción del programa consta dos partes: el código de operación, que define qué se debe hacer y código o códigos de los operandos (generalmente identificados por su disposición ), que indican las constantes o variables con las que se debe operar. Los lenguajes literales están formados por secuencias de textos agrupados en instrucciones u ordenes elementales del programa.
Según la complejidad del lenguaje están disponibles instrucciones desde sencillas funciones booleanas ( AND, OR, etc. ) hasta estructuras complejas de programación en alto nivel ( FOR NEXT, WHILE, ETC. ), pasando por instrucciones de acceso a bloques secuenciales ( TIM, CNT, etc. ) y de manipulación de texto y valores numéricos ( ADD,MOV, MUL, etc.).
Los lenguajes gráficos, con origen en los esquemas eléctricos de relés y en los diagramas de la electrónica digital, utilizan símbolos de contactos / bobinas para representar las instrucciones básicas y símbolos de bloques lógicos para las extensiones al lenguaje, que extienden su potencia hasta la de los lenguajes literales de alto nivel. De esta forma permiten estructuras de programación tan complejas como aquellos, sin perder por ello la facilidad de comprensión y visión de conjunto que ofrece siempre la representación gráfica.
Así la automatización de procesos comunes ( mando de máquinas, cadenas de producción, etc.) puede hacerse con diagramas de contactos o con listas de instrucciones, los dos lenguajes básicos para la mayoría de autómatas. De hecho, es tan frecuente el uso de uno u otro, que muchos fabricantes ya prevén en su software de programación sobre PC la posibilidad de transcodificación entre ellos, con operaciones sencillas de compilación / decompilación. De esta forma, el usuario puede trabajar con el lenguaje que prefiera y compilarlo, si fuera necesario, al que entiende su autómata.
Para mandos complejos que necesiten realizar cálculos, manipular largas cadenas de caracteres o utilizar subrutinas o bloques de programación manufacturado ( mando de ejes, regulación PID, etc. ) puede ser necesario utilizar lenguajes literales de alto nivel, que permiten también, no se olvide, programar sentencias booleanas sencillas o manejar temporizadores y contadores como listas de instrucciones.
Utilizados originalmente de forma independiente unos de otros, la tendencia actual de los fabricantes pasa por la integración de las diferentes formas en un único lenguaje mixto, que combine la claridad de los lenguajes gráficos para las funciones combinacionales y secuenciales, con la potencia y compacidad de los literales para el cálculo matemático y los tratamientos de textos.
Para ello se siguen los siguientes pasos:
- Potenciar los lenguajes gráficos permitiendo el uso de estructuras de programación avanzada ( GRAFCET y aumentando las instrucciones de expansión disponibles.
- Permitir la utilización de lenguajes literales dentro de un programa gráfico, bien incluyéndolos como líneas de instrucción dentro del programa, bien editandolos como subrutinas de libre acceso desde él.
- Desarrollar herramientas de edición que permitan al usuario de definir sus propias sentencias, que podrá almacenar como bloques de expansión dentro de la librería disponible.
En genera, y como conclusión se espera una evolución de los lenguajes gráficos haciéndolos más potentes, más abiertos y más sencillos de manejar por el usuario, que, cada vez en mayor medida, podrá desarrollar sus aplicaciones sobre terminales de uso general tipo PC.
1
5
Descargar
Enviado por: | Alejandro |
Idioma: | castellano |
País: | España |