From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet de NI LabVIEW

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

Interaction entre plusieurs VIs

Résolu !
Accéder à la solution

Bonjour,

 

Je souhaite réaliser un asservissement en position angulaire d'un moteur pas à pas.

L'acquisition de la position se fait par un codeur et un module NI9401. L'angle est lu par un VI que j'ai repris d'un exemple de Labview. ( fichier joint Lecture codeur.vi)

Le moteur pas à pas est piloté par un contrôleur DRV8825 qui reçoit les instructions envoyées par Labview par l'intermédiaire d'un Arduino Uno. Je me suis inspiré de plusieurs exemples trouvés sur le net pour créer mon VI ainsi que mon code pour piloter l'arduino. (fichier joint Pilotage moteur VISA.vi)

Ces deux VIs fonctionnent exactement comme je le souhaite.

 

Maintenant, je suis bloqué à l'étape pour tout faire fonctionner ensemble.

J'ai commencé une ébauche de VI pour l'asservissement (fichier joint asservissement angulaire), mais l'interaction entre mes différents VIs ne semble pas fonctionner; mon VI d'asservissement ne reçoit pas l'angle du VI de lecture du codeur et le VI de pilotage du moteur ne semble pas réagir aux commandes du VI d'asservissement.

 

De ce que je comprends, le problème vient du fait que mes sous-VIs sont en train d’exécuter leurs boucles while et ne peuvent pas faire d'interactions dans ce laps de temps. Or, ces boucles doivent tourner en permanence pour que mon programme fonctionne...

 

Quelle serait la solution à appliquer pour faire fonctionner tout ça ? Faudrait-il que je change d'architecture pour mon projet ?

 

C'est mon premier projet sur Labview, j'apprends depuis ce que je trouve sur internet, mais sur cette question précise je bloque 😕

Merci d'avance pour votre aide.

Tout télécharger
0 Compliments
Message 1 sur 2
1 660 Visites
Solution
Accepté par l'auteur du sujet ASROM

J'ai trouvé une solution pour me passer des boucles while. Dans mon vi de pilotage moteur, j'ai supprimé la partie paramétrage VISA, je l'ai placé dans mon programme d'asservissement. J'ai remplacé mon VI d'acquisition codeur par un Assistant DAQ.

 

Je vais maintenant m'atteler à faire une régulation PID en bonne et due forme !

 

Si ça peut aider quelqu'un, j'ai mis mes fichiers à jour en pièce jointe de ce post.

Tout télécharger
0 Compliments
Message 2 sur 2
1 600 Visites