Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Problème de communication entre différents sous-VI

Résolu !
Accéder à la solution

Bonjour,

 

J'ai un problème qui me paraît anodin (qui l'est peut-être) mais qui m'embête beaucoup:

 

Dans un programme Labview, j'ai plusieurs boucles while qui tournent en parallèle. 

Une des deux boucles a besoin de valeurs générées dans l’autre boucle (exemple 1, ci-dessous), ce qui est possible via une variable locale ou un noeud de propriété valeur. 

Exemple 1.jpg

 

Par contre, j'aimerai créer des sous-VI pour plus de lisibilité, et c'est la que le problème survient: si chacune des boucles devient un sous-VI. Je ne sais plus comment utiliser les variables locales et le noeud de propriété ne semble pas fonctionner non plus (exemple 2 qui ne fonctionne pas).

Exemple 2.jpgSous-VI 2 de l'exemple 2.jpg

 

 

Quelqu'un saurait-il donc comment transmettre des données entre sous VI?

0 Compliments
Message 1 sur 4
4 494 Visites
Solution
Accepté par GabN

Bonjour,

 

Il existe différentes possibilités: les variables globales fonctionnelles (http://www.ni.com/example/31375/fr/), dans votre cas utiliser les files d'attentes serait plus judicieux puisque la deuxième boucle dépend de données de la première.

Cordialement

Greg S.
CNRS
LV 7.1 8.2 8.6 2009 2011 2012 2013 2014
LPMC - CNRS
N'oubliez pas de complimenter cela fait toujours plaisir.
Message 2 sur 4
4 493 Visites

Merci pour votre réponse,

 

J'ai testé l'utilisation de variables globales fonctionnelles et ça semble marcher, merci ! je vais les tester dans mon programme réel maintenant.

 

Par contre pour les files d'attentes, j'y avais pensé, mais dans mon programme réél, la première boucle acquière des données analogiques (température, pression) à 200 ech/s alors que la deuxième boucle acquière une fréquence issue d'un compteur que je reconverti en débit, débit que je dois ensuite recaler en fonction de la pression et de la température (qui sont acquises dans la 1ere boucle). La génération de données ne se fait donc pas à la même vitesse entre les deux boucles, et cela me semblait plus difficile d'effectuer le calcul de recalage du débit à chaque instant, dans une 3ème boucle.

 

0 Compliments
Message 3 sur 4
4 481 Visites

Il y a déjà quelques temps j'avais fait dialoguer entre eux deux process indépendants lancés de façon asynchrone.

 

ça fonctionnait tip-top. C'est le premier message de la page n°2 du thread ....  ici   (voir le code "dialogue entre 2 VIs Asyn.zip")

 

(juste une idée ... ceci dit, il y a plusieurs façons de pouvoir échanger des données entre 2 VIs indépendants)

Message 4 sur 4
4 475 Visites