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 

Dieses Thema hat akzeptierte Lösungen:

Problem beim Streamen in TDMS Datei



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!

25.09.2011, 17:20
Beitrag #1

tobiasf5 Offline
LabVIEW-Tutor
*


Beiträge: 40
Registriert seit: Nov 2005

Aktuell 2009; 2012. 2013 steht in den Startlöchern
2005
DE_EN

30419
Deutschland
Problem beim Streamen in TDMS Datei
Hallo Leute,

ich benutze LabVIEW schon eine ganze Weile.
Eins ist mir nun etwas rätselhaft. Vielleicht kann einer von euch Licht ins Dunkel bringen.
Es geht um das Streamen von "Mess-"Daten in eine TDMS Datei.

Wenn ich fortlaufend in einen Kanal einer Gruppe schreibe wächst die TDMS-Datei "sehr" langsam an. Vor allem die *_index Datei bleibt sehr klein. Wenn ich nun eine weiteren Datensatz parallel in eine andere Gruppe / anderen Kanal schreibe wächst vor allem die *_index Datei fast in gleicher Geschwindigkeit mit. Ich habe eine Beispiel Datei erstellt und das mal ausprobiert. Wenn ich nur in einen Kanal streame wird die TDMS Datei einige hundert Kilobyte groß und die _index Datei knapp einen Kilobyte. Wenn ich nun wie im Bild noch einen Zeitkanal hinzunehme werden beide Dateien mehrere Megabyte groß.

Aufgefallen ist mir dieses Problem schon öfter. Bisher habe ich mir immer damit geholfen, dass ich die Daten in LV2-Variablen zwischengespeichert habe und nur sehr selten in der TDMS Datei abgelegt habe. Ich frage mich halt nur, ob es da nicht einen besseren Weg gibt. Zumal es bei der Variante mit dem Zwischenspeichern zu Datenverlust kommen kann.

Bin für eure Anregungen sehr Dankbar.
Gruß
Tobias


Angehängte Datei(en) Thumbnail(s)
   

Also ich würd das mit LabVIEW machen......
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.09.2011, 19:18
Beitrag #2

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
RE: Problem beim Streamen in TDMS Datei

Akzeptierte Lösung

Bei Einzelwerten tut sich die TDMS API schwer. Das NI TDMS per USI ist wohl eher auf Highspeed Streaming optimiert. Das Problem mit den großen Dateien und vorallem mit den großen Index Dateien kommt daher, daß am Anfang eines jeden TDMS Segment ein Segment Header mit ca. 50 Byte mit geschrieben werden muss (+ alle Header landen im _index).
D.h. wenn man Einzelwert schreibt bläht das die Datei ziemlich auf. Dein Usecase müsste da jeweils 2 Segmente pro Iteration anlegen (1 TS Zeit und 1 I32 Test). Anscheinend spart sich die API die Segmentheader, wenn nur ein Kanal geschrieben wird (da gibt's so ne Magic Number für die Segmentlänge die bedeuted, daß diese Segment das letzte/offene ist).

Als Abhilfe gibt es die Minimum TDMS buffersize mit von der TDMS API Werte zwischengepuffert werden und dann Blockweise geschreiben werden.

Alternativ könntest du auch die G based TDMS benutzen, die schreibt keinerlei tdms_index, hat aber in der Orginalversion kein internes Buffering mit drinnen, d.h. Einzelwerte haben immer den Segmetheader Overhead mit dran.

Bei beiden Schreibmöglichkeiten wird dir das TMDS Defrag die Daten + _index wieder schön eindampfen. Mlgw. wäre das für deinen Usecase das Einfachste.

Ich würde dir im allgemeinen die G TDMS empfehlen. Mit der NI USI basierten TDMS API habe ich schon Pferde kotzen sehen. (Die aktuelle USI die mit LV2011 ausgeliefert wird, ist wohl recht stabil, habe ich mir sagen lassen Wink )
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.09.2011, 07:49
Beitrag #3

tobiasf5 Offline
LabVIEW-Tutor
*


Beiträge: 40
Registriert seit: Nov 2005

Aktuell 2009; 2012. 2013 steht in den Startlöchern
2005
DE_EN

30419
Deutschland
RE: Problem beim Streamen in TDMS Datei
Das hilft mir sehr weiter.
Das TDMS Defrag nutzt mir auf jeden Fall schon sehr.
Die Nummer mit dem G TDMS werde ich mal ausprobieren.
Vielen Dank auf jeden Fall. Smile

Also ich würd das mit LabVIEW machen......
Webseite des Benutzers besuchen 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 mit TDMS und npTDMS Python Jarrao 1 4.166 28.09.2019 15:22
Letzter Beitrag: jg
  Zeitstempel für TDMS Datei Kahlua 4 5.980 04.12.2017 09:59
Letzter Beitrag: jg
  Zeit in Datei schreiben & Problem beim Aufruf der Datei KorsarDerWeide 5 8.156 22.05.2015 13:00
Letzter Beitrag: KorsarDerWeide
  Problem mit der "TDMS -write"-Funktion n4f3ts 1 4.657 26.03.2015 12:00
Letzter Beitrag: n4f3ts
  .tdms: mehrere Signale aus einer Datei lesen Kristin_611 4 7.118 03.02.2015 12:09
Letzter Beitrag: Kristin_611
Question NUR Eigenschaften einer TDMS Datei lesen Lucky 1 4.645 24.11.2014 10:12
Letzter Beitrag: macmarvin

Gehe zu: