Vamos a ver las diferentes formas de hacer un Grafcet en TIA Portal, desde usando el propio lenguaje Grafcet de Siemens, pasando por los que más se suelen utilizar.
Contenido
¿Que es Grafcet?
Grafcet es un acrónimo de «GRAphe Fonctionnel de Commande Etapes/Transitions» o Diagrama funcional de etapas/transiciones de control, en la lengua de Cervantes.
Seguramente si no lo conoces, te has quedado igual.
Grafcet es una herramienta gráfica que permite modelar el comportamiento de un sistema de control secuencial mediante una serie de etapas, transiciones y acciones. Cada etapa representa un estado del sistema, cada transición indica la condición para pasar de una etapa a otra y cada acción indica la tarea que se debe realizar cuando se llega a una determinada etapa.
Aqui el punto: es una herramienta gráfica de modelado.
Por tanto, Grafcet no es un lenguaje de programación, sino una forma de modelar la forma en la que quieres que trabaje tu máquina.
Si miramos lo que dice Wikipedia sobre Grafcet, nos encontramos con que tiene esta pinta:
Básicamente en lo que se basa Grafcet es en dos cosas:
- Etapas: donde se ejecutan acciones (poner en marcha motores, EV, lo que sea)
- Transiciones: condiciones que se tienen que cumplir de la etapa corriente para avanzar a la etapa siguiente.
Así tenemos el Grafcet de la parte superior en la que se arranca en la etapa 1 en la cual seguramente no haya que hacer nada, ya que una etapa puede estar vacía de acciones.
Una vez se cumpla la condición 1, se pasará a la etapa 2 anulando la etapa 1. En esta etapa 2 se realizarán las acciones que se hayan programado para esa etapa.
Una vez se cumpla la condición 2, se pasará a la etapa 3, y así sucesivamente.
Al final, cuando se cumpla la condición 4 se retornará a la etapa 1 haciendo un bucle cerrado de acciones-transiciones.
5 formas de hacer un Grafcet en TIA Portal
La cuestión ahora es ¿cómo se puede llevar la programación de un Grafcet en TIA Portal en la práctica?
Recuerda que Grafcet no es mas que un modelado, no un lenguaje en sí mismo aunque también lo haya en TIA Portal para la serie S7-1500.
Por tanto, tendrás que usar las herramientas disponibles para poder llevar ese modelado a un lenguaje KOP o en AWL, o como lo quieras programar.
Así que yo haya visto, el concepto de etapa-transición se puede hacer de las siguientes 5 formas:
- Usando el lenguaje Grafcet en TIA Portal (no disponible para los S7-1200)
- Usando Set y Reset
- Mediante un índice (número) de etapa
- Moviendo un bit a lo largo de un word
- Usando Case en AWL o SCL
Puede que haya más formas, pero al menos estas son las que yo he visto a lo largo de estos años.
Usando el lenguaje Grafcet
La primera forma es la más obvia: usar el propio lenguaje Grafcet que ofrece Siemens.
Curiosamente no es la forma más habitual (ni mucho menos) de ver desplegado un Grafcet porque la forma en la que ha estado y está implementado no es muy amigable.
Anteriormente con Step 7 si querías programar en Grafcet necesitabas una licencia aparte ya que no venía con el Simatic Step 7. Esto ya de por sí, es algo que no anima a su uso.
Pero además trae otros problemas como:
- Todos los bloques en Grafcet tienen que estar realizados en FB, con lo que las modificaciones en línea se hacen más complejas al tener que recargar el DB de instancia y por tanto poniendo a valores iniciales cada variable de este DB.
- La visualización del Grafcet en portátiles de aquella época se hacía complicado cuando el programa es complejo y hay muchas ramas en paralelo.
- Las referencias cruzadas de los saltos entre etapas complejos de seguir.
Tras lo que yo he vivido, no me gusta la implementación de Grafcet en TIA Portal ni en Step7. Tal vez sea una manía personal.
Porque sobre el papel está muy bien cuando la secuencia es sencilla y limpia. Cuando empiezas con bifurcaciones, saltos de una rama a otra etc, se hace ingobernable ante una avería. Puede que no sea tanto culpa del lenguaje en sí, con la mala implementación de este, pero lo cierto es que no debo ser el único ya que para realizar secuencias pocas veces he visto que se use este lenguaje.
Usando Set y Reset
Junto con la siguiente forma de generar un Grafcet el TIA Portal mediante un contador o índice de paso, es de los más utilizados.
Para programar de esta manera básicamente lo que vas a usar son Set de una señal booleana (marca o de un DB) para fijar la etapa activa y Reset para desactivar la anterior etapa.
De esta forma, tendrás dos partes del programa:
- La secuencia de pasos con las transiciones
- Una parte de activación de las salidas en función de la etapa activa.
En el siguiente post hablamos de Cómo programar las etapas en TIA Portal usando Set y Reset.
Mediante un índice (número) de etapa
La idea de usar un índice es usar básicamente un entero que contenga el paso.
Vas a programar todo en lenguaje KOP salvo que en vez de hacerlo con Set y Reset como en el caso anterior lo que irás cambiando es el valor del índice de paso.
Este caso lo vemos aplicado en el ejemplo de estructuración de un programa en TIA Portal
Moviendo un bit a lo largo de un word
Dentro de las operaciones que se pueden hacer sobre un word o doble word está el mover los bits hacia la izquierda. Por tanto, se puede usar estas instrucciones para ir moviendo un bit cada vez que queramos cambiar de etapa.
Este ejemplo lo puedes ver en Step 7 en el desplazamiento de bits para crear secuencias, pero verás que es completamente aplicable a TIA Portal.
Usando Case en AWL o SCL
La forma de programar un Grafcet en TIA Portal con AWL o SCL es bastante similar.
La idea es tener un índice de etapa numérico. Luego hacer un salto en función de este valor al punto del programa que aplica. En esa zona, se evalúa la transición y en caso de que se cumpla la condición se le asigna el nuevo valor al índice de tal forma que en la siguiente ejecución del programa el salto se hará a la nueva zona donde esté asignado el valor del índice.
Personalmente no lo he usado nunca si bien sí lo he visto usar. No me parece que tenga ninguna ventaja respecto a otras formas y me parece bastante engorroso.
¿Qué forma elijo para hacer un Grafet en TIA Portal?
Decididamente las que más me gustan a mi son hacerlo con Set/Reset o bien con un índice, pero siempre en lenguaje ladder para realizar los grafcet en TIA Portal.
En los últimos proyectos he estado trabajando más con el índice, y es una buena forma de trabajar siempre y cuando lo hagas en TIA Portal ya que te permite declarar constantes que faciliten la referencia cruzada para ver dónde se está aplicando o dando valor a un paso en concreto.
Te animo a que comentes cuál es el método que más te gusta o usas, y si quieres que haga alguna entrada más en concreto con alguno de los métodos.
Enseño a programar PLC de Siemens a través de mis cursos.
Más información sobre mi aquí
Puedes seguirme en cualquiera de las siguientes redes sociales.
8 Comentarios
Tb…actualmente uso indices pero tb he usado desplazamiento de un bit aunque solo lo he usado en grafcets lineales y simples. Tb he usado awl con saltos, particularmente en proyectos donde había tanto código que hacía saltar el wachdog y la manera en que solucionábamos el asunto eran saltos condicionales. Set y reset creo que es la mejor manera visual que hay, pero cuando no son grafcets lineales, se puede complicar.
Sí, cada forma tiene sus pros y contras. Yo personalmente me quedo Set/Reset y con el índice en ladder.
Si estáis interesados en la programación del GRAFCET en TIA Portal, os aconsejo mi libro «Sistemas Secuenciales Programables» de la editorial Editex, en el que profundizo en como implmentar en KOP cualquier tipo de GRAFCET, desde los más básicos, a los de tipo estructurado con macroetapas, etapas incluyentes y subrogramas como acciones, respetando el estándar normalizado según la norma IEC.
https://youtu.be/EXaU7dHMHj8
Excelente información
Gracias
De repente algun día podrías realizar un ejemplo de programación de Grafcer con indice, desde cero. Talvez con Factory IO
Hola Iñigo, muchas gracias por esta informacion y te cuento, en mi trabajo en las maquinas que yo manejo estan en Grafcet las secuencias y ahi me toco aprender sobre este lenguaje, se me hace muy facil de entender aunque considerando lo que mencionas tal vez no sea algo tan complejo por eso se me ha hecho facil, en otras maquinas que no son mias en ocasiones doy soporte y esas si estan solo con set-reset las secuencias, las he manejado muy poco y la verdad no logro entenderlas aun, creo que me enfocare mas en entender estas. Saludos…
Si las secuencias son simples, es sencillo de seguir. El problema reside cuando hay muchos saltos y hay que hacer modificaciones con la máquina en producción.
Excelente abordagem.
Pues tiene razón Iñigo!
A pesar que se dispone de una leguaje específico ya de siemens poco se ve. Yo personalmente me gusta para aplicaciones muy sencillas por que es muy intuitivo y fácil de entender pero para proceso ya más complejos quizá no sea la mejor opción.