04-25-2012 02:06 PM
Bonjour à tous,
Je cherche à relever la tension aux bornes d'un capteur en fonction de la position de celui-ci donc en fonction du nombre de pas du moteur qui le déplace.
Pour celà je cherche comment créer une boucle qui ce répète le même nombre de fois que le nombre d'impultions que reçoit l'entrée compteur de ma carte NI USB-6009.
Le problème c'est que lorsque j'utilise pour cela une boucle while, la mesure ce fait en continue même si je n'ai aucune impulsion sur mon compteur (que le moteur ne tourne pas).
Alors que je voudrais que la mesure ne se fasse que quand me moteur tourne et s'arrete lorsque qu'il s'arrete.
Je suis vraiment débutant avec LabView j'ai donc beaucoup de peine malgré plusieurs heures d'essai infructueux.
Ci-joint le .VI actuel.
Merci d'avance à tous pour votre temps et votre aide.
Cordialement,
Alpine13
04-26-2012 08:27 PM - edited 04-26-2012 08:30 PM
Bonjour Alpine 13,
Pour créer une boucle qui ce répète le même nombre de fois que le nombre d'impultions de compteur, il faut utiliser le boucle "for" qui prend les impulsion de votre compteur comme l'entrée.Je vous suggère de commencer avec un simple exemple. Regardez l'exemple suivant:
LabVIEW >> Help >> Find Examples >> Hardware Input and Output >> DAQmx >> Counter Measurements >> Count Digital Events >> Count Digital Events.vi
Vous pouvez modifier cet exemple, de façon suivant. Mettez un boucle "for" dans le boucle "while" et branchez le sortie "Data" dans le nombre d'itérations de votre boucle "for", de cette façon votre boucle "for" va executer le même nombre de fois que le nombre d'impultions de votre compteur. Aussi pour devenir plus à l'aise avec la programmation LabVIEW, je vous recommande les articles suivants:
Learn 10 Functions in NI-DAQmx and Handle 80 Percent of Your Data Acquisition Applications
Getting Started with NI-DAQmx: Main Page
Synchronize Encoder Counter Input and Analog Input
04-27-2012 08:54 AM
Bonjour,
J'avais déjà testé la boucle FOR mais les résultats n'étaient pas concluants, mais je n'avais pas pensé à mettre la boucle FOR dans la boucle WHILE en effet, je vais essayer cela et je vous tiens au courant.
Merci beaucoup pour votre aide précieuse.
Cordialement,
Alpine
04-27-2012 11:59 AM
J'ai installé la version française de Labview (en remplacement de la version anglaise) et ma carte NI USB-6009 ne marche plus, elle n'est plus détecté, même par Signal Express qui lui n'as pas changé. Je ne vois pas du tout d'ou peut venir le problème.
Merci d'avance pour votre aide.
Cordialement,
Alpine
04-27-2012 01:53 PM
Problème résolu. Cependant la boucle FOR dans la boucle While n'est pas une solution car supposons que le nombre d'impulsions s'arrete, la boucle FOR ce repete a l'infini avec la valeur du nombre de pas. Ce qui me donne au final plus de mesures que de pas.
04-27-2012 02:41 PM
04-30-2012 09:11 AM
Ton idée est bonne cependant ce qu'il me manque ce sont les solution techniques, pourrait tu m'indiquer quels "boites" utiliser pour réaliser ses fonctions ?
Merci d'avance.
Alpine
04-30-2012 10:25 AM
04-30-2012 11:05 AM
04-30-2012 01:10 PM
J'ai réussi a utiliser le shift register comme tu le conseil et ça marche parfaitement, cependant j'ai un soucis avec ma boucle FOR qui a une éxécution paticulièrement lente, aurait tu une idée ?