01-01-2019 07:01 PM - edited 01-01-2019 07:04 PM
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
01-09-2019 04:28 AM
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
01-16-2019 05:25 PM
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
01-23-2019 05:21 AM
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