Werte Helfer,
ich komme nicht weiter :/ Ich bin dabei einen Datenlogger aufzubauen und kupfere zu Lernzwecken etwas das LV-Beispiel ab. Ich habe hier aber noch einen Loop zur Messwertbearbeitung (Umrechnung, Filterung etc.) zwischen den DAQ- und den Logging Loop geschoben, weshalb die Messwerte durch zwei Queues durchmüssen, bevor sie gespeichert werden.
Mein Problem besteht aktuell darin, dass mein TDMS-Write (scheinbar) nur sehr langsam arbeitet und oft nur die ersten Werte einer Messung speichert. Wenn ich mir die Anzahl der Elemente in den zwei Queues (vom Aquisition Loop zum Processing Loop und von jenem dann zum Logging Loop) während der Messung anschaue, dann füllt sich die zweite sehr rasch, als würde per TDMS gar nichts "abgeholt" bzw. dequeued werden.
Was mich hier irritiert ist, dass das nicht von der Samplingfrequenz der Datenerfassung abzuhängen scheint, da sich die Queue auch bei einer Messung pro Sekunde mit der selben Geschwindigkeit mit der der Loop zu laufen scheint füllt. Mein DAQmx Read wartet unendlich lang auf neue Werte; deshalb sollte doch auch immer nur etwas enqueued werden, wenn ein neuer Messwert zur verfügung steht?!
Desweiteren; wenn ich die Messung etwas länger laufen lasse (+10 Sekunden) kann ich das ganze Programm oft nicht mehr sauber schließen, weil die Loops (Processing und Logging) noch beschäftigt sind oder komplett hängen. Und wenn das zu oft der Fall ist, muss ich sogar LV komplett schließen, weil das ganze Program selbst nach Neustart kaum auf Befehle reagiert. Ich tippe auf irgendwelche Speicherprobleme.
Meine Fragen an euch:
1.) ist es hier sinnvoller die Daten Blockweise per TDMS zu speichern? Ich hatte gelesen, dass es wohl efizienter wäre wobei ich eigentlich dachte, dass TDMS genau für meine Anwendung gedacht ist (Streaming/Logging).
2.) Spricht etwas gegen die Architektur mit den zwei Queues? Ich möchte gerne die Umgerechneten Daten speichern und auch Anzeigen (per extra Notifier), weshalb meiner Meinung nach der Processing Loop vor der Anzeige bzw. dem Logging Loop durchlaufen werden muss.
Ich nutze LV 2015 Student 32bit auf einem Lenovo W530 mit i7 4x2,6 GHZ und 5400 RPM HDD
Darüber hinaus freue ich mich natürlich über jede Anregung zu meinem Entwurf! (Ich habe einen Ordner mit allen VIs angehängt - ich bin unfähig einen Projekt zu erstellen, das alles enthält
)
Ich hoffe meine Probleme sind trivial für euch - Besten Dank im Voraus und guten Rutsch euch allen!