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 

Multifile mit 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!

13.06.2014, 16:03 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2014 16:06 von ZackMcKrackn.)
Beitrag #1

ZackMcKrackn Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: May 2014

2012
2013
EN



Multifile mit TDMS-Datei
Hallo,

folgendes Problem ist mir heute aufgefallen:

Die Eigentliche Aufgabe besteht darin 40 Kanäle (über DAQmx) mit 1khz (100samples per Block) über ca. 30min-60min als Waveform in eine TDMS-Datei zu Speichern. Dabei steigt natürlich die Größe der Datei ziemlich schnell an.
Um mit den aufgezeichneten Daten besser Arbeiten zu können wollte ich nun zB alle 10min eine neue Datei anlegen.
Das klappt eigentlich auch ganz gut.

Das Problem ist dabei, dass zwischen den einzelnen Dateien immer ein Schleifenzyklus, in dem Fall 100ms, angefallener Daten fehlen.

Der Programmablauf sieht so aus: Über einen Schalter wird die Aufzeichnung aktiviert. Das heisst eine Tdms-Datei wird erstellt (TDMS-open/create) und dann beschrieben (TDMS-write). Wenn der Schalter wieder ausgeschaltet wird, wird aufgehört zu schreiben und die TDMS-Datei geschlossen (TDMS-Close). Bei erneuter Betätigung des Schalters wird der Vorgang wiederholt. Wenn die Aufzeichnung nun länger als zB 10 min dauert wird die Tdms-Datei ebenfalls geschlossen (TDMS-close) und eine neue TDMS-Datei angelegt (TDMS-open/create) in welche dann weiter geschrieben wird. (Die TDMS-Daten beinhalten statt einem Index im Namen die Uhrzeit mit Sekunden.)
So fehlen aber wie gesagt die Daten die pro Schleifenzyklus anfallen.
Wenn ich die TDMS-Dateien nicht schließe (TDMS-close) bevor ich eine neue Datei erstelle (TDMS-create) dann fehlen keine daten.

Reichen die Informationen aus um eien Tipp zu geben wie man die "lücke" in der Datenaufzeichnung zwischen den Files schließt ohne auf TDMS-close zu verzichten?

Leider habe ich keinen Screenshot da sich alles auf Arbeit befindet und ich hoffe ich konnte es halbwegs Verständlich formulieren.

PS:
Ich habe bei DASYlab (den kleinen Bruder von Labview und auch von NI) geguckt ob das Problem dort auch auftritt und siehe da, gleiches Problem. Nur das man dort eigentlich nix Falsch machen oder nichts verändern kann weil ja alles vorgefertigt ist und man nur nen Haken setzten kann das man eine Multi-File erstellen will. Also jede n- Blöcke eine neue Datei mit laufender Nummer im Namen erstellen. Aber auch da fehlt genau ein Block Daten zwischen den Files. Und es gibt nicheinmal einen Hinweis darauf das es dieses Phänomen gibt.

Danke für die evtl. Hilfe Smile

sG F.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.06.2014, 16:50
Beitrag #2

ZackMcKrackn Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: May 2014

2012
2013
EN



RE: Multifile mit TDMS-Datei
Sorry ich habe mich geirrt. bei Dasylab hat man das Problem nicht....Blush
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.06.2014, 10:06
Beitrag #3

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
RE: Multifile mit TDMS-Datei
- Sind denn deine 10min-Dateien (deutlich) größer als ca. 180-200MB?
- Schreibst du die Datei in der gleichen Schleife wie die DAQmx Operationen?

Falls "Ja":
- TDMS Buffering pro Kanal aktivieren (suche einfach nach "NI_MinimumBufferSize").
- File IO in eigene Schleife, mit (begrenzter) Queue zwischen den Schleifen, auslagern.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.06.2014, 14:49
Beitrag #4

ZackMcKrackn Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: May 2014

2012
2013
EN



RE: Multifile mit TDMS-Datei
(16.06.2014 10:06 )macmarvin schrieb:  - Sind denn deine 10min-Dateien (deutlich) größer als ca. 180-200MB?
- Schreibst du die Datei in der gleichen Schleife wie die DAQmx Operationen?

Falls "Ja":
- TDMS Buffering pro Kanal aktivieren (suche einfach nach "NI_MinimumBufferSize").
- File IO in eigene Schleife, mit (begrenzter) Queue zwischen den Schleifen, auslagern.

Danke ersteinmal für die Antwort!

- Nein die Dateien sind ca. 180MB bei 10min und 1,2GB bei 1Std
- Ja wird alles in einer Schleife gemacht.

Also dein Vorschlag wäre dann die FileI/O parallel laufen zu lassen ?

Ich habe jetzt noch ein Screenshot der FileI/O gemacht. Dieses VI befindet sich in der "Hauptschleife". "WriteData" ist der Schalter zum aktivieren und an "Reopen" liegt die Flanke zum Datei neu anlegen nach einer bestimmten Zeit.

Danke

sG F.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.06.2014, 15:17
Beitrag #5

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Multifile mit TDMS-Datei
Ich sag nur RACE Condition...

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.06.2014, 18:37 (Dieser Beitrag wurde zuletzt bearbeitet: 16.06.2014 18:38 von ZackMcKrackn.)
Beitrag #6

ZackMcKrackn Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: May 2014

2012
2013
EN



RE: Multifile mit TDMS-Datei
(16.06.2014 17:51 )ZackMcKrackn schrieb:  [quote='jg' pid='167286' dateline='1402928234']
Ich sag nur RACE Condition...

Gruß, Jens

Und wo genau??? Erstellen/Schliessen? Eigentlich dachte ich, wäre dies ausgeschlossen, durch die boolschen Bedingungen die zu den "Ereignissen" führen. Oder wo liegt mein Denkfehler? Die Variablen dürften ja keine Probleme machen... Ich glaube Textbasiert würde ich wissen was du meinst Tongue

Gruß F.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.06.2014, 19:17 (Dieser Beitrag wurde zuletzt bearbeitet: 16.06.2014 19:39 von jg.)
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Multifile mit TDMS-Datei
Etwas vereinfacht deine Logik inkl. Auswertung:
   
Wenn ReOpen 1x True wird, schließt du den File. Damit ist die FileRefnum danach ungültig.
Beim nächsten Durchlauf, wenn ReOpen wieder False wird, öffnest du zwar einen neuen File, aber parallel dazu wird schon der Schreibvorgang abgearbeitet. Du hast nicht sichergestellt, dass die FileRefnum zu diesem Zeitpunkt gültig ist, also Race Condition + ein Datensatz ist nicht gespeichert...

Gruß, Jens

P.S.: Und es geistert öfter durchs Forum, was sollen die For Schleifen, die du nur 1x ausführst?

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.06.2014, 21:06 (Dieser Beitrag wurde zuletzt bearbeitet: 16.06.2014 21:10 von ZackMcKrackn.)
Beitrag #8

ZackMcKrackn Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: May 2014

2012
2013
EN



RE: Multifile mit TDMS-Datei
(16.06.2014 19:17 )jg schrieb:  Etwas vereinfacht deine Logik inkl. Auswertung:

Wenn ReOpen 1x True wird, schließt du den File. Damit ist die FileRefnum danach ungültig.
Beim nächsten Durchlauf, wenn ReOpen wieder False wird, öffnest du zwar einen neuen File, aber parallel dazu wird schon der Schreibvorgang abgearbeitet. Du hast nicht sichergestellt, dass die FileRefnum zu diesem Zeitpunkt gültig ist, also Race Condition + ein Datensatz ist nicht gespeichert...

Gruß, Jens

P.S.: Und es geistert öfter durchs Forum, was sollen die For Schleifen, die du nur 1x ausführst?

Mhm,ok. Aber wie soll ich sonst das Problem lösen. Ich muss ja die ein File schliessen und die andere neu anlegen. Da gibt es ja dann den Moment wo die FileRefnum ungültig ist.

Die "Race Condition" ist mir immernoch nicht klar.

Zur For-Schleife: Die soll halt nur einmal ausgeführt werden in der Schleife. Aber da ich eine Flankenauswertung mache ist das sicher unnötig. Musste halt schnell gehen...

Blush
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.06.2014, 08:59 (Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2014 09:45 von jg.)
Beitrag #9

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Multifile mit TDMS-Datei
Race Condition:
THINK Dataflow, wenn du in LabVIEW etwas parallel programmierst, dann kann es auch parallel abgearbeitet werden, bzw. LabVIEW wird die Abarbeitungsreihenfolge entscheiden. Im Fall "Öffnen des Files" darf LabVIEW also gleichzeitig die lokale Variable FileRefnum auslesen und deine Case-Struktur zum Öffnen abarbeiten. In der Regel wird mit 99,9% Wahrscheinlichkeit zuerst die lokale Variable ausgelesen, (edit: da das im Vergleich zur Case-Struktur weniger CPU Zeit kostet). Die enthält zu diesem Zeitpunkt noch die Referenz vom letzten Durchlauf, die jedoch durch das Schließen des Files ungültig ist.

Mögliche Lösung: Datenfluss beachten und die Case-Struktur mit dem File-Open VOR dem Schreiben ausführen!

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.06.2014, 09:42 (Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2014 09:44 von ZackMcKrackn.)
Beitrag #10

ZackMcKrackn Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: May 2014

2012
2013
EN



Shocked RE: Multifile mit TDMS-Datei
Ahhh. Eigentlich logisch Big Grin. Sorry, ich brauch manchmal etwas länger. Mir ist heute auch schon aufgefallen das die Variablen den Wert "zu spät" bekommen. Dann werde ich wohl noch Sequenzen benutzen.

Danke für die nette und gute Hilfe!!!!

sG F.
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
  Zeitstempel für TDMS Datei Kahlua 4 6.034 04.12.2017 09:59
Letzter Beitrag: jg
  .tdms: mehrere Signale aus einer Datei lesen Kristin_611 4 7.171 03.02.2015 12:09
Letzter Beitrag: Kristin_611
Question NUR Eigenschaften einer TDMS Datei lesen Lucky 1 4.671 24.11.2014 10:12
Letzter Beitrag: macmarvin
  TDMS Datei Kanal löschen? Lutzi 9 9.696 26.09.2013 10:05
Letzter Beitrag: BissI
  TDMS Datei mehr Werte für ein DUT GT123 5 6.486 09.11.2011 21:20
Letzter Beitrag: schrotti
  Problem beim Streamen in TDMS Datei tobiasf5 2 7.752 26.09.2011 07:49
Letzter Beitrag: tobiasf5

Gehe zu: