From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet des autres produits NI

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

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 Compliments
Message 1 sur 4
2 583 Visites

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 Compliments
Message 2 sur 4
2 524 Visites

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 Compliments
Message 3 sur 4
2 495 Visites

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 Compliments
Message 4 sur 4
2 469 Visites