Texto Indexado para mostrar avisos en HMI II

En el ejercicio anterior habiamos visto como resolverlo, pero ... tenemos un inconveniente, si tenemos por ejemplo 20 avisos, y el primero que se activa es el último, es decir el 20, para visualizarlo necesitan pasar 20 x 2 segundos = 40 Segundos, suponiendo que sean 2 segundos el tiempo definido para la visualización de cada aviso. En el siguiente ejercicio vamos a visualizar solo los avisos activos, vamos a ver la declaración de las variables que vamos a utilizar, aunque como siempre suele pasar, es posible optimizarlo

El código para nuestra función es el siguiente, voy a explicar brevemente lo que hace, a parte del texto comentado que ya he puesto, lo que va ha hacer es recorrer el Array de Avisos, comprobar si esta activo o no, si esta se pasa a un ArrayTemporal que será donde estan todos los avisos activos, así al recorrerlos seran seguidos cada 2 segundos, independientemente de su posicicion, por el contrario si el aviso estaba registrado en el ArrayTemporal y ya no esta activo, hay que borrarlo

Esta parte de código es la que se encarga de recorrer el ArrayTemporal, según el ciclo que es el tiempo que hayamos elegido, yo para el ejemplo he puesto 2 segundos

Los siguientes dos segmentos lo que hacen es un Flip-Flop, o generar una señal cada 2 segundos que es el tiempo definido, este será el tiempo empleado en Ciclo para la visualización del Texto en el Panel.

Y aqui la Función que hemos creado, donde se le ha asociado su DB de instancia.

Tenemos CicloBucle, que es donde se ejecuta la primera parte del código, es decir, buscar los avisos activos, registrarlos en caso necesario o borrarlos, aqui lo ideal sería 1 segundo, ya que normalmente es el valor por defecto de visualización en el Panel, yo para el ejemplo he usado la misma marca de 2 Segundos.

En Ciclo, como mencione anteriormente es para mostrar el Texto, y hay que ponerle en ambos un flanco positivo, porque solo interesa que se ejecute 1 sola vez en cada ciclo.

Aqui un pequeño video, de como seria su funcionamiento en el Panel.

10 de Abril del 2013