LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

¿Es posible utilizar el mismo SubVI Clone en un mismo Diagrama de Bloques?

Solved!
Go to solution

Uno de los SubVI que he creado lo utilizo en varios diagramas del bloques, donde genera información referente a ese diagrama de bloques. Para utilizar el mismo SubVI lo he definido como Preallocated clone reentrant execution, de esta forma, dispongo de la información referente a ese diagrama de bloques. ¿Si copio varias veces el SubVI en el mismo diagrama de bloques, le puedo decir que tiene que hacer referencia al mismo SubVI, en vez de generar un nuevo clone?

 

Muchas gracias.

0 Kudos
Message 1 of 9
(3,107 Views)

Hola Carlos_Gonzalez

 

A como supongo ya sabes, cuando quieres habilitar la potencial ejecución de un mismo subVI simultáneamente por diferentes llamados tienes básicamente dos opciones:1. Shared clone reentrant execution y 2: Preallocated clone reentrant execution. A mi entender, la diferencia radica en que el primero trata de reducir el consumo de memoria al reproducir clones sólo cuando sea necesario y reutiliza alguno que ya esté creado si no está siendo utilizado. Por otro lado el segundo crea una nueva copia en cada llamado aún cuando existan copias que ya no se estén utilizando.

 

Lo que no entiendo es a que te refieres cuando dices "le puedo decir que tiene que hacer referencia al mismo subVI en vez degenerar un nuevo clone". ¿Será que lo que quieres decir es que quieres tener una mezcla de las 2 opciones? ¿Así en un diagrama de bloques específico quieres que se comporte como "Shared Clone"? ¿Podrías darnos un poco más de detalle?

 

Saludos!

0 Kudos
Message 2 of 9
(3,060 Views)

Hola agomez:

 

Como bien dices, preallocated clone reentrant execution, crea una copia del SubVI cuando se efectua la primera llamada, pero mantiene la información de los shift register contenidos en el SubVI. Es decir, para una misma llamada a un SubVI, se genera un clone y se mantiene la información que se contienen en él.

 

Lo que quiero hacer, es utilizar un SubVI que utilizo en varios diagramos de bloques, con la opción de preallocated clone reentrant execution, para que me creo una copia (clones) en cada uno de los diagramas, pero el problema que me encuentro, cuando tengo un case en un mismo diagrama de bloques y coloco el SubVI en diferentes casos, me creo una copia del SubVI en cada uno de esos casos. Lo que quiero que haga, que para un mismo diagrama de bloques, utilice la información del mismo subVI. Aunque me parece que esto no se va a poder realizar.

 

Saludos!

0 Kudos
Message 3 of 9
(3,055 Views)

Adjunto un ejemplo.

 

Lo que sucede, es que dispongo de un SubVI que lo utilizo en varias ventanas, y para no generar uno distinto, con el mismo código, para cada uno de estas ventanas, querio realizar algo, que permita realizar un clone, pero que en cada diagrama funcione como si fuera un único subvi.

0 Kudos
Message 4 of 9
(3,048 Views)

Saludos de nuevo.

 

Ahora te comprendo un poco mejor. Básicamente requieres un comportamiento tipo "shared" para cada diagrama de bloques que llama un subVI varias veces, pero tipo "preallocated" para diagramas de bloque diferentes.

 

No sé si estés familiarizado con el llamado de VIs por referencia utilizando "Start Asynchronous Call" y "Wait On Asynchronous Call".  Básicamente la idea es crear una sóla referencia para tu subVI en cada diagrama de bloques y reutilizarla en cada llamado, de esta forma cada diagrama de bloques tendrá su único clon. Te adjunto de nuevo un ejemplo básico con dos "callers" que llaman al mismo subVI cada uno creando su propio clon. Para probarlo corre "Caller1" y "Caller2" simultáneamente. Configuré el VI "Untitled1" de tal forma que se abra el front panel cada vez que es llamado. Como podrás notar sólo se están creando 2 clones.

 

Suerte, ahí nos cuentas como te va y si te sirve la solución para tu aplicación.

0 Kudos
Message 5 of 9
(3,029 Views)

Muchas gracias por responder agomez:

 

Aun no he actualizado la versión de LabVIEW y tengo intalada la versión 12. No se si puedes adjuntar de nuevo el ejemplo compatible con versiones anteriores.

 

Un saludo.

0 Kudos
Message 6 of 9
(3,020 Views)
Solution
Accepted by topic author dgd.gomez

Claro, con mucho gusto. Acá está. Por cierto, antes de ejecutar los ejemplos debes indicar manualmente el path del archivo llamado.

Message 7 of 9
(3,015 Views)

Muchas gracias, creo que es totalmente valido para lo que quiero hacer. Pero tengo un problema, que no se muy bien como solucionar, los paneles frontales del clone se muestran visibles, ¿es posible que se mantengan ocultos?, es decir, como si fuera un subvi en ejecucion, pero sin mostrar su panel frontal.

 

Un saludo.

0 Kudos
Message 8 of 9
(2,995 Views)

 

Sí claro. Lo que pasó es que yo los configuré para que se abrieran al llamarlos sólo para que pudieras ver el comportamiento. Cualquier subVI por defecto va a estar configurado para que no se abra su panel frontal al llamarlo por lo que no tendrás ese problema.

 

Por si te interesa, esto se configura en la ventana de VI Properties: File > VI Properties (Ctrl+I) > Category: Window Appearance  > Customize >  Show Front Panel When Called.

 

Capture1.JPG

 

Saludos!

 

 

0 Kudos
Message 9 of 9
(2,987 Views)