' schrieb:Dann nimm doch Schieberegister/Feedbacknodes![Smile Smile](images/smilies/smile.gif)
Wichtig: ein
uninitialisiertes Shift-Register
Such mal nach dem Schlagwort FGV (Funktionale globale Variable).
Gruß, Jens
Ja, Schieberegister würd ich verwenden um den letzten Zustand zu speichern...in einem Vi das nicht verlassen oder beendet wird. Aber ein SubVi wird ja beendet und dann sind die Werte die dort drin erzeugt worden sind (oder Flags die gesetzt worden sind) ja nicht mehr drin beim nächsten Aufruf.
Funktionale Globale Variable...da war doch mal was :-)
Ok, also das is einfach eine Schleife die kein Init-Wert hat und sich daher den Wert merkt. Aber das Vi muss ja noch im Speicher sein, sonst kann es sich ja nichts merken. Wie oder wo sehe ich das denn? Ich kenn nur...SubVi aufmachen...dort etwas abarbeiten...evtl. Ergebnis rausschreiben...übergeben...und zurück ins Main.vi. Ist das SubVi dann zur Laufzeit des Main.vi`s noch irgendwo geöffnet, nachdem man wieder aus dem SubVi zurückkommt? Denk ich jetzt mal nicht, oder?
Bitte Beitrag editieren, anstatt innerhalb von 6 Minuten 2 Stück zu verfassen...
Und zu deiner Vermutung: Genau da irrst du. Ein Schieberegister behält den letzten Wert, auch wenn das VI gerade nicht ausgeführt wird.
Hier ein sehr einfaches Bsp:
![Lv85_img Lv85_img](images/smilies/lvfsmilies/lv_icons/lv85_img.jpg)
[
attachment=32063]
[
attachment=32064]
Das ist eines der beliebtesten Konzepte in LabVIEW, vor allem da Schieberegister in LabVIEW extrem effizient ablaufen.
Gruß, Jens
Hallo McG,
Zitat:Ist das SubVi dann zur Laufzeit des Main.vi`s noch irgendwo geöffnet, nachdem man wieder aus dem SubVi zurückkommt?
Ein SubVI bleibt solange im Speicher (und damit seine lokalen Daten), wie die komplette Hierarchie, in die es eingebunden ist!
D.h. solange das MainVI im Speicher bleibt (weil es noch läuft), bleiben auch alle SubVIs im Speicher...