LabVIEWForum.de
Werte nacheinander in Array schreiben über ein Schieberegister - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Werte nacheinander in Array schreiben über ein Schieberegister (/Thread-Werte-nacheinander-in-Array-schreiben-ueber-ein-Schieberegister)



Werte nacheinander in Array schreiben über ein Schieberegister - BlackEagle - 13.12.2019 10:38

Guten Morgen LabviewForum,

ich möchte 4 Werte nacheinander in ein Array schreiben, um diese im späteren Verlauf weiter verarbeiten zu können.
Die Werte sind Mittelwerte, sodass ich mir das Array am ende wie folgt vorstelle:

1. Schleifendurchlauf: [0 0 0 x1]
2. Schleifendurchlauf: [0 0 x1 x2]
3. Schleifendurchlauf: [0 x1 x2 x3]
4. Schleifendurchlauf: [x1 x2 x3 x4]

Dabei ist x1 mein Mittelwert aus der ersten Messung, x2 aus der 2. usw.

Ich habe versucht die werte über ein Schieberegister in eine Array erstellen - Funktion zu schreiben.
Die Elapsed-Time Funktion dient dazu, die Schleife (und somit meinen Prozess) nach einer definierten Zeit zu stoppen.
Da ich zunächst nur einen Wert erhalten möchte, wie bei Schleifendurchlauf 1 hab ich die Iteration der Schleife innerhalb meiner Case Struktur auf 1 gesetzt.
Wenn der Prozess erneut gestartet wird, soll x1 um eine Stelle weiter im Array verschoben werden und x2 an der 1. Stelle stehen (siehe 2. Schleifendurchlauf).

Ich hoffe durch mein angehängtes VI könnt ihr mir etwas weiterhelfen.

Grüße
BlackEagle


RE: Werte nacheinander in Array schreiben über ein Schieberegister - BlackEagle - 13.12.2019 11:05

Ich habe die Lösung gefunden denke ich, aber ich kann es mir noch nicht ganz erklären.

Wenn ich statt einer Konstante ein Control in das Schieberegister auf der rechten Seite schreibe, macht er genau das was ich erreichen wollte.
Bei einer Konstante wurde bei Änderung des Konstanten-Wertes beim nächsten Durchlauf eine 0 in der Array Stelle [1] gesetzt.

Kann mir jemand erklären warum dies so ist?Blink

Weiterhin gibt es ein Problem, dass die Stelle [1]und [2] vom Array den selben Wert erhalten, während bei Stelle [0] und Stelle [3] der richtige Wert steht.

Grüße
BlackEagle


RE: Werte nacheinander in Array schreiben über ein Schieberegister - GerdW - 13.12.2019 11:56

Hallo BlackEagle,

die Option, ein Schieberegister nach unten aufzuziehen, ist zwar nett, aber nicht skalierbar: was passiert wenn du mal 5 oder vielleicht 1000 Werte speichern willst?

Zwei Ideen:
[attachment=60647]

Zitat:Bei einer Konstante wurde bei Änderung des Konstanten-Wertes beim nächsten Durchlauf eine 0 in der Array Stelle [1] gesetzt. Kann mir jemand erklären warum dies so ist?
Durch das Ändern der Konstante wurde das VI neu kompiliert. Damit wurden auch die im Schieberegister gespeicherten Werte auf Default, d.h. Null zurückgesetzt.

(Wozu überhaupt die While-Loop innerhalb einer Case-Struktur innerhalb einer äußeren While-Loop?)


RE: Werte nacheinander in Array schreiben über ein Schieberegister - jg - 13.12.2019 12:28

Oder du nimmst das fertige VI "Data Queue PtByPt.vi", der dort enthaltene Code entspricht dem Screenshot von GerdW.

Gruß, Jens


RE: Werte nacheinander in Array schreiben über ein Schieberegister - BlackEagle - 13.12.2019 13:30

Hallo Gerd,

dankeschön für Ihre Beispiele.

Da der Mittelwert nach 2 Minuten gebildet werden soll, möchte ich diesen Wert erst nach dieser Zeit in mein Array schreiben. Deswegen der Case. Aber eventuell ist das auch zu umständlich.
Ich erhalte nach einer Messung einen Mittelwert x1. Diese Messung wird mit beispielsweise vier chemischen Lösungen ausgeführt. Dementsprechend möchte ich die Werte aus meiner Messung nacheinander in ein Array schreiben, um diese später verarbeiten zu können.

Mein Ziel ist sozusagen nach vier Messungen:

[x1 x2 x3 x4] --> dabei ist x1: Wert für Chem. Lösung 1 x2: Wert für chem. Lösung 2 usw.

Wenn ich es mit Ihren Methoden mache und statt dem Zufallszahlen-Element ein Control nutze stehen die selben Werte an jeder Arraystelle.

Grüße
BlackEagle



(13.12.2019 12:28 )jg schrieb:  Oder du nimmst das fertige VI "Data Queue PtByPt.vi", der dort enthaltene Code entspricht dem Screenshot von GerdW.

Gruß, Jens

Hallo Jens,

Ich probiere es nun aus, tut mir leid habe es gerade erst gesehen.

Grüße BlackEagle


RE: Werte nacheinander in Array schreiben über ein Schieberegister - GerdW - 13.12.2019 13:40

Hallo BlackEagle,

Zitat:Deswegen der Case. Aber eventuell ist das auch zu umständlich.
Die Case-Struktur ist sinvoll bei deinen Requirements.
Aber die While-Loop darin ist "zu umständlich" im Sinne von "nicht nötig"…

Zitat:Mein Ziel ist sozusagen nach vier Messungen:
[x1 x2 x3 x4] --> dabei ist x1: Wert für Chem. Lösung 1 x2: Wert für chem. Lösung 2 usw.
Wenn ich es mit Ihren Methoden mache und statt dem Zufallszahlen-Element ein Control nutze stehen die selben Werte an jeder Arraystelle.
Wenn du nur zu bestimmten Zeitpunkten einen neuen Wert in das Array schreiben willst, benötigst du schon eine Case-Struktur:
Code:
IF ZEITPUNKT THEN
  neuen Wert ins Array eintragen
ENDIF

Momentan läuft deine Schleife so schnell, dass du nicht einmal siehst, wie der Wert aus dem Control die 4 Elemente im Array befüllt…

Zitat:mit Ihren Methoden
Hier im Forum darfst du übrigens duzen…