Discussions au sujet des autres produits NI

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

modification de valeur dans un sous vi

Résolu !
Accéder à la solution

Bonjour, je voudrais jouer une sinusoide en continue dont la frequence peut etre change suivant l'utilisateur via une comande. J'ai trouve l'exemple qui joue le son en continue et j'essaire en vain de mettre ca  en sous vi commande par un vi avec differentes commandes. Helas la frequence du son ne change jamais et je n'arrive pas a comprendre pourquoi. Je vous joins un exemple merci de votre aide.

0 Compliments
Message 1 sur 9
4 163 Visites

Bonjour,

 

Il faut mettre vos commandes de fréquence et de volume à l'intérieur de la boucle While, sinon ces paramètres ne sont pris en compte qu'une seule fois lors du chargement du sous VI.

 

Cordialement,

Da Helmut
Voir le profil de Maxime M. sur LinkedIn - View Maxime M.'s profile on LinkedIn
0 Compliments
Message 2 sur 9
4 161 Visites

J'ai mis les commandes fréquence et volume dans la boucle while. Mais il ne lit que la valeur a l'initialisation du vi. Si par exemple je met au démarrage 2000 Hz il ne lit sans arrêt que cette fréquence et pareil pour le son. Je sais pas si j'ai bien modifie le vi mais je pense que oui. Merci d'avance

 

0 Compliments
Message 3 sur 9
4 149 Visites

Bonjour,

 

C'est tout à fait normal, cela respecte le flux de données, je n'avais pas vu que vous utilisiez le VI de génération comme un sous VI.

 

Dans ce cas là il faut changer votre méthode de communication des données entre les deux VIs.

 

Dans votre cas, le VI principal va donner les paramètres une seule fois au sous VIs qui va s'exécuter tant que la boucle while n'aura pas fini de tourner.

 

Il vous faut mettre en place un moyen de scrutation des paramètres en entrée.

 

Le plus simple est d'utiliser une variable globale fonctionnelle (FGV en anglais ou "Action Engine).

 

Dans votre VI Principale il faudra appeller et exécuter le sous VI et également mettre une boucle while qui va mettre à jour les valeurs des commandes dans les variables globales fonctionnelles.

 

Le sous VI va alors scruter en permanence ces variables dans la boucle while et mettera à jour ses valeurs au niveau du signal généré.

 

Vous pouvez également utiliser les files d'attentes pour communiquer entre vos deux VIs.

 

A vous de voir. Je vous conseil les FGVs qui sont plus simples et rapides à mettre en oeuvre pour votre cas.

 

Cordialement,

Da Helmut
Voir le profil de Maxime M. sur LinkedIn - View Maxime M.'s profile on LinkedIn
0 Compliments
Message 4 sur 9
4 143 Visites

Merci de votre réponse. Pour le moment c'est encore flou car je ne connais pas du tout le fonctionnement des variables globales fonctionnelles. Ca fait 3 heures que je suis dessus et j'en suis toujours au même point , c'est a dire que je n'avance pas sur cette gestion. J'ai fait une recherche sur le site de labview , mais pour le moment l'exemple que j'ai trouve ne m'aide pas du tout. Si vous pouviez plus me mettre sur la voie merci d'avance.

0 Compliments
Message 5 sur 9
4 123 Visites
Solution
Accepté par l'auteur du sujet chris83160

Bonjour,

 

Voici ci-joint un exemple de FGV uniquement pour modifier le volume et arrêter les deux VIs, à vous de faire le reste.

 

FGV1.png

 

FGV2.png

 

Cordialement,

Da Helmut
Voir le profil de Maxime M. sur LinkedIn - View Maxime M.'s profile on LinkedIn
Tout télécharger
0 Compliments
Message 6 sur 9
4 116 Visites

Bonjour,

 

Je viens simplement compléter la solution de Maxime qui est clairement la plus performante.

 

Si toutefois vous avez toujours un peu de mal avec les FGV, vous pouvez aussi créer des références de contrôle (comme le son ou le bouton stop), et passer leur valeur dans le sous-VI. L'implémentation est un peu plus facile qu'une FGV à partir de votre code. J'ai joint un exemple (LV 8.6, à tout hasard, car vous n'avez pas spécifié votre version).

 

Cordialement,

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

Message 7 sur 9
4 110 Visites

 


 

Bonjour,

 

Je viens simplement compléter la solution de Maxime qui est clairement la plus performante.

 

Si toutefois vous avez toujours un peu de mal avec les FGV, vous pouvez aussi créer des références de contrôle (comme le son ou le bouton stop), et passer leur valeur dans le sous-VI. L'implémentation est un peu plus facile qu'une FGV à partir de votre code. J'ai joint un exemple (LV 8.6, à tout hasard, car vous n'avez pas spécifié votre version).

 

Cordialement,

 


 

Je dirai que ta solution Eric est plus efficace que la mienne dans le cas présent, et je la conseille. Smiley tirant la langue

 

Aussi, si vous aviez plusieurs éléments qui devaient écrire / lire sur la même variable je vous inviterai à utiliser les FGVs.

 

Cordialement,

Da Helmut
Voir le profil de Maxime M. sur LinkedIn - View Maxime M.'s profile on LinkedIn
0 Compliments
Message 8 sur 9
4 107 Visites

Merci a vous deux, je viens de reussir a faire ce que je voulais, j'ai appris le fonctionnement des variables fonctionnelles vraiment merci beaucoup.

0 Compliments
Message 9 sur 9
4 084 Visites