Discussions au sujet de NI LabVIEW

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

Problème de cadencement boucle while

Résolu !
Accéder à la solution

Bonjour,

 

Alors voila mon problème :

 

Mon VI effectue une mesure de vitesse de rotation, par l’intermédiaire d’une carte NI6001 et d’une roue codeuse qui génère 1000impulsions/tour.

 

Comme la carte NI6001 ne peut pas mesurer directement une fréquence, le VI compte les fronts et calcule le temps entre 2 fronts. On peut donc en déduire la vitesse de rotation.

 Le VI fonctionne bien mais est limité par le cadencement de la boucle while à 1000Hz, alors que je ne lui impose rien. Comme ma roue codeuse génère 1000imp/tour, ma vitesse calculée sature à 1tour/sec (alors que je dois mesurer jusqu’à 50tour/sec).

 

Si ma boucle ne contient pas le VI DAQmx – Lire « Compteur DBL 1Échant », celle-ci est cadencée à la vitesse du processeur, mais avec ce VI, la boucle se cadence automatiquement à 1000Hz…

 

Quelqu’un aurait-il une solution pour contourner ce problème ?

 

PS:J ai Labview 2014sp1

 

Merci d'avance pour votre aide

0 Compliments
Message 1 sur 12
3 972 Visites

Bonjour,

 

Essaie d'ajouter le VI "DAQmx - cadencement (horloge d'échantillonnage)" avant le démarrage de la tâche et de câble une fréquence à l'entrée "vitesse".

 

Cordialement,

Alban RCENTUM ADENEO
Certified LabVIEW Developer

0 Compliments
Message 2 sur 12
3 943 Visites

Bonjour,

 

Merci beaucoup pour votre réponse, mais ça ne fonctionne pas avec une horloge d'échantillonnage, quelque soit son paramétrage 😞

C'est assez bizarre... d'autant plus que mon compteur de front ne semble pas rater d'impulsions, même si celles-ci sont à une fréquence >1000Hz: les fronts sont biens comptés mais la mesure du temps entre 2 fronts n'arrive pas à descendre en dessous d'une milliseconde...

 

0 Compliments
Message 3 sur 12
3 931 Visites

D'accord,

J'aimerais pouvoir tester un peu, pouvez-vous mettre également en pièce jointe le sous-vi manquant "Lissage par relaxation" pour que je puisse lancer votre VI depuis mon PC ?

 

Merci d'avance,

Cordialement,

 

Alban RCENTUM ADENEO
Certified LabVIEW Developer

0 Compliments
Message 4 sur 12
3 929 Visites

Avec plaisir (ci-joint).

 

Une précision de ma dernière réponse: le compteur ne rate pas de front, mais comme la boucle semble cadencée à une milliseconde, si j'ai une fréquence d’impulsions supérieure à 1000Hz et que je regarde en tableau de sortie, les fronts enregistrés, au lieu d'avoir 1,2,3,4... fronts, j'ai plutôt 1,3,5,9,...fronts

 

Merci encore pour votre aide !

0 Compliments
Message 5 sur 12
3 924 Visites

Si une vitesse moyennée sur un temps donné suffit, il suffit de déterminer la variation du compteur durant ce temps.

0 Compliments
Message 6 sur 12
3 916 Visites
Solution
Accepté par l'auteur du sujet GabN

Variante plus complète :

 

Est-il indispensable de déterminer la durée entre chaque front ? De toute manière, avec des vitesses de rotation élevées, la résolution de l'horloge du système d'exploitation pourrait devenir insuffisante.

 

Une vitesse moyenne sur un temps donné ne suffit-elle pas ? Dans ce cas, le temps entre deux lectures du compteur peut devenir plus long. Vous perdez certes le détail de chaque front mais le résultat (vitesse moyenne sur cette durée) est nettement plus précis; d'autant plus que le temps est long. Pour la meilleure précision de l'intervalle de lecture, une structure "Timed Loop" est recommandée.

Message 7 sur 12
3 907 Visites

Bonjour JB,

 

Merci pour votre aide

 

Vous avez raison, ça doit pouvoir fonctionner!

Je vais regarder pour utiliser une "timed loop" (boucle cadencée?), que je ne connais pas.

 

Je teste et vous tiens au courant

 

0 Compliments
Message 8 sur 12
3 904 Visites

D'autre part, dans le cas d'une mesure de vitesse, il serait bon de passer sur une structure de type Producteur/Consommateur afin de stabiliser ta mesure.

En effet, en restant sur une boucle simple, ta mesure va subir les aléas de windows, et de lag de ton pc.

D'où l'intérêt de la boucle productreur/consommateur, même si ton calcul prends plus de temps, ton acquisition restera sur le même rythme, évitant ainsi tout dépassement de buffer sur ton DAQ.


Cdt,
Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 9 sur 12
3 901 Visites

Bonjour,

 

@JB: Ça fonctionne! Merci de l'astuce! Je m'étais résolu à changer de roue codeuse pour qu'elle produise moins d'impulsions par tour, mais c'est bien plus astucieux de réaliser la même chose par Labview (avec une meilleure précision in fine)

@Mickael.C: Merci du rappel pour la structure, je vais intégrer ça

 

Une ébauche de VI ci-joint, probablement pas optimale du point de vue programmation, mais fonctionnelle

 

Merci à tous

0 Compliments
Message 10 sur 12
3 890 Visites