le 10-09-2020 09:12 AM
Bonjour,
Je souhaite faire l'acquisition de mes données en fonction de la mesure du codeur.
Je m'explique : je dois enregistrer les données tous les 5 cm (mesure par codeur). J'essaye d'utiliser un registre à décalage mais les deux valaurs sont identiques.
Donc quand je les compares pour savoir si la nouvelles valeur est sup de 5 cm c'est faux du coups je rentre jamais dans ma boucle condition.
Je joins juste le VI, ou ce test doit se faire, si je dois envoyer le projet en entier merci de me le dire.
Merci par avance a tous !
Résolu ! Accéder à la solution.
le 10-12-2020 01:51 AM
Bonjour Loic,
Je vois que tu veux faire tourner ta boucle toutes les 100 ms. Ta valeur évolue-t-elle aussi vite ?
Autre remarque sur ta boucle condition. Si on appelle x0 la valeur qui vient de ton registre à décalage et x1 la valeur qui vient de ton VI, je vois :
test x0 > x1 :
A mon avis, il faut que :
Restant dispo 😉
le 10-16-2020 03:08 AM
Bonjour,
Désolé pour la réponse tardive, j'étais en déplacement.
Oui oui ma valeur évolue rapidement.
Ensuite, c'est un petit algo à méttre en place pour déterminner si j'avance ou recule.
Pour cela si ma valeur NEW est > ANC cela veut dire que j'avance et que pour enregistrer ma donnée, NEW doit être >= ANC + 0.05 cm
Par contre si NEW <ANC cela signifie que je recule et que pour enregistrer mes données, NEW doit être <= ANC - 0.05 cm.
Cet algo me parait juste, j'ai effectué plus de test et on va dire que ca marche de temps en temps. Pour l'instant ca fonctionne que dans un sens pas dans l'autre.
Je te joins mes avancées.
le 10-16-2020 07:31 AM
Attention au registre à décalage non initialisé, on ne sait pas trop ce qui se passera lors de la première itération.
Pour i=0 (index de la boucle While), tu devrait ignorer la valeur provenant du registre à décalage et utiliser la valeur lue comme référence, enregistrer cette valeur et la relier au registre à décalage. Ici on ne peut pas déterminer si on avance ou recule.
Pour les autres itérations compare la valeur lue à la référence, si l'écart absolu est >= 0.05 enregistre la valeur et relie cette valeur au registre à décalage, si le signe de l'écart (en valeur non absolue) est > 0 on avance, sinon on recule (ou on est immobile).
Voici un exemple:
Ben64
le 10-19-2020 06:54 AM
Bonjour,
J'effectue certainnement une grosse erreur mais je n'arrive pas à enregistrer mes valeurs.
En PJ, mon vi.
Merci,
le 10-19-2020 08:00 AM
Tu envois toujours la dernière valeur de position lue dans le registre à décalage, donc tu compare la valeur actuelle à la valeur précédente. À mois de parcourir plus de 5 cm entre deux itérations de ta boucle While tu n'enregistreras jamais de valeur. Dans le cas Faux de mon exemple c'est la valeur de "position ref" que tu dois retourner dans "ref out", dans ton code c'est "position" que tu envois dans le registre à décalage c'est le problème.
Ben64
le 10-19-2020 08:01 AM
Merci j'ai réussis !
Par contre c'est pas tout le temps 0.05 cm mais c'est pas grave.
Merci 🙂