lunes, 13 de febrero de 2012

Sincronización Rendezvous

Hola a todos, en esta entrada os voy a enseñar como y para qué se utiliza la sincronización rendezvous. En muchas ocasiones podemos llegar a necesitar que un conjunto de tareas, se empiecen unas a otras antes de empezar, o también antes de acabar. Por ejemplo, a veces necesitamos que antes de empezar una tarea todos los vagones de mercancía estén colocados en su sitio, y necesitamos por tanto que empiecen cuando todos estén en el lugar adecuado.

Para eso tenemos la sincronización rendezvous, que nos permite hacer que diferentes secuencies se esperen entre sí.

El ejemplo que os voy a poner yo es simplemente el de 3 leds. Cada led representa a cualquier tipo de actividad que podáis pensar. El caso es que, dependiendo de si tengo o no activada la sincronización, veréis que los leds se encenderán cuando les toca (rendezvous desactivado) o por el contrario, se sincronizarán.

Por tanto este será más o menos el VI, para que os hagáis una pequeña idea:





Y este sería el front panel:




Como os comenté, los tres leds, y también un botón para activar o desactivar la sincronización.

Comenzaremos con la elaboración del diagrama de bloques, lo primero que vamos a necesitar es una función que sirva como núcleo común de todas las funciones y, por tanto que haga que cuando éste esté activado, se sincronicen.

Para eso usamos una función denominada "create rendezvous", podemos configurar el nombre, así como también el número de "tareas" que deseamos sincronizar.






Como os enseño en la imagen, el nombre será rendezvous, y como utilizo 3 leds para emular cada tarea, tengo que poner en "size" 3. Una vez hecho esto, pasaremos a elaborar las diferentes secuencias.

Es importante saber que también debemos haber creado en el front panel, los 3 leds, así como también el elemento booleano que nos servirá para activar y desactivar la sincronización.

Una vez tengamos esto, será el momento de crear las diferentes secuencias. Comenzaremos con la estructura inicial, que estará formada por "flat sequence.




Una vez tengamos esto será el momento de rellenarlo, como veís, tenemos 3 casilas en cada flat. En la primera vamos a tener que poner el tiempo de ejecución, como yo necesito que funcionen a destiempo, en el primer flat no voy a poner retardo, en el segundo pondré uno de 1000 ms y en el tercero uno de 5000 ms. Por lo que uno se ejecutará al darle a "RUN" otro al segundo y otro a los 5 segundos.

Aquí os muestro los retardos de los 2 flat finales.






Una vez tenemos esto, trazaremos las líneas del rendezvous a cada una de las secuencias, como os muestro aquí.





Sin embargo, la función de "create rendezvous" no es la que hace que las secuencias se paren hasta que todos hayan acabado, parta eso necesitamos esta función.





Las cuales vamos a poner dentro de un cuadro de "true o false" en cada uno de los cuadros de en medio de todas las secuencias, como os muestro aquí.






Bien, una vez tengamos esto, tan solo nos faltará poner al final de cada secuencia el led correspondiente, por orden. Es decir, el de arriba el 1, el de en medio el 2 y el de abajo el 3. Así como también es importante que en la primera secuencia, pongamos que los 3 leds están apagados.


Ya solo nos quedará poner un booleano que represente al control de la sincronización que, si echáis un vistazo lo podréis ver aquí.






Una vez tengamos esto, ya tendremos nuestro programa finalizado. Para que entendáis mejor a lo que me refiero os haré un vídeo demostrativo, y lo subiré cuando pueda, espero que os sirva de ayuda para futuras prácticas con secuencias en las que importa una espera.  Un saludo!








AQUÍ LA DESCARGA DEL VI

No hay comentarios:

Publicar un comentario