Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Almentacion de datos de un Vi general a un SubVi

Muy Buenas comunidad NI!

 

Como algunos sabrán, continuo con mi proyecto de optimizacion de cargas, osea ahora lo estoy retomando, pero me surge una duda.

¿Como puedo enviar datos desde un Vi general a un SubVi que solo tiene una estructura de eventos?

Funcionaria así: Se visualiza el panel frontal del SubVi, mientras desde el Vi general se envían datos numéricos y estos se van observando en el panel frontal del SubVi

 

De antemano muchas gracias

0 kudos
Mensaje 1 de 6
3.735 Vistas

Hola Enrique.B,

 

Hay diferentes manera de pasar informacion de un VI a otro, especialmente si se trata de un subVI. La opcion a escoger dependera de la funcionalidad que quieras, asi como de la eficiencia que estes buscando. Por ejemplo: puedes hacer uso de una estructura del tipo Queue, en la cual puedes encolar informacion en uno de los ciclos, y utilizarla en otro ciclo. Estos ciclos pueden estar en el mismo VI, o en otro VI que llame a la cola por su referencia o por su nombre. Puedes encontrar un ejemplo del uso de estas estructuras en LabVIEW > Help > Find Examples > Optimizing Applications > Sunchronizing Tasks > Simple Queue.vi

 

Si te interesa algo mas limpio, y cuentas con LabVIEW 2015 o posterior, puedes echarle un vistazo a los nuevos cables llamados Channel Wires, con los cuales puedes implementar funcionalidades similares a las de Queues o variables locales: Getting Started With Channel Wires.

 

Una opcion adicional es utilizar una variable global en tu proyecto que contenga los datos a leer. Por ejemplo: un arreglo de 100 muestras, que sea leido por tu subVI cada cierto tiempo, y escrito por tu productor de datos. Toma en cuenta que esta implementacion puede ocasionar condiciones de carrera. Puedes encontrar mas informacion sobre las variables globales en: Creating Global Variables

 

Por otro lado, existe una arquitectura llamada FGV (Functional Global Variable) que permite almacenar datos y utilizarlos entre diferentes VIs ejecutandose de manera paralela. Es sumamente util en maquinas de estados, asi como otras arquitecturas en las que se requiera guardar una gran cantidad de datos de manera simultanea y leer/escribir en diferentes partes de tu programa. Encuentro este ejemplo que me parece te puede ser de utilidad: Using a Functional Global Variable to Communicate with a SubVI

 

Finalmente recomendarte echarle un vistazo al curso de Advanced Architectures, en el cual se cubren gran cantidad de funcionalidades con las que LabVIEW cuenta para poder realizar arquitecturas como la que describes: Advanced Architectures in LabVIEW

 

Espero estas referencias te sean de utilidad.

Un saludo!

Mensaje 2 de 6
3.690 Vistas

Muy buenas oscarfonseca

 

Con la solución de los Queue me familiarizo pero el ejemplo de LabView no me termina de explicar, ¿Como puedo utilizar esta función en un Vi que tiene SubVi?

¿Como puedo hacer que el Vi general se ejecute paralelamente del SubVi, mientras el SubVi se alimenta de datos que le entrega el Vi general?

Si no es mucha molestia y si tienes tiempo, ¿puedes hacer un ejemplo simple porfavor?

 

De antemano, muchas gracias

0 kudos
Mensaje 3 de 6
3.675 Vistas

Hola Enrique.B,

 

Para pasar un Queue entre dos VIs (puedes ser uno principal y otro que se ejecute de manera asincrona o sincrona en otra parte del programa) puedes pasar directamente la referencia a la misma a traves del panel de conexion de tu VI (y usando una referencia de Queue como control en el panel frontal), o abrir el queue con el mismo nombre dentro de tu VI secundario (esto es util especialmente si los VIs son independientes - no es un subVI al que se le pueda pasar la referencia.

 

Espero te sea de utilidad esta informacion.

 

Un saludo!

0 kudos
Mensaje 4 de 6
3.664 Vistas

Muy buenas oscafonseca

 

Antes que nada gracias por responder este tema.

Si, suena muy fácil como lo explicas, pero teniendo en cuenta que hace unos meses me integre al mundo de LabView, es muy complejo para mi.

Si tienes tiempo, podrías hacer un ejemplo simple por favor?

 

De antemano muchas gracias

0 kudos
Mensaje 5 de 6
3.641 Vistas

Hola Enrique.B,

 

Espero este ejemplo te sea de utilidad.

 

Un saludo!

0 kudos
Mensaje 6 de 6
3.635 Vistas