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 

Große *.txt in *.tdms konvertieren -> hohe Speicherauslastung



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!

10.07.2012, 08:20
Beitrag #1

Thom.A.s Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Jul 2012

8.6
2008
DE



Große *.txt in *.tdms konvertieren -> hohe Speicherauslastung
Guten Morgen!

Erst einmal Gratulation zum Forum. Ich habe zwar seit 4 Jahren LabVIEW, bin aber noch blutiger Anfänger da ich es viel zu selten nutze. Hier im Forum finde ich dann sehr häufig Hilfe bei Fragestellungen.

Jetzt steh ich aber vor einem Problem, wo ich über die Suchfunktion hier nicht weiter komme:
Wir führen häufig Messungen durch, bei denen wir ca. 10 min lang Echtzeit-Schalldaten mit einer Abtastrate von 25.6 kHz aufnehmen. Das Problem ist, dass wir mit unserer Software die Daten nur als Textdatei speichern können. Die haben dann schnell mal eine Größe von 500 MB. Die Dateien kann ich dann mit Diadem nicht einlesen. Also habe ich mir gedacht, ich konvertiere die Daten mittels LabVIEW zu einer TDMS-Datei.

Zunächst hab ich es mit dem VI "Aus Tabellenkalkulationsdatei lesen" versucht. Dafür reichte der Speicher von LabVIEW aber nicht aus. Zurzeit lese ich die Daten Zeilenweise über eine Schleife aus der Textdatei mit dem VI "Aus Textdatei lesen" aus und speicher sie dann direkt in eine TDMS-Datei. Dabei steigt die Speicherauslastung allerdings enorm an. Irgendwann bei ca. 12.000.000 Zeilen gibt es dann die Fehlermeldung "-2500 ist bei TDMS: Schreiben in .vi aufgetreten". Im Taskmanager hat LabVIEW in diesem Moment eine Speicherauslastung von 1 GB.

Hat vielleicht einer eine Idee, was ich besser machen kann?


Angehängte Datei(en) Thumbnail(s)
       

8.6 .vi  Dateikonvertierung_Var1.vi (Größe: 13,63 KB / Downloads: 213)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.07.2012, 08:34
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Große *.txt in *.tdms konvertieren -> hohe Speicherauslastung
Hallo Thomas,

1) Du könntest deine Textzeile direkt in ein 1D-Array umwandeln, wenn du bei SpreadsheetstringToArray eine passende Konstante anschließt.
2) Das nachfolgende ArraySubset wird dann auch einfacher...
3) Alternativ mehrere Zeilen mit einmal lesen.
4) Wenn man eine Datei öffnet, steht die FilePos automatisch schon auf start. Man muss sie also nicht explizit setzen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2012, 08:43
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Große *.txt in *.tdms konvertieren -> hohe Speicherauslastung
Habe selbst keine Ahnung, aber warum benutzt du nicht einfach das VI zur Konvertierung in TMS/TDMS?
   
Damit man das VI testen kann, wäre es sinnvoll, wenn du 100 oder 1000 von den 12 Milionen Textzeilen noch posten würdest.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2012, 08:46 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2012 08:50 von jg.)
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Große *.txt in *.tdms konvertieren -> hohe Speicherauslastung

Akzeptierte Lösung

Hallo,

aus eigener Erfahrung: Die tdms-API von Lv86_img offenbart gerade, wenn man eine tdms-Datei Zeile für Zeile erstellt, ein Speicherleck.
Abhilfe:
1) Blockweise die Daten aus der txt-Datei lesen (s. Hinweis Gerd).
2) Durch Setzen einer tdms-Eigenschaft (s. Screenshot) kann man erreichen, dass die tdms-API erst einmal die Daten im Speicher sammelt und dann rausschreibt. Das verringert das Speicherleck der tdms-API.
   
Gruß, Jens


@Lucki: Das VI gibt es in LV8.6 noch nicht.

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
10.07.2012, 10:24
Beitrag #5

Thom.A.s Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Jul 2012

8.6
2008
DE



RE: Große *.txt in *.tdms konvertieren -> hohe Speicherauslastung
Hallo Leute,

vielen Dank für die schnellen Tipps.

Wenn ich jetzt 1000 Zeilen pro Schleife auslesen, bekomme ich ja ein 1D-Array. Die Daten pro Zeile aus dem Array kriege ich jetzt nicht mehr vernünftig getrennt.

Ich hab mal im Anhang die Messdatei mit weniger Zeilen eingefügt. Ab Zeile 26 sind die Messdaten eingetragen. Die Daten sind per Tabulator getrennt, wobei der erste Eintrag pro Zeile immer leer ist. In der Beispieldatei befindet sich nur ein Kanal, es können aber auch mehr sein.


Angehängte Datei(en)
8.6 .vi  Dateikonvertierung_Var2.vi (Größe: 12,19 KB / Downloads: 229)

0.0 .txt  Signale.txt (Größe: 186,85 KB / Downloads: 238)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2012, 10:35
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Große *.txt in *.tdms konvertieren -> hohe Speicherauslastung
(10.07.2012 10:24 )Thom.A.s schrieb:  Wenn ich jetzt 1000 Zeilen pro Schleife auslesen, bekomme ich ja ein 1D-Array. Die Daten pro Zeile aus dem Array kriege ich jetzt nicht mehr vernünftig getrennt.
Wo ist das Problem? Meinen Screenshot angeschaut? Einfach das 1D-String-Array in einen Tabellenstring wandeln!
Header im ersten Schleifendurchlauf entfernen, der Rest sind hoffentlich Messwert-Zeilen.

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
10.07.2012, 10:58
Beitrag #7

Thom.A.s Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Jul 2012

8.6
2008
DE



RE: Große *.txt in *.tdms konvertieren -> hohe Speicherauslastung
(10.07.2012 10:35 )jg schrieb:  
(10.07.2012 10:24 )Thom.A.s schrieb:  Wenn ich jetzt 1000 Zeilen pro Schleife auslesen, bekomme ich ja ein 1D-Array. Die Daten pro Zeile aus dem Array kriege ich jetzt nicht mehr vernünftig getrennt.
Wo ist das Problem? Meinen Screenshot angeschaut? Einfach das 1D-String-Array in einen Tabellenstring wandeln!
Header im ersten Schleifendurchlauf entfernen, der Rest sind hoffentlich Messwert-Zeilen.

Das Problem liegt eindeutig am User, der vor LabVIEW sitzt Wink Ich hab einfach zu wenig Erfahrung. Ich seh gerade, ich hatte in meinem letzten Beitrag das falsche VI hochgeladen. Ich häng nochmal mein aktuelles an (der Richtigkeit halber), versuch es aber jetzt nochmal selbst.

Danke und Gruß,

Thomas


Angehängte Datei(en)
8.6 .vi  Dateikonvertierung_v2.vi (Größe: 13,06 KB / Downloads: 254)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2012, 08:57
Beitrag #8

Thom.A.s Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Jul 2012

8.6
2008
DE



RE: Große *.txt in *.tdms konvertieren -> hohe Speicherauslastung
Guten Morgen,

das VI läuft jetzt und funktioniert prächtig. Vielen Dank für die guten Tipps!
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
  Speicherauslastung Windows Service kwakz 0 3.348 08.05.2017 07:08
Letzter Beitrag: kwakz
  TDMS formatieren und in Textdateien konvertieren pfutz 2 7.565 16.02.2010 19:49
Letzter Beitrag: pfutz
  TDMS in ASCII konvertieren CarpeDiem 1 4.863 10.11.2008 15:49
Letzter Beitrag: macces

Gehe zu: