22.09.2006, 10:46
Beitrag #1
|
Myjestic
LVF-Neueinsteiger
Beiträge: 9
Registriert seit: Aug 2006
8.00
2004
kA
Deutschland
|
Werte aus Sub VI im Haupt VI anzeigen
Hallo,
Habe ein Sub VI gebaut, indem eine While Schleife abgearbeitet wird.
Diese Sub VI binde ich nun in mein Haupt VI ein.
Welche Möglichkeiten gibt es, dieses Sub VI zu beeinflussen. Mein Problem ist ja, dass die While Schleife im SubVI erst bis zur Abbruchbedingung durchgeführt wird, bevor etwas anderes geschehen kann.
Ich würde gerne aktuelle Werte aus diesem Sub VI ins Haupt VI übernehmen und auch z.B. von außen eine Stopanweisung schicken können.
Vielen Dank
Myjestic
|
|
|
22.09.2006, 10:57
Beitrag #2
|
|
|
22.09.2006, 11:06
Beitrag #3
|
A.Berndsen
LVF-Team
Beiträge: 2.437
Registriert seit: Feb 2005
8.2.1 - 2011
2004
DE
724xx
Deutschland
|
Werte aus Sub VI im Haupt VI anzeigen
Hallo!
Der Antwort von Achim füge ich noch die Referenzen hinzu!
Ist noch nicht allzulange her, da haben wir einen ähnliche Frage hier gehabt!
Such mal danach!
Gruß
Andreas
|
|
|
26.09.2006, 11:05
Beitrag #4
|
|
|
26.09.2006, 11:44
Beitrag #6
|
StefanHH
LVF-User
Beiträge: 35
Registriert seit: Aug 2006
7.0, 8.21, 8.5, 2013
2006
DE_EN
21220
Deutschland
|
Werte aus Sub VI im Haupt VI anzeigen
<div align="left">Hallo Myjestic,
ich habe Dir das Programm auf die Anwendung mit Referenzen abgeändert.
Ein weiterführendes Beispiel hatte ich zum Ende der letzten Woche gepostet.
--> http://www.LabVIEWforum.de/index.php?showtopic=3615
Vielleicht hilft es Dir ja weiter.
Schöne Grüße,
Stefan
MainVI.vi (Größe: 7,52 KB / Downloads: 1114)
SubVI.vi (Größe: 11,2 KB / Downloads: 981)
</div>
Unter Intuition versteht man die Fähigkeit gewisser Leute,
eine Lage in Sekundenschnelle falsch zu beurteilen.
-Friedrich Dürrenmatt-
|
|
|
26.09.2006, 11:47
Beitrag #7
|
Myjestic
LVF-Neueinsteiger
Beiträge: 9
Registriert seit: Aug 2006
8.00
2004
kA
Deutschland
|
Werte aus Sub VI im Haupt VI anzeigen
<div align="left">Mein Vorhaben ist folgendes. Ich habe einige Regelalgorithmen entwickelt, die ich jeweils in ein SubVI verpackt habe. Diese würden auch autonom laufen. (Diese Algorithmen direkt ins Hauptprogramm zu packen würde eine übles Durcheinander verursachen) Jetzt möchte ich ein Hauptprogramm erstellen, in dem einer der von mir erstellten Regelalgortihmen angewählt werden kann.
Die Werte des jeweiligen Reglers, sprich ISTwerte etc. möchte ich gerne in meinem MainVI angezeigt bekommen. Und durch ein Stopbutton soll der jeweilige Regelalgorithmus gestoppt werden. Das ist eingentlich schon alles.</div>
|
|
|
26.09.2006, 12:13
(Dieser Beitrag wurde zuletzt bearbeitet: 26.09.2006 12:24 von Achim.)
Beitrag #8
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
Werte aus Sub VI im Haupt VI anzeigen
@ Stefan:
Irgendwie hab ich's nicht geblickt! Was bringt die Verdrahtung ins SubVÌ? Wenn im SubVI die Schleife läuft, wird das HauptVI, welches das SubVI enthält, auf jeden Fall so lange angehalten, bis das SubVI beendet ist. D.h. es werden vom HauptVI keine Eingaben ins SubVI übernommen!
Kleiner Tip: Wenn du die Referenz des "stop from mainVI" mit gedrückter Strg-Taste vom Blockdiagramm des HauptVI aufs Frontpanel des SubIV ziehst, erhälst du eine "strict refnum" (sichtbar am Sternchen auf dem FP) und du kannst dir die "Variant to Data"-Wandlung sparen!
Gruss
Achim
EDIT: Schau mal das Beispiel an:
http://www.LabVIEWforum.de/index.p...ost&p=11922
So ne ähnliche State Machine könntest du auch aufbauen, und in nem State "regeln" könntest du die VIs immer wieder ablaufen lassen...dazu könntest du z.B. die While-Schleife im jeweiligen Regler-VI nur genau 1x pro "Durchgang" laufen lassen (ne F-Konstante an den "Continue if true"-Anschluss der Schleife), und Parameter, die du von Regelzyklus zu Regelzyklus in deinem VI benötigst über nicht initialisierte Schieberegister durchschleifen. Wenn von außen "Regelung aus" betätigt wird, springst du den Fall "regeln" einfach nicht mehr an.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
26.09.2006, 13:28
Beitrag #9
|
Myjestic
LVF-Neueinsteiger
Beiträge: 9
Registriert seit: Aug 2006
8.00
2004
kA
Deutschland
|
Werte aus Sub VI im Haupt VI anzeigen
<div align="left">Also die Variante von StefanHH funktioniert soweit erstmal, danke dafür.
@Achim
natürlich interessiert mich, wie Du das genau realisieren willst, mit dem Beispiel im Link komme ich nicht ganz klar.
Angenommen in meiner While Schleife im SubVI habe ich eine Variable XX. Diese wird in jedem Schleifendurchgang um 1 Inkremetiert. Durch ein Shiftregister wird der Wert in den nächsten Schleifendurchgang überführt. Wie meinst Du das, dass die Schleife nur einmal durchlaufen werden soll (im SubVI). Demnach müsste ich (wenn ich das richtig verstanden habe) dieses SubVI dann im MainVI wieder in eine While Schleife packen. Wie aber übergebe ich dann die "alten" Werte des SubVI Schleifedurchlaufs an den nächsten ohne das diese verloren gehen?
Kannst Du mir bitte ein simples Beispiel dafür geben?</div>
|
|
|
26.09.2006, 14:26
|
Myjestic
LVF-Neueinsteiger
Beiträge: 9
Registriert seit: Aug 2006
8.00
2004
kA
Deutschland
|
Werte aus Sub VI im Haupt VI anzeigen
<div align="left">@ Achim
Okay hat sich erledigt.
Ich habe wie Du gesagt hast, im SubVI nur einen Schleifendurchlauf. Alle Parameter die in den folgenden Schleifendurchlauf müssen habe ich gebundled und als Ausgang definiert. Diese Bundle kommt auch wieder als Eingang ins SubVI rein.
Im MainVI habe ich jetzt eine while-Schleife um mein SubVI gelegt mit Shiftregistern durch das, das Bundle durchgeführt wird. So kann ich jederzeit via unbundle by name die gewünschten Werte rausziehen, die ich angezeigt bekommen möchte.
Manchmal braucht man halt für ein einfaches Problem ein paar einfache Denkanstöße.
Vielen Dank nochmal an alle.</div>
|
|
|
| |