03.03.2010, 09:52
Ja, ich weiss, der Titel sagt nicht viel aus (bin für bessere Vorschläge offen):
Ich, blutiger Anfänger, möchte gerne Daten von meiner Messkarte (AD-Wandler) speichern. Die Karte nimmt mit über ein längeren Zeitraum (1 Tag) mit 20Hz jeweils ein Spektrum mit 2500 Punkten auf. Dieses Array möchte ich gerne kontinuierlich speichern. In welcher Form, ist eigentlich egal. Ich dachte, an ein binären TDMS-Stream, der alle 500 MB eine neue Datei mit Zeitstempel erzeugt. Unter Umständen auch direkt gepackt...
Das Problem: Die Messwerterfassung läuft in einer Schleife und ich kann im Augenblick nur mit dem Datei-speichern-Express-VI umgehen...
1.Befindet sich das Express-VI in der Schleife, startet es sofort mit der Messung (gut) und nimmt die 1D-Arrays nach Schleifennummer auf (auch gut). Wenn ich dann den TDMS-Stream wieder lade (wieder mit einem dieser hier verpönten ExpressVIs), habe ich allerdings alle Spektren hintereinandergereiht, wie im Beispiel-VI (schlecht) oder (wie in meinem Messprogramm) das Express-VI erzeugt im Stream eigene Unterverzeichnisse pro Durchlauf (genauso schlecht). Woran das unterschiedliche Verhalten des Express-VI im Vergleich Messprogramm vs. Beispiel-VI liegt, kann ich nicht erklären. Im Messprogramm werden die Daten von einem Queue geliefert, vielleicht liegt es daran.
2. Befindet sich das Speichern-VI ausserhalb der Schleife, sorgt die Autoindizierung dafür, dass nur ein großes Array erzeugt wird, welches ich dann komplett laden kann (gut). Leider läuft der Speicher recht schnell über und das Programm stürzt ab.
Ich würde natürlich gerne, dass das VI die Messung sofort abspeichert, allerdings in einer Form, dass ich die Daten als 2D-Array wieder laden kann, nach Schleifeniterations-Durchläufen getrennt. Also mein Stream soll wie mit der Autoindizierung arbeiten, allerdings innerhalb der Schleife. Ist der TDMS-Weg der Richtige oder sollte ich gleich eine Datenbank-Lösung erlernen und einbinden?
Ich, blutiger Anfänger, möchte gerne Daten von meiner Messkarte (AD-Wandler) speichern. Die Karte nimmt mit über ein längeren Zeitraum (1 Tag) mit 20Hz jeweils ein Spektrum mit 2500 Punkten auf. Dieses Array möchte ich gerne kontinuierlich speichern. In welcher Form, ist eigentlich egal. Ich dachte, an ein binären TDMS-Stream, der alle 500 MB eine neue Datei mit Zeitstempel erzeugt. Unter Umständen auch direkt gepackt...
Das Problem: Die Messwerterfassung läuft in einer Schleife und ich kann im Augenblick nur mit dem Datei-speichern-Express-VI umgehen...
1.Befindet sich das Express-VI in der Schleife, startet es sofort mit der Messung (gut) und nimmt die 1D-Arrays nach Schleifennummer auf (auch gut). Wenn ich dann den TDMS-Stream wieder lade (wieder mit einem dieser hier verpönten ExpressVIs), habe ich allerdings alle Spektren hintereinandergereiht, wie im Beispiel-VI (schlecht) oder (wie in meinem Messprogramm) das Express-VI erzeugt im Stream eigene Unterverzeichnisse pro Durchlauf (genauso schlecht). Woran das unterschiedliche Verhalten des Express-VI im Vergleich Messprogramm vs. Beispiel-VI liegt, kann ich nicht erklären. Im Messprogramm werden die Daten von einem Queue geliefert, vielleicht liegt es daran.
2. Befindet sich das Speichern-VI ausserhalb der Schleife, sorgt die Autoindizierung dafür, dass nur ein großes Array erzeugt wird, welches ich dann komplett laden kann (gut). Leider läuft der Speicher recht schnell über und das Programm stürzt ab.
Ich würde natürlich gerne, dass das VI die Messung sofort abspeichert, allerdings in einer Form, dass ich die Daten als 2D-Array wieder laden kann, nach Schleifeniterations-Durchläufen getrennt. Also mein Stream soll wie mit der Autoindizierung arbeiten, allerdings innerhalb der Schleife. Ist der TDMS-Weg der Richtige oder sollte ich gleich eine Datenbank-Lösung erlernen und einbinden?