LabVIEWForum.de - TDMS schreiben viele Daten

LabVIEWForum.de

Normale Version: TDMS schreiben viele Daten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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....
Ö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.
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?
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??
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...
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.
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
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.
Seiten: 1 2
Referenz-URLs