Durch die FGVs habe ich begriffen, wie gut sich Schieberegister als "lokale Variablen" eignen, wenn sie in einer While-Schleife verbaut sind, die genau 1 Mal durchläuft (was ja eigentlich wenig Sinn macht). Ihr habt mir hier etwas richtig wichtiges beigebracht. Ein ganz dickes Danke nochmal dafür!
Zwei Fragen hätte ich dazu an euch noch bitte.
Die erste Frage habe ich versucht in einem Bild zu verdeutlichen. Hab dazu ein kleines VI zu modelliert:
Das Haupt-VI soll einen Summanden einer Gesamtsumme aufaddieren. Diese Gesamtsumme wird in einem SR in einem SubVI gespeichert und der Summand auch dort aufaddiert. Nun bieten sich 2 Möglichkeiten, beide funktionieren. Der Übergabewert, also der Summand, kann sich innerhalb der Schleife befinden oder außerhalb und über einen Tunnel in die Schleife hineingegeben werden. Mach das irgendeinen Unterschied? In meinem eigentlichen Projekt geht es da um einige Übergabewerte, die entweder innerhalb der Schleifen oder außerhalb sein können. Wird durch den Tunnel eine weitere Kopie der Variable angelegt? Vor allem was die Performance angeht, wollte ich euch nach den Unterschieden fragen, aber auch allgemein.
Meine zweite Frage wäre:
Wenn ich das VI erneut starte, sind immernoch die Werte, in diesem Fall die Gesamtsumme, vom letzten Start im Schieberegister des SubVIs gespeichert. Ich möchte aber jedes Mal wieder bei 0 beginnen und in manchen Fällen wäre auch ein spezieller Startwert nötig. Gibt es eine elegante Möglichkeit, Schieberegister oder SubVIs zu initialisieren? Oder muss man sich hier irgendwie mit einer Abfrage verkünsteln, ob die SubVI zum ersten Mal aufgerufen wird? Wie geht ihr hier vor? Das müsste ja eine eher alltägliche Angelegenheit sein. Anzeige-/Bedienelemente lassen sich ja ganz simpel initialisieren: lokale Variable im Schreibmodus zu Beginn des Programms mit einer Konstante versehen -fertig. Wenn ich aber links der Schleife links an das Schieberegister eine Konstante hänge, wird ja bei jedem Aufruf auf den Initialisierungswert zurückgesetzt.... Nur ungerne würde ich das Schieberegister aus dem SubVI herausnehmen und in die äußere Schleife der des Haupt-VIs versetzen...