23.07.2010, 12:50
(Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2010 12:51 von Matze.)
Beitrag #1
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden
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.
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.
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:
|
|
|
23.07.2010, 12:57
Beitrag #2
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden
Unter den VI-Properties unter Execution das VI auf Reentrant setzen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
23.07.2010, 13:03
(Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2010 13:07 von Matze.)
Beitrag #3
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden
Hui, das ist genial! Danke.
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.
|
|
|
23.07.2010, 13:19
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden
' 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
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
23.07.2010, 13:24
Beitrag #5
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden
Hm ok, danke.
Gibt es denn einen Grund für dieses Verhalten?
|
|
|
23.07.2010, 13:42
Beitrag #6
|
|
|
23.07.2010, 13:47
(Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2010 13:49 von dimitri84.)
Beitrag #7
|
dimitri84
Astronaut
Beiträge: 1.496
Registriert seit: Aug 2009
2020 Developer Suite
2009
DE_EN
53562
Deutschland
|
So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden
' 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 ...
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
|
|
|
23.07.2010, 13:53
Beitrag #8
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden
' 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.
|
|
|
23.07.2010, 13:59
Beitrag #9
|
|
|
23.07.2010, 14:10
|
IchSelbst
LVF-Guru
Beiträge: 3.696
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
So etwas wie eine FGV, nur an eine "Instanz" des SubVIs gebunden
' 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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
| |