Discussions au sujet des autres produits NI

cancel
Showing results for 
Search instead for 
Did you mean: 

Augmenter le temps d'enregistrement durant l'acquisition continue avec NI PXIe-5160

Bonjour à tous,

 

En effet, nous avons une carte oscilloscope NI PXIe 5160 et avec cette carte on peut faire l'acquisition continue à une vitesse de 625 Mech/s (en mode 8 bits) sans avoir l'erreur d’overwritten. 

 

J'ai utilisé l'exemple "Stream to disk" afin de réaliser l’acquisition en continue et faire l’enregistrement des données acquis, le problème est que la mémoire RAM (8 Giga de RAM) est consommée en quelques secondes (de 5 à 8 secondes) et ensuite le programme se bloque.. Est-ce normale ? avez-vous des solutions ? sachant que le principe de boucle producteur/consommateur est appliqué dans cet exemple et j'ai bien mis "False" pour désactiver le "waveform graph" et ne pas consommer la RAM.

Merci d'avance

 

Cordialement

Ali

0 Kudos
Message 1 of 4
(2,584 Views)

Bonjour Ali,

 

Peux tu partager le détail de l'erreur que tu rencontres ?

Quand tu expliques que le programme se bloque, sais-tu quelle partie est bloquante ?


BR

0 Kudos
Message 2 of 4
(2,525 Views)

Bonjour BR,

 

En effet, j'ai simplement repris l'exemple "Strem to disk" et après beaucoup de test sous Labview et surveillance de la mémoire RAM, j'ai compris que la RAM se remplissait vite parce que j'ai mis une taille élevés de blocs de la fonction "fetch" dans le paramètre "max points to fetch". J'ai modifié ce paramètre et le programme ne se bloque plus.


J'ai constaté également que simplifier la boucle fetch permet d’accélérer l'opération de récupération des données de la carte scope vers la RAM. Le soucis reste dans la vitesse de transfert vers le disque dur qui est un disque HDD.

 

Je te laisse ci-dessous le programme que j'ai simplifié. Avec ce programme et en réglant la vitesse d'échantillonnage à 600 MS/s (toujours en mode 8 bits) et le "max points to fetch" à 100 MS, j'arrive à lancer le programme entre 2 à 8 minutes ! 

Pour 2,2 mn par exemple les données acquis sont de 79 GB (avec 600 MS/s de sample rate) mais le fichier enregistré dans le disque a une taille d'environ 11 GB ce qui corresponds plutôt à 18 second ce qui est dû à la faible vitesse de transfert vers le disque (max de 100 MB:s).
Alors, ma question est la suivante : Est-ce les données enregistrées correspondent aux premiers 18 secondes des données acquises ? ou il y a des données perdues ?
As-tu une manière pour vérifier ceci?

 

Merci bien

Cordialement

Ali

0 Kudos
Message 3 of 4
(2,496 Views)

Re-bonjour,

 

J'ai en effet résolu le problème. 

Je perdais des données à cause de la structure False/True  dans la boucle consommateur. Il faut tout le temps relier l'élément "dequeue" à l'élément dédié à l'écriture des données dans le disque dure. 

Les données sont enregistré dans la queue et transféré à fur et à mesure vers le disque. J'arrive à faire entre 12 à 14 seconde d'enregistrement continue sans perte de données. J'impose le temps de récupération de données afin de ne pas saturer la RAM et bloquer le système.

 

Je mets le programme modifié ci-joint pour les personnes qui peuvent à moment donné rencontrer le même problème.  

 

Cordialement

Ali

 

     

0 Kudos
Message 4 of 4
(2,470 Views)