LabVIEWForum.de
So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden (/Thread-So-etwas-wie-eine-FGV-nur-an-eine-Instanz-des-SubVIs-gebunden)

Seiten: 1 2


So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - Matze - 23.07.2010 12:50

Hallo zusammen,

ich habe mir zu Debug-Zwecken ein VI geschrieben, das ich einfach in eine Schleife ziehe und mir die durchschnittliche Dauer eines Schleifendurchlaufs ausgibt. Ich hatte keine Lust, mir jedesmal mit den Timern und Schieberegistern etwas zu basteln.

An sich funktioniert das VI erstaunlich gut.Smile

Nur ist es so, dass ich FGVs verwenden muss, wenn ich ein Schieberegister vermeiden möchte und der Aufruf des VIs somit mehr als einfach ist: Nur in der Schleife platzieren - fertig.

[attachment=28139]

Schön wäre es, wenn ich dieses VI z.B. in eine weitere Schleife setzen kann, um die Zeit dort ausgeben zu lassen. Nur funktioniert das natürlich nicht, da die funktionale, globale Variable - wie der Name sagt - global ist und damit für alle VIs dieser Art gilt.

Gibt es so etwas wie FGVs, die nur innerhalb einer "Instanz" gültig sind, aber dennoch so global sind, dass beim nächsten Aufruf der Wert wieder zur Verfügung steht?

Hier noch das Debug-VI:

[attachment=28140]


So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - jg - 23.07.2010 12:57

Unter den VI-Properties unter Execution das VI auf Reentrant setzen.

Gruß, Jens


So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - Matze - 23.07.2010 13:03

Hui, das ist genial! Danke.Smile

Nachtrag: Ist es normal, dass ich das FrontPanel dieses VI dann nicht mehr bearbeiten kann? Ich muss dazu erst wieder diese Einstellung rückgängig machen.


So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - jg - 23.07.2010 13:19

' schrieb:Nachtrag: Ist es normal, dass ich das FrontPanel dieses VI dann nicht mehr bearbeiten kann?
Ja.
' schrieb:Ich muss dazu erst wieder diese Einstellung rückgängig machen.
Nein, musst du nicht. Short-Cut Strg-M hilft Abhilfe (im Menü unter Operate->Change to Run/Edit Mode).

Gruß, Jens


So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - Matze - 23.07.2010 13:24

Hm ok, danke.
Gibt es denn einen Grund für dieses Verhalten?


So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - Achim - 23.07.2010 13:42

Ich bin mir nicht sicher, ob das mit dem "FirstCall.vi" immer funktioniert...Dessen Reset erfolgt doch erst dann, wenn das umgebende VI aus dem RAM verschwindet, oder?


So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - dimitri84 - 23.07.2010 13:47

' schrieb:Ich bin mir nicht sicher, ob das mit dem "FirstCall.vi" immer funktioniert...Dessen Reset erfolgt doch erst dann, wenn das umgebende VI aus dem RAM verschwindet, oder?
Jo, ich wollt's erst selbst schreiben aber hab's mir dann doch verkniffen, weil ich jedes mal dieses VI verunglimpfe. First-Call gibt nur einmal ein True pro Applikationsstart mit dem Pfeil in der Menüleiste aus, nicht mehr. Aber, wenn er keinen "Idle-Mode" hat ist's so ok.

Einen First-Run-Flag baue ich mir deshalb immer selbst, wo ich jederzeit selbst resetten kann. Ist halt ein Eingang mehr im subVI ...


So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - Matze - 23.07.2010 13:53

' schrieb:Ist halt ein Eingang mehr im subVI ...
Und ein Schieberegister, damit der Wert im nächsten Durchlauf "false" ist.

Für Debugzwecke wollte ich jedoch ein VI, dass ich mal eben aufs Blockdiagramm ziehen kann ohne groß etwas zu verdrahten. Und dafür ist das ausreichend.


So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - dimitri84 - 23.07.2010 13:59

... jaja ist das ok. Wenn überhaupt, ist eh nur der erste Wert dann falsch. Deswegen hab ich's mir ja auch verkniffenSmile


So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden - IchSelbst - 23.07.2010 14:10

' schrieb:Gibt es denn einen Grund für dieses Verhalten?
Klar.

Reentrante SubVIs liegen so oft im Speicher, wie sie auf dem BD positioniert wurden. Hast du also 7 gleiche SubVIs platziert, gibt es das SubVI also 7 mal.

Du kannst jetzt alle diese 7 SubVIs während der Ausführung öffnen (FP anzeigen lassen) z.B. um Sonden zu setzen und Anzeigeelemente anzusehen. Jedes der 7 FP zeigt dann spezifische Daten an. Das gleichzeitige Anzeigen der 7 SubVIs geht aber logischerweise nur im sog. Ausführungsmodus. Nachdem das Programm beendet wurde, verbleiben die reentranten SubVIs im Ausführungsmode, weil man ja die Daten noch ansehen könnten möchte. Willst du das SubVI nun ändern, musst du in den Bearbeitungsmodus umschalten. Im Bearbeitungsmodus gibt es aber nur ein einziges SubVI - keine 7 mehr, da die 7 ja "die selben" sind.

Man kann jetzt natürlich Tricks machen: ein 8. SubVI in einen Deaktivierungsrahmen legen. Dieses SubVI läuft nämlich nicht und wird beim Anklicken also im Bearbeitungsmodus geöffnet. Jetzt könnte man da Änderungen machen, die dann zur Folge haben, dass die 7 anderen sich von selbst in den Bearbeitungsmodus schalten - dumm nur, dass LabVIEW (LV 85 SE) dabei abstürzt.