Estamos en la fase final del Curso Express de TIA Portal, y pronto comenzaremos a trabajar en proyectos completos en los que veremos la parte de programación del PLC además de crear las pantallas del HMI.
Una de las cosas más importantes que tienes que hacer cuando desarrollas un programa es la gestión de las alarmas.
En función de cual sea la filosofía, se pueden aplicar diferentes formas de trabajo.
A algunos programadores les gusta crear las alarmas en cada FC, de tal forma que en el mismo bloque veas las alarmas que lleva asociada. Otros, en cambio, usamos en general bloques específicos para las alarmas de tal forma que están todas centralizadas en un único lugar.
Cada maestrillo, tiene su librillo, que dice la sabiduría popular.
Con cualquiera de los métodos que uses, lo suyo es que la máquina tenga también una baliza de alarma.
Esta baliza normalmente es luminosa y sonora, de tal forma que cuando hay una nueva alarma, suena y parpadea a la vez, y cuando reconoces la alarma, se apaga la bocina, y la luz se queda fija.
En alguna ocasión ya hemos hablado de este tipo de gestiones, tanto en step 7 clásico, como en TIA Portal.
En esos dos casos, lo que hacemos es contar el número de alarmas en un ciclo de scan del OB1. Con ello, por un lado sabemos cuántas alarmas tenemos activas, y por otro, si hay una nueva alarma.
Este método, tiene un pequeño problema técnico que es que podría darse el caso de que en un ciclo de scan del OB1 podría aparecer una nueva alarma y desaparecer otra, haciendo el balance de alarmas activas igual que en ciclo anterior.
Esto se solventa simplemente haciendo que las alarmas hagan un SET, y no una igualación, de tal forma que la alarma no desaparece si el operario no resetea las alarmas, y por tanto, está delante de la pantalla y no cabe la posibilidad de que desaparezca una alarma y aparezca otra sin que este operario se entere.
Pero ¿se puede hacer de otra forma?
Contenido
Alarmas en TIA Portal usando XOR y AND
¡Pues claro! Se puede hacer de muchas formas. Entre otras, una que solucione el pequeño problemilla descrito de que aparezca una alarma y desparezca otra en el mismo ciclo de scan, que puede ser interesante si lo que queremos es usar la igualación en vez del Set con las alarmas.
Así que, esta vez, usaremos diferentes técnicas para lograrlo:
- AND y XOR
- AT
¿What….WHAT?
¡¡De qué hablas!!
Empecemos por el final.
Cómo usar AT en TIA portal lo comentamos en su día en este post. Básicamente lo que haces es sobre un área de memoria X, crear una especie de plantilla para acceder a estos datos de una forma más cómoda para ti.
De momento, quédate con la idea de que nos va a hacer falta, ya verás porqué.
Y con AND y XOR, ¿qué hacemos?
Bueno, la idea es la siguiente: imagina que tenemos un array de alarmas booleanas. Para simplificarlo de momento, imagina algo así como Array[1..8] of Boolean
Solo 8 booleanas, pero normalmente serán muchas más. Pero como digo, para el ejemplo, solo con 8.
Núm. Alarma | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Ciclo Anterior | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
Ciclo Actual | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
XOR | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
AND | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Así, los pasos a realizar, son los siguientes:
- Hacemos un XOR entre el estado de las alarmas en el ciclo anterior, y el ciclo actual. Como vemos, han cambiado la alarma 5, pasando de 0 a 1, y la alarma 7, pasando de 1 a 0. El resto, permanecen invariables, y por tanto, el XOR da 0.
- Luego, hacemos un AND del resultado obtenido en el paso anterior, con el estado actual, y por tanto, tendremos como resultado que todo está a cero salvo en el bit 5, que como ves estará a 1.
Y ya está, como ves, tenemos el resultado, que si lo comparamos con 0, vemos que efectivamente hay una alarma nueva.
Luego, hay que hacer un pequeño bucle para recorrer todas las alarmas, porque si en vez de 8 alarmas, tenemos 800, la cosa se puede poner interesante.
¿Lo vemos en un vídeo?
Vídeo de alarmas en TIA Portal
Actualización:
Me han comentado con buen criterio, que una vez encontrada una alarma nueva, se puede salir del bucle, marcando tanto la variable de nueva alarma como la de alarma activa.
Es totalmente cierto, y es más elegante hacerlo así.
Pero también es verdad, que el bucle lo tienes que recorrer siempre buscando nuevas alarmas, y solamente en el ciclo de scan que tenga una nueva alarma, podrás ahorrar unas pocas iteraciones debido a que te puedes salir antes del bucle. El resto del tiempo, que es prácticamente todo el tiempo, tienes que recorrer el bucle completo, ya que tienes que estar constantemente buscando nuevas alarmas hasta el último ciclo.
Lo de salirse del bucle es muy típico cuando buscas una información que sabes que siempre va a estar, y que una vez encontrada, sales fuera. Pero no es este caso. Piensa que en el trabajo normal de la máquina, hará millones y millones de ciclos completos, sin que aparezca una alarma, y solo cuando aparezca una, ahorrarás unas pocas iteraciones.
En cambio, si buscaras una información que sabes que siempre tiene que estar, sería lógico salir del bucle, porque en cada ciclo de scan, siempre ahorrarías unas pocas iteraciones salvo que el dato estuviera justo en la última iteración, pero no es el caso.
Por tanto, es una optimización más de planteamiento que realmente práctica, porque no ahorras apenas nada en cuanto a la carga de la CPU.
¿Qué te ha parecido las alarmas en TIA Portal?
Espero que te haya gustado esta forma de darle uso al XOR, AND y AT.
Recuerda que si eres integrante del curso de TIA Portal Express, tendrás el proyecto disponible para su descarga cuando lo integremos en los ejemplos finales.
Si no estás apuntado, y crees que aprender este tipo de cosas, ya sabes que puede que el curso pueda ayudarte.
También puedes apuntarte en Guorker.com donde por una cuota mensual, tendrás tarifa plana en todos los cursos disponibles en la plataforma.
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.
1 Comentario
Lo voi a aplicar, inmediatamente.
Gracias amigo.