Discussions au sujet de NI LabVIEW

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

Problème d'acquisition de données

Bonjour,

J’ai créé une application qui permet de récupérer des trames de données envoyées par un capteur à ligne laser (Scan Control Micro Epsilon) qui tourne afin de repérer la position d’une vis.

Pour cela je me suis en servi de Labview et j’ai utilisé le protocole de communication UDP (Il y avait aussi l’option du TCP mais qui est moins rapide).

Pour récupérer une trame de données on m’a demandé de réaliser un trigger pour connaitre l’angle d’enregistrement. J’ai utilisé le pin A+ d’une sortie émulation codeur du variateur qui est connectée au PC à travers une carte d’acquisition numérique pour déterminer le cadencement de l’enregistrement.

 

Ce programme est le suivant :

La tâche sert à récupérer le signal et créer un trigger avec les variables trigger et memo trigger qui composent un circuit logique pour enregistrer juste sur un front montant.

Pour acquérir le nombre de données désirées, on modifie les points du codeur avec le logiciel UNILINK. Le but étant de récupérer 45 valeurs en 180 degrés, j’ai modifié le nombre de points à 90/tour afin d’avoir 45 triggers en 180 degrés.

Dans la boucle while il y a le traitement de données qui converti la trame en décimal, la découpe et la passe en millimètres.

Le problème arrive lors de l’enregistrement. Le capteur est configuré pour envoyer de données à 500 Hz, mais à la place de récupérer 90 données, je récupère de l’ordre de 80 données. La vitesse du moteur qui fait tourner le capteur est définie à 910deg/s avec une accélération de 40 000deg/s^2 (Intervalle de mesure compris entre 0 et 0.2s)

Nous pensons que le problème vient du temps que met la conversion de la trame en décimal.

Avez-vous des idées à ce sujet avec le programme que vous pouvez voir ?

 

prog.png

 

prog1.png

 

Untitled.png

 

Merci par avance,

0 Compliments
Message 1 sur 15
4 547 Visites

Bonjour,

 

Pour commencer, est ce que le contenu de l'indicateur "trames1" est correct?

Paolo_P
Certified TestStand Architect
Certified LabVIEW Architect
National Instruments France

0 Compliments
Message 2 sur 15
4 521 Visites

Salut à deux,

je ne suis pas sûr de tout comprendre, mais je trouve le problème intéressant, alors je me permets de reformuler le problème avec mes mots.

Tu me corriges.

  • tu as un capteur laser qui mesure la position d’une vis (déplacement réel). Mesure en UDP
  • tu mesures la position angulaire (image rotation vis), via la sortie codeur du variateur.

 

Pour info encodeurs quadrature incrémentaux asymétriques ? Différentiel ? Encodeur absolu ? http://www.ni.com/tutorial/7109/fr/

tu as câblé uniquement une voie sur une entrée numerique pour faire un trigger?

 

Si je comprends bien, tu veux caractériser le déplacement réel (laser) en fonction du déplacement théorique (codeur). Calcul erreur de pas ? Pour cela il faut synchroniser les mesures laser et codeur, pour être sûr d’une acquisition « au même moment », donc synchrone. Je suis OK ?

 

Si je comprends ton idée tu veux utiliser le signal A (ou B) de la sortie émulation codeur du variateur, pour qu’une boucle logicielle Windows soit cadencée sur l’attente d’un front montant. A ce moment tu viens faire une lecture UDP.

 

Mais comment est synchronisée la mesure sur le laser, pour les positions d’angles particulières ? As-tu fait un déclenchement externe via des positions codeurs ? Le laser envoie juste des mesures à 500Hz ? Même si pas de déplacement du variateur ?

 

A suivre. Luc

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 3 sur 15
4 500 Visites

"Pour acquérir le nombre de données désirées, on modifie les points du codeur avec le logiciel UNILINK."

Personnellement je n’ai pas compris cette phrase. Si tu veux m'expliquer, SVP

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 4 sur 15
4 499 Visites

Cela veut dire que si on a un codeur avec 36000 points par tour on aurait 36000 acquisitions puisque l'acquisition attend un front montant du signal codeur (A+). Nous avons besoin d'enregistrer 180 par tour. C'est pour cela qu'avec le logiciel Unilink on peut modifier le nombre de points qu'on veut sur la sortie du variateur. (Sortie émulation codeur)

0 Compliments
Message 5 sur 15
4 490 Visites

Ce sont les deux zéros qui vous gênent? D'habitude nous n’avons pas ces zéros. Chaque donnée correspond à un point transmis par le capteur configuré au préalable avec le logiciel du fabricant.

0 Compliments
Message 6 sur 15
4 489 Visites

Oui il est correct

0 Compliments
Message 7 sur 15
4 486 Visites

Ce n'est pas un problème de traitement mais un problème d'acquisition.

La trame est correcte

0 Compliments
Message 8 sur 15
4 485 Visites

Merci pour votre réaction.

 

  • J'ai un scanner Laser qui permet de mesurer pour d'estimer la position et l'orientation d'un rivet ou vise.

 

  • Pour se faire le scanner est monté sur un moteur que je le fais tourner 180°.

 

  • L'idée est d'enregistrer les mesures faites à chaque 1°. Pour cela le codeur incrémental utilisé, envoie un signal numérique à chaque 1°.

 

  • L'acquisition se fait avec labview en UDP.

 

tu as câblé uniquement une voie sur une entrée numerique pour faire un trigger? OUI

 

Si je comprends ton idée tu veux utiliser le signal A (ou B) de la sortie émulation codeur du variateur, pour qu’une boucle logicielle Windows soit cadencée sur l’attente d’un front montant. A ce moment tu viens faire une lecture UDP. C'est bien ça

 

Mais comment est synchronisée la mesure sur le laser, pour les positions d’angles particulières ? As-tu fait un déclenchement externe via des positions codeurs ? Le laser envoie juste des mesures à 500Hz ? Même si pas de déplacement du variateur ?

 

Le laser envoie les mesures en permanence et quand j'ai un front montant codeur j'enregistre mes mesure

 

A suivre. Luc

0 Compliments
Message 9 sur 15
4 484 Visites

Le codeur est un Absolute multiturn SinCos Hiperface

0 Compliments
Message 10 sur 15
4 483 Visites