LabVIEWForum.de - Messwerte in 3D-Array sichern?

LabVIEWForum.de

Normale Version: Messwerte in 3D-Array sichern?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich nehme bei einer Messung zwei verschiedenene Spannungswerte mit 15 KHz aus zwei Kanälen auf.
Die Messung dauert ca. 3 ms und soll nach einer Pause von ca. 1 ms wiederholt werden.
Der Start und Stop für die Einzelmessungen wird durch ein externes Signal (High & Low) später vorgegeben.
Mein Problem ist nun, ich bekomme zwar die Werte für die Einzelmessungen ausgegeben,
aber wenn die nächste Messung durchgeführt wird, sind die alten Werte weg.
Also wollte ich die Werte aus den Messungen (2D-Array) nacheinander in ein 3D-Array ablegen um die Werte gut unterscheiden zu können.
Allerdings bekomme ich das irgendwie nicht ganz hin. Und außerdem befürchte ich, wenn ich Schieberegister einsetze,
wird das Programm zu langsam.

Zum Testen hab ich zwei verschiedene Möglichkeiten mit denen ich rumprobiert habe.
Allerdings hab ich da noch ein paar Fragen dazu.
Bei dem ersten Bespiel habe ich mit Schieberegistern gearbeitet, aber irgendwie kommt es mir vor als wäre das zu langsam.
Da es aber kaum möglich ich ist 3 ms mit dem Button zu erzeugen, hätte ich erwartet das wesentlich mehr Werte ausgelesen werden.
Hab ich da irgendeinen Denkfehler?

Bei dem zweiten Bespiel habe ich die Schieberegister weggelassen, wodurch es mir wesentlich schneller erscheint.
Das komische ist aber, ich habe dort versucht das Signal mit 3 ms Dauer zu simulieren und die Messung läuft aber weiter,
bzw. habe ich zu viele Werte. Denn normalerweise sollten in den 3 ms ja nur 45 Messwerte pro Kanal anfallen. Oder?

Welche Variante ist denn nun die bessere, oder sind beide nich so ganz richtig und wie kann ich denn die Werte aller Messungen in der kurzen Zeit sichern?Denknach
Hier mal die beiden Versionen:

[attachment=18882]
[attachment=18883]
Lv85_img

Könnt ihr mir bitte helfen, vielen Dank schon mal im Voraus.



Gruß Marco
' schrieb:Mein Problem ist nun, ich bekomme zwar die Werte für die Einzelmessungen ausgegeben,
aber wenn die nächste Messung durchgeführt wird, sind die alten Werte weg.
Also wollte ich die Werte aus den Messungen (2D-Array) nacheinander in ein 3D-Array ablegen um die Werte gut unterscheiden zu können.
Allerdings bekomme ich das irgendwie nicht ganz hin. Und außerdem befürchte ich, wenn ich Schieberegister einsetze,
wird das Programm zu langsam.
Leider hatte ich keine Zeit mir deine VI's anzusehen, aber grundsätzlich ist der Verwenund von 3D Arrays nicht zu empfehlen. Ich selbst hatte es zu meinen LabVIEW Anfängen auch damit versucht. Mit dem Ergebnis das der RAM hochläuft bis LV abstürzt. Also besser 2D-Array, oder am besten 1D Arrays zur Datenablage verwenden. Wie die Daten abgelegt werden sollte im ersten Moment ja mal egal sein. Zur Darstellung wirst du dann vermutlich 2D Arrays benötigen.
Mach es doch so:
Datenaufnahme läuft (schreib daten in ein 1D Array) --> schiebe diese Daten in eine Queue
In einer zweiten Schleife kannst du die Daten aus der Queue auslesen und bspw. in einer temporären Datei ablegen.

--> dieses Prinzip = Producer-Consumer-Architektur
Such einfach mal hier im Forum oder auf ni.com danach.

Schieberegister sind im Übrigen immer gut und auch nicht langsam!

Gruß, abrissbirne
3D ist hier vollkommen überflüssig. Du erfasst über DAQ pro Schleifendurchlauf genau 2 Messwerte von 2 Kanälen. Die ganzen Arrayoperationen danach kannst du dir sparen. Nimm einfach das 1D-Array, wie du es von DAQ bekommst und hänge es an deine bereits erfassten Werte dran.
Oder noch besser: Erfasse nicht Einzelwerte sondern mehrere Werte pro Kanal (Samples pro Kanal). Und zwar so, dass die Schleife nur noch alle 200-1000ms durchläuft.
Weiterhin hast du eine Abtastrate von 15000 Hz eingestellt, willst aber nur 333 Hz Messdaten. Warum stellst dus also nicht gleicht so ein?
Wenn du Werte als Double erfasst werden sie nicht genauer, wenn du sie als Extended darstellts. Vergeudet nur Speicher und Rechenzeit für die Typumwandlung.
Und versuche ohne lokale Variablen und ohne Eigenschaftsknoten auszukommen. Es funktioniert!

Ansonten ist hier natürlich, wie von abrissbirne schon gesagt, die Verwendung der Producer-Consumer-Architektur angeraten.
Referenz-URLs