Discussions au sujet de NI LabVIEW

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

agilent u2356a et labview

Bonjour,

 

Je travaille actuellement sur un développement logiciel destiné à 6 bancs de tests utilisant chacun 2 centrales d’acquisition Agilent U2356A.

Je développe le logiciel via  LabVIEW. J’utilise donc les drivers Agilent associés aux centrales.

Le logiciel doit faire une acquisition de données, à la fréquence maximale possible, avec une précision maximale, sur les 64 entrées analogiques du premier connecteur de chaque centrale (2 par bancs).

D’après la documentation, la taille maximale du buffer est de 16384 points (paramètre « acquisition points ») et la fréquence d’acquisition maximale ("sampling rate") est de 500 kHz / 64 voies soit 7812 Hz environ.

Dans un premier temps, je fais une acquisition avec les paramètres précédents sur une seule centrale. J’utilise une boucle While pour venir lire les données de façon continue (Drivers « Wait for the current waveform acquisition to finish » et « Read AI waveform » dans la boucle) jusqu’à l’envoi d’une commande STOP.

Au début, tout fonctionne correctement, mais au bout de plusieurs minutes, la centrale ne renvoie plus de données. Je ne comprends pas d’où vient ce problème ; j’ai essayé de diminuer les paramètres fréquence d’acquisition et nombre de points, mais le problème finit toujours par apparaître, quelque soit la configuration de départ.

Il est possible que cela vienne d'un problème de buffer des centrales, mais je n'arrive pas à le faire apparaître. En fonction de la valeur des paramètres "Sampling rate" et "Acquisition points", l'erreur apparaît soit dans le driver Wait soit dans le driver Read.

 

 

Merci de votre aide,

 

Danaé 

Tout télécharger
0 Compliments
Message 1 sur 5
4 402 Visites

Bonjour,

 

J'ai étudier les spécificité de votre code et la spec technique de la centrale Agilent U2356A.

Je peux vous suggérer de faire, dans un premier temps, un test hardware pour isoler le problème.

 

Avez-vous possibilité de contrôler sur la centrale, d'une autre manière, l'envoie de données ?

 

Je ne comprends pas bien les erreurs dans les "driver Wait / Read" pouvez-vous m'expliquer ?

 

 

Merci de votre retour,

 

Alexis

0 Compliments
Message 2 sur 5
4 354 Visites

Re bonjour,

 

Je vous propose également d'utiliser l'exemple suivant "Agilent U2300 Series AI Continuous Acquisition.vi" disponible avec les drivers que vous devriez avoir.

Normalement cela correspond à votre programme. Si cet exemple fonctionne alors celà vient de votre code et non de la centrale.

 

Je vous laisse me répondre pour étudier votre requête.

 

Alexis

0 Compliments
Message 3 sur 5
4 343 Visites

Bonjour,

 

C'est effectivement l'exemple que j'ai utilisé pour faire mon acquisition. Cependant, il ne renvoie qu'une seule weveform, le VI s'arrête une fois que le nombre de points demandé est renvoyé par la centrale. Comme je souhaitais faire une acquisition en continue pendant plusieurs heures, j'ai ajouté une boucle While autour des drivers "Wait for continuous acquisition" *  and "Read AI Waveform" * sans rien modifier de cet exemple. 

Au bout d'un moment, (quelques minutes voir heures en fonction des paramètres "sample rate" et "acquisition points" entrés), la centrale cessait de renvoyer des données.

Après avoir été en contact avec National Instrument et le support technique Agilent, le logiciel NI I/O Trace (qui retrace toutes les commandes envoyées par labVIEW) nous a permi de détecter que le driver "Wait for continuous acquisition" * contenait une boucle While non cadencée ; ainsi, il demande en permanence à la centrale l'état de son buffer. Si le buffer est "FRAG", l'acquisition n'est pas terminée, on continu l'attente; si le buffer est "DATA", l'acquisition est terminée, les données peuvent être renvoyées.

La centrale doit donc envoyer ses réponses très rapidement avant d'être interrogée à nouveau etc... Or lorsque les 64 voies sont acquises, les données ne sont renvoyées que toutes les 1.2 secondes environ, il était donc inutile de questionner la centrale sur l'état de son buffer aussi fréquemment. 

En cadençant le "Wait" à 500 ms, l'acquisition continue fonctionne sans problème (tests sur 15 heures). Nous avons également sorti le traitement des données du driver "Read AI Waveform" * et nous l'avons transféré dans une autre boucle (en parallèle, structure multithread) afin de ne pas ralentir l'acquisition.

Le programme a l'air optimisé et fonctionne bien ; nous n'avons pas vraiment détecté le problème précis, peut-être qu'interroger trop souvent la centrale provoquait une saturation de son buffer...

 

Merci pour vos réponses,

 

Danaé

 

* Les drivers cités ici sont les drivers spécifiques aux centrales U2300 d'Agilent.

0 Compliments
Message 4 sur 5
4 337 Visites

Très bien.

 

Je pense qu'effectivement le support AGILENT est en mesure de vous donner les réponses relatives aux drivers les concernants car ce sont eux les concepteurs.

Peut-être qu'ils peuvent vous fournir un driver à proprié pour votre utilisation, sinon effectivement, ralentir le cadencement est une autre alternative.

 

Bonne continuation,

 

Alexis

0 Compliments
Message 5 sur 5
4 333 Visites