LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Pilotage de servo-moteurs Thorlabs via interface LabVIEW maison

Bonjour,

Je pense effectivement que je risque de compliquer mon application pour pas grand chose en utilisant autre chose que les ActiveX.

 

Je profite de ce thread pour vous poser une autre question. Jai actuellement un petit soucis avec mon application. J'aimerais en effet réaliser une fonction d'initialisation de la position de mon servo-moteur qui partirait de sa position courante à la position zéro, puis de la position zéro à mi-course. J'ai donc pour cela utilisé une séquence empilée avec à l'étape 0 une méthode MoveHome puis à l'étape 1 une méthode MoveAbsoluteEx pour positionner mon servo-moteur à mi-course.

 

Lorsque j'exécute mon VI, mon servo-moteur retourne bien à zéro, mais il ne repart pas à mi-course.

 

J'ai donc procédé autrement en utilisant à la place de la méthode MoveHome (étape 0), la méthode MoveAbsoluteEx avec dAbsPosCh1 = 0, et là ça fonctionne bien. Mais ce qui me gêne avec cette méthode, c'est que je n'utilise pas la méthode MoveHome qui est censé justement réaliser cette séquence de mise à zéro (à moins que je n'ai pas saisi le but de cette méthode).

 

Une idée ?

0 Kudos
Message 11 of 18
(1,822 Views)

Bonjour,

 

Effectivement, la méthode MoveHome est plus qu’une simple fonction ramenant la platine à sa position 0 calculée. Elle permet de ramener la platine à une position 0 en tenant compte du hardware, c'est-à-dire du switch mécanique et de la valeur d’offset du 0 et ainsi d’obtenir une position de référence. 

 

Votre deuxième programmation ne permet pas, comme vous le pensiez, d’obtenir réellement une position de référence. Pour cela, il faut effectivement utiliser votre première programmation à savoir la méthode MoveHome puis la méthode MoveAbsoluteEx.

 

Si en l’état cela ne fonctionne pas, je pense que cela vient d’une erreur au niveau des paramètres de la méthode MoveHome.

 

En effet, celle-ci accepte en paramètre d’entrée un Booléen appelé bwait qui indique le mode de retour de la méthode. Lorsqu’il est réglé sur faux (F), la méthode retourne immédiatement après avoir lancé la séquence d’initialisation de la platine ; lorsqu’il est réglé sur vrai (T), la méthode retourne une fois la séquence terminée. Si la méthode MoveAbsoluteEx est appelée avant la fin de la séquence d’initialisation, elle ne s’exécute pas. Je vous conseille donc de passer ce paramètre sur vrai sur toutes les méthodes de déplacement.

 

Cependant, ce réglage implique un problème : en effet, tant que la platine est en mouvement, la suite du programme ne s’exécute pas et si vous désirez faire d’autres étapes en attendant, elles seront bloquées. Si cela est un problème, il existe une autre méthode qui consiste à utiliser des événements et en particulier celui appelé MoveComplete qui se déclenche lorsqu’une séquence de mouvement est terminée. Dans ce cas, il faut laisser le paramètre bwait sur faux et attendre que l’événement MoveComplete soit déclenché avant de passer à la prochaine méthode de déplacement. Pendant ce temps, le programme Labview continue de tourner.

 

Pour plus de détails au sujet de l’utilisation des événements, je vous engage à consulter notre guide APT et Labview disponible sur notre site web sur la page suivante : http://www.thorlabs.com/images/TabImages/GuideToLabVIEWandAPT.pdf au Chapitre 7.

 

Cordialement,

 

Le support technique. 

0 Kudos
Message 12 of 18
(1,812 Views)

Bonjour,

 

J'ai suivi votre conseil de passer le paramètres bwait à true. Malheureusement, lorsque je lance ma séquence d'initialisation, le servo-moteur exécute bien le MoveHome mais pas le MoveAbsoluteEx.

 

Voici des captures d'écran de mon application. Pouvez-vous me dire si vous voyez une erreur ?

 

Etape 0 :

e1.PNG

 

Etape 1 :

e2.PNG

 

L'étape 2 permet simplement d'afficher une pop-up signalant à l'utilisateur que la séquence d'intialisation s'est réalisée avec succés.

 

Je vous remercie.

Cordialement,

Che57

0 Kudos
Message 13 of 18
(1,805 Views)

Bonjour,

Je pense que cela vient d’un problème de câblage entre les méthodes. En effet, ici, les méthodes sont effectuées les une après les autres, en suivant le câblage. Dans votre programme, la méthode MoveAbsoluteEx n’est pas câblée.

 

Pour cela, il faudrait soit passer par une structure déroulée qui est plus explicite au niveau du câblage comme sur l’image ci-dessous :

 1.JPG

Soit passer par une variable locale de séquence (pour cela, il faut faire un clic droit sur le bord de la structure, et cliquer sur « Ajouter une variable locale de séquence). La variable doit être reliée à la sortie de la méthode MoveHome et à l’entrée de la méthode MoveAbsoluteEx comme sur les images ci-dessous. (A noter qu’il est également possible de créer d’abord une séquence déroulée et qu’en la transformant en séquence empilée via un clic droit, Labview créé seul les variables nécessaires)

 2.JPG

3.JPG

 

Cordialement,

 

Le support technique

0 Kudos
Message 14 of 18
(1,779 Views)

Bonjour,

 

J'avais le sentiment que le blox MoveAbsoluteEx n'était pas câblé. J'ai donc transformé ma séquence empilée en une séquence déroulée, et en séquence empilée avec des variables locales de séquence. Malgré ça le moteur ne se déplace pas à mi-course. Néanmoins, la troisième étape (pop-up indiquant que l'actionneur est à mi-course) s'affiche lorsque je teste si la position est zéro absolu.

 

Encore plus étrange, en supprimant la dernière étape de la pop-up et en exécutant mon VI, les deux méthodes se sont exécutées ! Mais en voulant lancer ma deuxième séquence, il n'y a plus que le MoveHome qui s'exécutait... Bref, il s'agit là d'un comportement aléatoire incompréhensible.

0 Kudos
Message 15 of 18
(1,774 Views)

Je voulais dire qu'en lançant une deuxième fois la séquence d'initialisation, cela ne fonctionnait plus. Je vais essayer avec un autre servo-moteur.

0 Kudos
Message 16 of 18
(1,764 Views)

Ne trouveant aucune solution à la première technique (MoveHome suivi d'un MoveAbsoluteEx), je vais me tourner vers la deuxième solution proposée en utilisant l'information HomeComplete.

 

J'ai suivi la documentation et lorsque la séquence MoveHome est achevée, j'obtiens bien une pop-up qui me le confirme. Je pense donc qu'il faut que j'utilise cette information pour lançer la méthode MoveAbsoluteEx. Je pensais récupérer une information de type booléen du VI Callback énevenement afin de lancer la méthode, mais je ne ne pas comment procéder.

0 Kudos
Message 17 of 18
(1,751 Views)

Bonjour,

 

Depuis l'autre post, j'en suis toujours au même point avec ma séquence !

 

J'ai donc utilisé un VI Callback d'événement, qui me retourne une popup lorsque la méthode MoveHome a été exécutée.

cdf.PNG

Serait-il possible de récupérer cette information, sous la forme d'un booléen par exemple, de façon à pouvoir lancer l'exécution d'une autre méthode, en l'occurence ici, un MoveAbsoluteEx ?

 

Merci de votre réponse.

Cordialement,

Che57

0 Kudos
Message 18 of 18
(1,713 Views)