09.11.2010, 08:20
Beitrag #2
|
|
|
09.11.2010, 08:27
Beitrag #3
|
Achim
*****
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 :
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)
|
|
|
09.11.2010, 11:15
(Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2011 23:10 von riske.)
Beitrag #4
|
riske
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?
Hier das Standard-VI des Herstellers in
Xaincnbg.vi (Größe: 20,36 KB / Downloads: 263)
|
|
|
09.11.2010, 11:38
Beitrag #5
|
|
|
09.11.2010, 20:13
Beitrag #6
|
jg
CLA & CLED
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?
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.
|
|
|
10.11.2010, 10:13
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2010 15:45 von Lucki.)
Beitrag #7
|
Lucki
Tech.Exp.2.Klasse
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
|
|
|
10.11.2010, 14:03
Beitrag #8
|
unicorn
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?
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.
|
|
|
11.11.2010, 14:28
(Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2011 23:14 von riske.)
Beitrag #9
|
riske
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 in
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 Idee
@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?
|
|
|
11.11.2010, 14:57
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Umgang mit großer Datenmenge / out of memory
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.
|
|
|
| |