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 

Umgang mit großer Datenmenge / out of memory



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!

09.11.2010, 00:22 (Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2011 23:08 von riske.)
Beitrag #1

riske Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: Sep 2010

9.0 und 8.6.1
2010
en


Deutschland
Umgang mit großer Datenmenge / out of memory
Hallo,

Ich möchte mit meinem A/D-Wandler mehrere Minuten lang mit 20kHz ein Signal aufnehmen. Die bisherige Grenze liegt bei 25min (=30Mio Single Precision Werte). Darüber wird gemeldet, dass der Speicher voll ist. Das "Profile Performance and Memory"-Tool meint, dass das VI 700 MB verschlingt nach 25min messen und hinterher auswerten... was mir aber irgendwie ein Rätsel ist... ich hab mit der Hälfte gerechnet 0_o

Das was meiner Meinung nach am meisten Speicher frisst, wird in den Bildern illustriert. Hier würde ich gerne mal wissen, ob ich das mit dem Frequenz-Filter (im Auswerten-Event) und dem Betrag bilden (im SubVI) richtig gelöst habe. Labview konnte beide Aktion zunächst nicht ausführen, als ich das gesamte Array angebunden habe, da anscheinend das Array einfach zu groß war (schon nach 15min Messzeit = 18Mio Werte). Deshalb hab ich es in einzelne Subarrays zerlegt.

Ciao!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.11.2010, 08:20
Beitrag #2

Andora Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: Jul 2008

2009
2001
de

81539
Deutschland
Umgang mit großer Datenmenge / out of memory
Hallo Riske,

in so einem Fall speichere ich die Daten in einer Speicherdatei laufend und nach der Messung hole ich sie wieder zur Auswertung. So bleibt mir der Arbeitsspeicher frei und sind mir die Daten gesichert im Falle eines Messausfalles.

Gruß,
Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2010, 08:27
Beitrag #3

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Umgang mit großer Datenmenge / out of memory
Erstens:
Andora hat recht!

Zweitens und Offtopic2:
Eine Schleife in einer Eventstruktur zu platzieren ist ein absolutes No-No! Da kannst du dir die Event-Struktur auch sparen, du kannst deine Schleife damit ja nicht mal mehr anhalten...

Gruß
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2010, 11:15 (Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2011 23:10 von riske.)
Beitrag #4

riske Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: Sep 2010

9.0 und 8.6.1
2010
en


Deutschland
Umgang mit großer Datenmenge / out of memory
Heyho,

ich sollte das dann sicherlich mit dem "Write To Binary File"-VI machen oder?
Gibt es da auch keine Probleme, dass die Festplatte evtl. nicht hinterherkommt mit dem Schreiben oder Daten verloren gehen? Wenn ich das richtig sehe, legt das GetStat-VI das Array an. In dem Array befinden sich dann mehrere Millionen Werte, die alle Null sind. Und mit der Zeit wird dann das Array mit 20kHz an Binär-Daten überschrieben und danach in dem ToEng-VI in Volts umgerechnet.
Wie soll ich aus dem Array fortlaufent die Daten in eine Text-Datei schreiben? Huh

Hier das Standard-VI des Herstellers inLv09_img2
Sonstige .vi  Xaincnbg.vi (Größe: 20,36 KB / Downloads: 263)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2010, 11:38
Beitrag #5

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Umgang mit großer Datenmenge / out of memory
Kann schon sein...aber das ist eher eine grundlegende Sache und hat nix mit der Platzierung von "langem" (unendlichem?!) Code in einem EVENT-Case zu tun...

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2010, 20:13
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Umgang mit großer Datenmenge / out of memory
' schrieb:ich sollte das dann sicherlich mit dem "Write To Binary File"-VI machen oder?
Nö, nicht unbedingt. Auch TDMS bietet sich an. Offtopic: Mit NI-Hardware als Datenerfassung kannst du inzwischen direkt aus dem DAQmx-Treiber in einen TDMS-File streamen. Direkter geht nicht.
Wir können das auch mal überschlagen: 20kHz bei Single Precision -> Binär also ca. 80kB/s auf die Festplatte streamen. Das ist jetzt nicht sooo viel. Leg als ASCII einen Faktor 2 drauf, dann sind wir bei 160kB/s, auch noch nicht die Welt.
' schrieb:Gibt es da auch keine Probleme, dass die Festplatte evtl. nicht hinterherkommt mit dem Schreiben oder Daten verloren gehen? Wenn ich das richtig sehe, legt das GetStat-VI das Array an. In dem Array befinden sich dann mehrere Millionen Werte, die alle Null sind. Und mit der Zeit wird dann das Array mit 20kHz an Binär-Daten überschrieben und danach in dem ToEng-VI in Volts umgerechnet.
Wie soll ich aus dem Array fortlaufent die Daten in eine Text-Datei schreiben? Huh
Welches GetStat-VI? Alles eine Frage der Programmierung, und natürlich, welche Möglichkeiten deine ausgefallene DAQ-Hardware liefert.

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
Anzeige
10.11.2010, 10:13 (Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2010 15:45 von Lucki.)
Beitrag #7

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Umgang mit großer Datenmenge / out of memory
Eine Möglichkeit, die Aufzweichnungskapazität um den Faktor 3 zu erhöhen, wäre, direkt die 16Bit Rohdaten vom ADC zu speichern, anstatt das Single-Format zu verwenden

Edit wegen Hinweis Unicorn: Single = 4 Bit, also nur Faktor 2 und nicht Faktor 3
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.11.2010, 14:03
Beitrag #8

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
Umgang mit großer Datenmenge / out of memory
Single -> I16 Kommt da nicht nur ein Faktor 2 zusammen? Wink

Um große Datenmengen im Speicher zu haben biete sich ein Array von Clustern von kleineren Datenarrays an. Durch den Cluster braucht LV keinen zusammenhängenden Speicher mehr für das äußere Array.

Je nach Konfiguration benötigt LV nochmal den Speicher, wenn ein Array an ein SubVI gegeben wird.

Es ist wahrscheinlich besser ein VI mit einer Schleife mit Shift Register, in dem die Daten "seitenweise" gespeichert werden, zu haben und die Daten Seitenweise abzulegen und zu holen. Auf diese Weise kann ich problemlos 460 MB Daten im Speicher halten, was 96 Minuten Singleformat Samples sind. Das ist jetzt aber auch nicht die endgültige Grenze.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.11.2010, 14:28 (Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2011 23:14 von riske.)
Beitrag #9

riske Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: Sep 2010

9.0 und 8.6.1
2010
en


Deutschland
Umgang mit großer Datenmenge / out of memory
Hey Leute... vielen Dank für die vielen Antworten!!!

@Jens:
Warum empfiehlst du TDMS? Was ist der Vorteil gegenüber "Write To Binary File"?
Ich meine das GetStat-VI, was sich in der einen Grafik in der While-Schleife befindet (mit "GetStatus" bezeichnet).
Hier noch mal extra inLv09_img2
Sonstige .vi  GETSTAT.VI (Größe: 30,4 KB / Downloads: 237)

Das VI legt halt mit einem mal die die Größe des Arrays fest, deshalb stelle ich mir das schwierig vor mit dem streamen der einzelnen Werte. Da kann man doch sicherlich nur am Ende der Messung das komplette Array reinschreiben oder?!

@Achim:
Ich werd das mit der While-Schleife noch mal überarbeiten... hab da eine IdeeSmile

@unicorn:
Die Cluster-Idee klingt auch interessant. Eine "Seite" würde ja dann zB 1min an SGL-Daten entsprechen. Aber wenn ich die Daten in einem SubVI auswerten will, muss ich das Cluster doch wieder in ein zusammenhängendes Array schieben. Und dann würde das Programm ja auch wieder abstürzen. Oder seh ich das falsch?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.11.2010, 14:57
Beitrag #10

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Umgang mit großer Datenmenge / out of memory
Hmm
Du kriegst aber schon immer nur kleine Messpakete von deiner Karte zurück? Nicht die 60 min in einem Array aus dem GetStat-VI?!
Dann diese Pakete speichern, und nicht alles im RAM halten.
Und zwecks TDMS: Dann kannst du die Daten wesentlich einfacher wieder einlesen. z.B. in Excel oder Diadem direkt.

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Labview Memory Programmieren OenerSer 5 3.778 27.04.2021 13:05
Letzter Beitrag: GerdW
  Änderung von großen Cluster (Type Def.) führt zu out of Memory exeption spacz 8 6.571 28.10.2019 09:01
Letzter Beitrag: spacz
  Labview Memory Verdammniskeks 4 4.435 03.05.2019 22:52
Letzter Beitrag: Trinitatis
  Tools Profile | Buffer Allocation ? Suche Memory Leak gottfried 1 3.524 26.10.2016 08:26
Letzter Beitrag: Morpheus
  Größer, Kleiner UND Gleich jan_1 10 11.841 07.07.2015 13:57
Letzter Beitrag: Kiesch
  Handhabung großer Datenstreams Kiesch 4 5.170 09.06.2015 12:46
Letzter Beitrag: Kiesch

Gehe zu: