LabVIEWForum.de
TDMS schreiben viele Daten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: TDMS schreiben viele Daten (/Thread-TDMS-schreiben-viele-Daten)

Seiten: 1 2


RE: TDMS schreiben viele Daten - Sam789 - 05.07.2013 10:22

Hab jetz die Lösung gefunden...

wenn man das TDMS file immer wieder neu öffnet --> schreibts --> schließt, wird der Prozess immer langsamer...

Ich wollte zwar während des Aufzeichnens mit den DIAdem dll, Reports erstellen, aber das funktionert natürlich nur wenn die TDMS Datei nicht im moment beschrieben wird.

Jetz muss ich halt den kompromiss eingehn, und kann während des Aufzeichnens nicht über Labview gehn sondern extern das Programm DIAdem aufrufen...


Danke an alle....


RE: TDMS schreiben viele Daten - macmarvin - 05.07.2013 10:26

Öffnen und schließen der Datei macht dir hier wahrscheinlich Probleme. Da bringt dann auch die Buffersize nichts.
Besser die Datei nur selten schließen/öffnen, dann bringt der Buffer etwas.
Bei jedem Öffnen muss die tdms_index mitgeöffnet werden, weil da u.a. drin steht was für Kanäle es gibt, damit ggf. eine Fehlermeldung generiert wird, wenn man z.b. auf einen vorhandenen numerischen Kanal plötzlich Strings schreiben wollen würde.

"Einfaches" anhängen ohne Typprüfungen und tdms_index lesen, kann afaik die NI (USI) TDMS API nicht. Die VI based TDMS könnte es, wenn du ihr beibringst an eine vorhandene Datei TDMS-Segmente anzuhängen.


RE: TDMS schreiben viele Daten - GerdW - 05.07.2013 10:32

Hallo Simon,

ich halte es trotz deiner Lösung für sehr "unelegant", ständig nur Einzelwerte zu speichern. Warum sammelst du nicht erst ein paar Messwerte pro Kanal, bevor du sie in die TMDS-Datei schreibst?


RE: TDMS schreiben viele Daten - Sam789 - 05.07.2013 10:43

Dann müsste ich doch auch erst mal ein Array füllen und dann wieder leeren...
Is das nicht egal wie ich das mache, so oder so??


RE: TDMS schreiben viele Daten - GerdW - 05.07.2013 10:49

Hallo Simon,

Zitat:Dann müsste ich doch auch erst mal ein Array füllen und dann wieder leeren...
Siehe Hinweis oben mit der Queue, die kann sowas bequem und einfach puffern...

Zitat:Is das nicht egal wie ich das mache, so oder so??
Jein.
- Das Ergebnis wird wohl sehr ähnlich sein, aber es ist schon ein Unterschied, ob man eine (oder bei TDMS mindestens 2) Datei(en) alle 100ms öffnet, liest (TDMS-Index!), beschreibt und schließt oder ob man das nur alle 5 (oder auch 30) Sekunden macht.
- Evtl. wird die TDMS-Datei dadurch auch "aufgeräumter", je nachdem, wieviel Verwaltungsdaten zusätzlich zu deinen Messdaten dort noch mitgeschrieben werden...


RE: TDMS schreiben viele Daten - eb - 05.07.2013 11:15

Was sagst du hierzu?

Hab mir dein VI kurz mal vorgeknöpft.
[attachment=45268]


ps. da geht man kurz mal raus, während man die Anwort verfasst und da sind schon 5 andere Antworten, wenn man wiederkommt Smile dieses Forum ist cool.


RE: TDMS schreiben viele Daten - Sam789 - 05.07.2013 11:34

jetz würd mich dann nur noch interessieren was der unterschied beim synchron und asynchron schreiben ist.
hat das was mit dem gleichzeitigen schreiben und lesen zu tun???

danke


RE: TDMS schreiben viele Daten - eb - 05.07.2013 12:29

so wie ich das verstehe ist das folgendes:

synchron ist, wenn die Speicherung noch direkt in der Erfassungsschleife die Daten wegschreibt. Also Erfassung/Erzeugung und DateiIO in einer gemeinsamen Schleife.

asynchron ist, wenn die DateiIO in einer seperaten Schleife läuft. Sie ist dadurch entkoppelt und die Daten kommen über einen Puffer herein. Wenn also der Dateizugriff lahmt wegen irgendetwas, kann die Erfassungsschleife einfach weiterlaufen und schreibt den Puffer voller. Wenn dann der DateiIO wieder normal geht, kann die Speicherung den Puffer wieder leerlesen und alles wegschreiben. So hast du immer eine schöne Datenerfassung (flüssig und vllt hochfrequent) und der Zugriff auf die Dateien kann gebündelt und selten stattfinden, dann aber mit etwas mehr Daten auf einmal.