Discusiones sobre Productos NI

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

Cómo Configurar multihilos in LabVIEW

Hola a todos!!
 
Me gustaría saber cómo se configura una aplicación multihilo con LabVIEW. Resuta que tengo dos VI distintos, que se comunican a través de una cantidad grande de shared variables. Aparte, en uno de los VI tengo un monto de llamadas a funciones .dll. He estado probando ambos VI con las comunicaciones, y resulta que la aplicación conjunta trabaja muy lento. Por ejemplo, si pulso un boton en uno de los VI, en el otro se debe incrementar una cantidad. Pues bien, este proceso tarda aprox. 60 seg.
He estado buscando documentación, pero los que he encontrado no me aclaran cómo configurar las propiedades de ejecución de los VI, ni cómo hacerlos multihilos.
 
En definitiva, me gustaría que me facilitéis documentación o alguna ayuda para poder configurar los VI.
 
Muchas Gracias
 
Un saludo
0 kudos
Mensaje 1 de 6
5.898 Vistas

Para tener dos tareas ejecutándose en pararelo dentro de un mismo VI sólo tienes que poner ambas en dos bucles. La forma de ejecutarse de LabVIEW favorece la multitarea. Los hilos los crea automáticamente LabVIEW para ejecutar las tareas sobre ellos.

La prioridad de ejecución de un VI respecto a otro que use el mismo sistema de ejecución se pude configurar en File > properties > Execution > Priority. La prioridad de los hilos de un sistema de ejecución de LabVIEW (y su número) respecto otros hilos en el sistema operativo se puede cambiar usando el VI de \LabVIEW\vi.lib\utility\sysinfo.llb\threadconfig.vi.

Para sincronizar varios hilos puedes usar los VIs de la paleta Programming > synchronization.

Sobre tu aplicación, realmente no creo que el hacer un VI con varios hilos te aporte muchas mejoras. En lugar de ello creo que deberías buscar la forma de optimizar tus programas, busca los cuellos de botella en tu programa, intenta usar pipeline, etc.

Más info en:

 

 

0 kudos
Mensaje 2 de 6
5.889 Vistas
Muchas Gracias. Voy a empezar a estudiarme el tema para ver como puedo arreglar la aplicación conjunta.
 
Gracias d nuevo
 
Un saludo
0 kudos
Mensaje 3 de 6
5.884 Vistas
Hola de nuevo,
 
He estado estudiando el tema de los multihilos y mutitareas, y haciendo  varias pruebas con mi sistema. El sistema se compone por un lado de un VI implementado en un ordenador, y otro VI integrado en un ordenador distinto. Ambos tienen una conexión wireless y se pasan datos a través de shared variables. En uno de los ordenadores, el VI está formado por una cantidad considerable de call library function, aparte de tener 5 subvi del mismo tipo y otros 4 o más subVI de otros tipo.
Como he comentado, he realizado varias pruebas....he añadido varios bucles while, he puesto los subVI como "reentrant", he cambiado la prioridad del VI a high priority y he seleccionado el sistema de ejecución como "user interface".
Mi problema, y en general es lo que quiero hacer, es conseguir que cuando pulse un botón en el VI del otro ordenado, inmediatamente pase la información al otro VI y se visualice por pantalla el cambio. Por tanto, ¿Cómo puedo conseguir alta prioridad en las lecturas de las shared variables, y menos en la demás: dlls, interfaz de usuario..? ¿Qué debo configurar?
 
Si es necesario os mando los dos VI y las dll en un próximo mensaje.
 
Muchas gracias
 
Un saludo
0 kudos
Mensaje 4 de 6
5.858 Vistas
 

Hola De la Vega si quieres que las dos Computadoras estén compartiendo la interface de usuario, y ya estas usando Variables compartidas es muy fácil de hacer y no necesitas agregar lógica adicional. Lo que puedes utilizar es front panel binding.

 

 

Aquí o puedes arrastrar la variable directamente al panel frontal (esto te genera un control ya ligado) o entra a las propiedades del control y selecciona que lo ligue a la variable compartida correspondiente. Con esto no tienes que leer la variable y escribirla al control y puedes lograr un tiempo de respuesta bastante rápido.

El siguiente link contiene un poco mas de información:

https://www.ni.com/en/support/documentation/supplemental/06/using-the-labview-shared-variable.html

 Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 5 de 6
5.845 Vistas
Muchas gracias.
 
De esta forma, me evito añadir un montón de shared variables por todo el diagrama de bloques. Es una opción en la cual no pensé.
 
Gracias
 
Un saludo
0 kudos
Mensaje 6 de 6
5.829 Vistas