LabVIEWForum.de - Speicherorganisation bei Labview

LabVIEWForum.de

Normale Version: Speicherorganisation bei Labview
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi ...

Ich bin gerade dabei eine Audio Mehrkanalsystem zu entwicklen d.h Mehrkanaldatenaufzeichnung und nachfolgende Signalverarbeitung.

Die Grundstruktur dich ich verwende ist eine Producer / Consumer Struktur ... meine Frage bezieht sich jetzt grundsätzlich auf die Speicherproblematik in solchen Strukturen da meine Anwendung echtzeitfähig sein soll.

Also Allgemein kann man ja sagen bekommt Labview vom Betriebsystem einen virtuellen Speicher zugeteilt ... ist dieser voll beginnt Labview auszulagern und endet daher meist in einem Absturz. O

Betrachtet man nun nur mal einzeln die Producerschleife d.h wo sich auch die DAQ befindet so wird ein Block an Daten in eine Queue geschrieben während dessen läuft jedoch die Datenaufnahme weiter d.h die Daten werden in einen Buffer der DAQ geschrieben.
Wenn die Daten jedoch jetzt z.b nicht vom Consumer abgeholt werden ... wird die Queue voll geschrieben ... was passiert mit dem Buffer der DAQ ... ? Bzw. wird der Buffer nicht so und so immer mehr vollgeschrieben ... ?

Gibts bzgl. dessen vl Literaturtips ? Ich bin in für jeden Ratschlag dankbar Wink

Dankeschön

lg Peter
Ich kenne mich da leider auch nicht aus, aber wenn es echtzeitfähig werden soll, wie wäre es dann mit "LabVIEW Realtime"? Unsure

Gruß Markus

' schrieb:... meine Frage bezieht sich jetzt grundsätzlich auf die Speicherproblematik in solchen Strukturen da meine Anwendung echtzeitfähig sein soll.
Hi Markus,

Jap wäre natürlich fein ;-) ... aber ich muss/soll das ganze in Labview 2010 realisieren ...

Danke

lg Peter
' schrieb:Also Allgemein kann man ja sagen bekommt Labview vom Betriebsystem einen virtuellen Speicher zugeteilt ... ist dieser voll beginnt Labview auszulagern und endet daher meist in einem Absturz.
Bist du sicher, dass LV auslagert und nicht das Betriebssystem?

LV hat nur einen einzigen linearen Speicherbereich. Den organisiert LV selbstverständlich selbst. Abstürze entstehen weniger wegen Anwenderfehlern, vielmehr glaube ich in deinem Falle an einen mangelhaften Speichermanager in LV.

Zitat:Betrachtet man nun nur mal einzeln die Producerschleife d.h wo sich auch die DAQ befindet so wird ein Block an Daten in eine Queue geschrieben während dessen läuft jedoch die Datenaufnahme weiter d.h die Daten werden in einen Buffer der DAQ geschrieben.
Ja.

Zitat:Wenn die Daten jedoch jetzt z.b nicht vom Consumer abgeholt werden ... wird die Queue voll geschrieben ... was passiert mit dem Buffer der DAQ ... ? Bzw. wird der Buffer nicht so und so immer mehr vollgeschrieben ... ?
Der Puffer im DAQ kann schon voll werden. Das kann aber - normalerweise - nicht zu einem Absturz, vielmehr nur zu Datenverlust führen. Das selbe gilt selbstverständlich auch für den Puffer der Queue - voll ja, abstürzen deswegen nicht.


Was du natürlich so wie so machen musst, ist eine Daumenpeilung, ob dir alle Puffer groß genug sind. Ich würde alle Puffer, also auch die der Queue, auf ein Maximum setzen. Wird das überschritten, müssen Daten überschrieben, also verloren gehen. Um letzterem vorzubeugen, muss man natürlich das Programm so schreiben, dass die Datenverarbeitung (also das Lesen aus den Puffern) schneller geht als das Daten-Zur-Verfügung stellen.
Referenz-URLs