05-03-2011 05:22 PM
Bonjour,
Etant initié et utilisateur de Labview, j'ai récemment écri un VI réalisant une mesure de fréquence. Je dispose d'un module d'acquisition USB 6008 dont j'utilise une entrée analogique.
Mon VI est basé sur une machine d'états dont les transitions sont assurées par comparaison de la tension acquise avec des seuils haut et bas de tension. Je démarre ensuite des compteurs et en déduis la fréquence.
J'ai développé mon VI avec un bouton de commande pour vérifier (à vitesse très réduite) que j'avais des transitions correctes et un calcul de période (entre 2 fronts montants) convenable. Le principe semble donc correct.
J'ai eu la surprise de constater ensuite en reliant à un GBF d'observer une limitation en fréquence à 20 Hz !!
La fréquence d'échantillonage maximum est de 10kS/sec par canal donc normalement il y a de quoi faire, donc j'en déduis que soit l'acquisition est mal réalisée, soit le VI ralentit l'exécution des calculs.
Comment peut-on vérifier si les temps d'exécution des VIs sont compatibes avec l'aplication que l'on souhaite réaliser ? (dans mon cas je voudrais mesurer au max 500 Hz j'ai donc une acquisition toutes les 1 ms).
J'ai mis mon VI en pièce jointe. C'ets celui avec la tension réglée à la main. Est-ce qu'il y a des éléments ralentissant dedans ? J'ai mis également pour info ma boucle d'acquisition.
Merci de votre aide,
Pierre
Pour info, j'utilise Labview 8.6
05-04-2011 12:48 AM - edited 05-04-2011 12:49 AM
Bonjour,
Votre problème vient du mode d'acquisition : votre tache fait l'acquisition d'une seule valeur (échantillon) à la fois.
Ce qui vous limite alors, c'est la vitesse de votre cpu : la boucle while (d'ailleurs le wait 0ms est inutile) tourne a vitesse maximale, mais non cadencée ! Votre calcul est donc complètement faux.
Pour résoudre ceci, il faut acquérir N échantillons, et faire un traitement sur le tableau de valeurs pour en déduire la fréquence directement (il y a des vi's déjà créés pour cela)
En espérant que cela vous aide,
P.S. vous avez posté sur le forum anglais, la prochaine fois, faites le dans la communauté française, vous aurez une réponse plus rapidement.