INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

TDMS kontinuierliche Datenspeicherung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

06.05.2013, 10:05
Beitrag #1

simbi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2011

11.0
2011
DE


Deutschland
TDMS kontinuierliche Datenspeicherung
Hallo Labviewfans,

meine Daten sollen kontinuierlich gespeichert werden, so dass man während einer Messung, die z.B. 2 Wochen dauern kann, schon die Daten abrufen kann, oder bei z.B. Stromausfall nicht alle Daten verloren gehen. Dies möchte ich gerne mit Hilfe von TDMS machen. Nun habe ich folgendes Problem meine Eingänge in das "TDMS schreiben VI" sind unterschiedlich je nach dem was der Benutzer ausgewählt hat.

Der Prüfstand besteht aus einer beliebigen Anzahl aus Prüflingen. Man kann selber entscheiden, was an welchem Prüfling gemessen werden soll.

Die Daten:
von Netzteilen (Strom, Spannung...) insgesamt 5 Messwerte (fester Wert)
von NI Modulen (Spannung Temp) Anzahl Messwerte variable je nach dem wie viele Messstellen montiert.

Nun gibt es drei Fälle:
nur NI-Daten (variable Anzahl Messstellen)
nur Netzteil-Daten (5 Werte)
oder NI und NT Daten (5 Werte+ variable Anzahl an Messstellen)

Mein Problem besteht nun die variable Anzahl an Daten zu bündeln (Merge Signals, build Array?) und dann richtig in die TDMS zu speichern.
Richtig soll heißen, dass je Prüfling eine Registerkarte und je Messstelle eine Spalte vorgesehen ist mit der dazugehörigen Bezeichnung.

im Anhang habe ich meine erstellten Vis hochgeladen.

Über eure Hilfe und ein paar Tipps von euch würde ich mich sehr freuen.

Viele Grüße Henning


Angehängte Datei(en)
11.0 .vi  Datenspeicherung.vi (Größe: 61,47 KB / Downloads: 379)

11.0 .vi  Infodaten zum Speichern.vi (Größe: 18,97 KB / Downloads: 239)

11.0 .ctl  cluster_ist_netzteil.ctl (Größe: 4,72 KB / Downloads: 174)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2013, 10:57
Beitrag #2

simbi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2011

11.0
2011
DE


Deutschland
RE: TDMS kontinuierliche Datenspeicherung
Mir ist gerade aufgefallen, dass der Button "Daten aufzeichnen" mit in die While schleife muss sonst funktioniert gar nichts. Das hat aber nichts mit dem eigentlichen Problem zu tun.

Viele Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2013, 20:27
Beitrag #3

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: TDMS kontinuierliche Datenspeicherung
Bei der Datenbereitstellung kannst du entweder jeden Kanal einzeln schreiben oder mehrere Kanäle mit einem 2D-Array von Daten bzw. 1D-Array von Waveforms. Sobald die zu schreibenden Daten unterschiedlicher Länge sind ist 2D-Array mit Daten nicht mehr geeignet.

Beim TDMS-Format gibt es noch einige Besonderheiten zu beachten. Aufgrund des Streaming-Charakters werden bei jedem Schreiben von Daten auch Teile von Headerdaten (Gruppen- und Kanalzuordnung) mit geschrieben. Das führt dazu, dass bei sehr vielen Schreibvorgängen mit sehr wenigen Datenpunkten je Kanal der Overhead enorm werden kann. Das kann man im Nachgang dann über "TDMS Defrag" wieder beheben.

Bei deinen VIs stellt du eigentlich immer weniger Daten bereit wie du Kanalnamen angibst. Bei den NT-Daten sinds 5 Kanalnamen aber nur 4 Datenpunkte. Die NI-Daten dann unterschiedlich viele Kanäle aber immer nur 1 Kanal mit mehreren Datenpunkten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.05.2013, 13:11
Beitrag #4

simbi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2011

11.0
2011
DE


Deutschland
RE: TDMS kontinuierliche Datenspeicherung
Hallo Holy,
danke für deine Antwort ich habe das Problem jetzt so gelöst, wie im angehängten VI zusehen.
Die Daten werden nun in die richtigen Spalten geschrieben.
Bei dem Beispiel stimmte die Anzahl der Namen und der Datenpunkte nicht habe ich auch gesehen, ich habe das in dem Beispiel auch erst einmal so gelassen ist.
Im späteren Programm ist die Anzahl der Namen und Datenpunkte automatisch generiert.

Ich habe nun ein Synchronisationsproblem die NI- Daten sind viel schneller.
Ich habe das Timing auf kontinuierlich eingestellt mit 1000 Sample und beim auslesen auf -1, dass heißt er liest alles was vorhanden ist aus.
Für meine Speicherung bedeutet das aber nun, das er von den NTs immer nur ein Datensatz bekommt und von den NI-Daten immer ganze Arrays in denen mal 10 oder 11 oder auch keine Daten drin sind.
Bei der Speicherung sieht das dann so aus, das z.B. 10 Werte von den NI-Daten gespeicherten werden und von den NTs nur einer der Rest wird mir nullen gefüllt.
Habt ihr eine Idee wie ich das am geschicktesten ändere?

Vielen Dank und viele Grüße

Henning


Angehängte Datei(en)
11.0 .vi  Datenspeicherung.vi (Größe: 79,37 KB / Downloads: 371)

11.0 .vi  Infodaten zum Speichern.vi (Größe: 19,28 KB / Downloads: 235)

11.0 .ctl  cluster_ist_netzteil.ctl (Größe: 4,72 KB / Downloads: 198)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.05.2013, 17:38
Beitrag #5

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: TDMS kontinuierliche Datenspeicherung
Für die speziellen VIs würde ich vorschlagen die Schreibvorgänge für die NI und die NT Daten zu trennen, d.h. einmal Schreiben mit allen NT Daten und einmal Schreiben mit allen NI Daten. Je nach Datenpaket wird dann entweder einer der beiden Cases oder beide ausgeführt.
Da du aber Langzeitaufzeichnungen machen möchtest würde ich an deiner Stelle die Speicherstrategie im Allgemeinen aber nochmal überdenken. Über eine gewisse Zeit Daten zu sammeln und im Block zu schreiben ist hier immer sinnvoll. Um der Anforderung "Kein Datenverlust" gerecht zu werden sollte die Zeit dann natürlich nicht zu lang sein. Weiterhin würde mir in den Daten noch eine Zeitinformation fehlen. Entweder die Datenerfassung ist äquidistant dann eignen sich Waveforms oder sonst kann man für Kanäle die immer zum selben Zeitpunkt erfasst werden einen gemeinsamen Zeitkanal hinzufügen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.05.2013, 14:18
Beitrag #6

simbi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2011

11.0
2011
DE


Deutschland
RE: TDMS kontinuierliche Datenspeicherung
Ich habe es jetzt erst einmal so gelöst, dass immer ein Sample ausgelesen wird, sodass wenn bei einem Prüfling beides gemessen wird, jeweils nur ein Datensatz vorhanden ist.
Hierbei ist nur die Gefahr, dass ich einen Überlauf der Daten habe, das passiert aber erst, wenn man ca. 3000 Samples pro Sekunde erstellt.
Was für einen normalen Windows-Rechner sowieso nicht machbar ist oder?

An das Sammeln von Daten und blockweise Abspeichern habe ich auch schon gedacht.
Ich muss mal schauen ob ich noch Zeit finde das zu ändern, da ich meine Studienarbeit bald abschließen möchte. Smile

Ein Zeitstempel ist zur Zeit nur bei den NI-Daten vorhanden, für die NT-Daten denke ich mir noch etwas aus. Smile

Vielen Dank
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.05.2013, 21:41
Beitrag #7

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: TDMS kontinuierliche Datenspeicherung
Wenn du gepufferte Erfassung verwendest und nicht alles als Einzelpunkte verarbeitest kannst du 3000 Samples/Sekunde um ein vielfaches überschreiten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2013, 10:26
Beitrag #8

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
RE: TDMS kontinuierliche Datenspeicherung
Eine Sache noch zu NI TDMS und dauerhafter Datenaufzeichnung.
Beim häufigen Schreibaufrufen (mit wenigen Daten) wird normalerweise ein TDMS-Segment auf die Platte geschrieben. Das bedeutet das für z.b. 20 Byte Nutzdaten jeweils auch ein kleiner Header (40-50Byte afair) als Overhead geschrieben wird. Das bläht zum einen die .tdms Datei ziemlich auf, zum anderen legen die NI TDMS Funktionen eine Art Cache für die Header (.tdms_index) an. Diese Datei wächst dann auch mit jeder Schreiboperation mit an. Das beides wäre erstmal nur "Verschwendung" von (billigen) Plattenplatz, was es aber wirklich ärgerlich macht, ist dass die der Speicherverbrauch der Applikation etwa in der Größenordnung der tdms_index Datei mitwächst. Das sieht auf den ersten Blick dann wie nach einem Speicherleck aus, ist aber (broken) by Design. Wenn es blöd läuft, steht dann ein Prüfprogramm nach ein paar Tagen (üblicherweise kurz vor einem langen Wochenende) mit einer Fehlermeldung der VC++ Runtime.
Für einen solchen Anwendungsfall gibt es eine interne Bufferfunktion in der API ("NI_MinimumBufferSize"). Damit kann man den Speicherverbrauch zähmen. Allerdings landen die Daten dabei nicht gleich auf der Festplatte, bei einem Crash wären also einige Daten futsch (kaputte TDMS-Dateien sollten inzwischen aber nicht mehr vorkommen).
Anbei mal als Beispiel in deine Datenspeicherung integriert (aber nicht getestet).

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Problem bei der Datenspeicherung von InstruNet-Daten narrentanz 5 4.213 19.10.2011 11:44
Letzter Beitrag: narrentanz
  Datenspeicherung aus parallelen While-Schleifen malo 2 5.056 10.01.2011 13:40
Letzter Beitrag: malo
  Datenspeicherung mit 20 MB/s in eine Datenbank Mr B. 3 3.902 19.10.2010 11:40
Letzter Beitrag: BsaiboT
  Probleme mit Datenspeicherung pad 1 3.349 24.06.2010 07:42
Letzter Beitrag: pad
  Datenspeicherung Maximilian 1 3.460 30.03.2010 20:10
Letzter Beitrag: Maximilian
  Datenspeicherung Maximilian 26 17.676 12.11.2009 22:07
Letzter Beitrag: Maximilian

Gehe zu: