Discussions au sujet de NI LabVIEW

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

reinitialiser des valeurs entre chauqe boucle for

Résolu !
Accéder à la solution

 

bonjour, 

 

Je suis actuellement en stage et j'ai comme mission de créer des programmes avec Labview pour récuperer des données d'une pompe (température, pression, débit)

 

Sauf que je suis bloqué pour le programme de débit. Grâce à un DAQ, je récupère le signal d'un pulser et Je voudrais calculer le débit en instanné. 

 

Pour cela, j'ai créé une boucle for dans lequel il y a une boucle while qui me permet récuperer le nombre de pulse pendant deux secondes et de calculer mon débit. Une fois les deux secondes passées, la boucle while s'arrete puis se relance grace à la boucle for. Cependant mon nombre de pulse ne se réinitialise pas ce qui me fausse mon débit. Comment faire pour réinitialiser cette valeur entre chaque boucle for ? 

 

merdi d'avance pour votre aide.

0 Compliments
Message 1 sur 5
1 999 Visites

Pour réinitialiser un compteur tu n'as pas le choix de le redémarrer (de mémoire). Tu n'as pas inclus ton programme donc je ne peux que supposer que dans ta boucle while tu lis une valeur par itération pendant 2 secondes en utilisant l'assistant DAQ (que je n'utilise jamais car il n'y a pas assez de latitudes). Également tu ne spécifies pas le matériel utilisé.

 

Tu pourrais éliminer la boucle while et tout simplement lire un nombre fini d'échantillons (par exemple 200 données à Fs = 100Hz échantillonnera pendant 2 secondes). Ce serait la meilleure méthode.

Regarde l'exemple Counter-Count Edges (Finite Clock).vi [Fait une recherche dans le NI Example Finder, menu Help -> Find Examples ...]. Dans la boucle For il n'y aurait que la section acquisition (les vi Start, Read et Stop), les autres vi seraient avant et après la boucle For.

 

Une alternative, utilise un registre à décalage sur ta boucle For qui contient le compte de l'itération précédente et à la fin de l'acquisition soustrait ce compte du résultat obtenu. C'est moins intuitif mais ça fonctionne.

 

Ben64

0 Compliments
Message 2 sur 5
1 975 Visites

bonjour et merci de ta réponse,

 

Je suis debutant et je ne suis pas sur d'avoir tout compris. Cependant, la premiere méthode me parait impossible car dans mon cas, le débit doit varié très régulièrement, d'ou le fait d'avoir créer un programme qui récupère un nombre de pulses sur un temps donnée ( le nombre de pulses varie en fonction du débit)

 

Pour le matériel , j'utilise un DAQ avec la carte NI 9423 qui permet de compter des fronts montants (ou descendants). 

 

Je mets ci-joint mon VI

 

chugchug

0 Compliments
Message 3 sur 5
1 969 Visites
Solution
Accepté par l'auteur du sujet chugchug

Fait cette simple modification pour stopper le compteur lorsque le temps est écoulé.

 

Stop Counter Task.png

 

Ben64

Message 4 sur 5
1 912 Visites

ça fonctionne parfaitement, merci beaucoup pour votre aide!

 

chugchug

0 Compliments
Message 5 sur 5
1 899 Visites