Guten Morgen Labview-Community,
in meinem Main Vi führe ich ein Sub-Vi aus, welches einen Zahlenwert während seiner Aktivität ändert. Diesen Zahlenwert möchte ich mittels einer globalen Variablen im Main Vi kontinuierlich anzeigen.
Bisher wird der Wert erst nach Beendigung des Sub-Vis übernommen. Ich möchte aber dass er sich kontinuierlich im main Vi ändert, je nachdem wie er gerade im Sub-Vi ist.
Bild 1 zeigt das Main Vi, rot umrandet sind das Sub-Vi, die globale Variable und das Anzeigeelement.
Bild 2 zeigt das Sub-vi wo die globale Variable geschrieben wird.
Das Thema ist nicht neu hier im Forum, während meiner Recherche bin ich z.B schon auf Vorschläge mittels Queue oder einer parallelen while Schleife im Main Vi zum permanenten auslesen gestoßen. Allerdings ist mir die Lösung mit der Queue ziemlich fremd (was der Bauer nicht kennt ...) und das mit der parallelen while Schleife hat nicht funktioniert.
Vielleicht könnt ihr mir kurz sagen wie ich es noch probieren könnte.
Vielen Dank schonmal.
Hallo zich,
die Standardantwort lautet: Nutze parallel laufende Schleifen...
Bisher wird die Anzeige eben nur ein mal pro Schleifendurchlauf erneuert. THINK DATAFLOW!
P.S.: Aufräumen täte auch gut. Manches ist unnötig (wie die Schleife um die "+70"-Operation im MainVI)...
Hallo GerdW,
die parallelen Schleifen würde ich gerne nutzen, ich weiss aber allerdings nicht wie ich diese realisieren kann.
Wenn ich die globale Variable und das Anzeigeelement (Bild1 oben) aus der while Schleife herausziehe und eigens in eine neue Schleife lege, wird trotzdem die while-Schleife in der sich das SubVi befindet ausgeführt und ich bekomme das Ergebnis erst nach Beendigung des Sub-Vi.
Hast du vllt. ein kurzes Bild wie man die parallele Schleifenstruktur realisiert ?
Grüße
Hallo Zich,
Zitat:Hast du vllt. ein kurzes Bild wie man die parallele Schleifenstruktur realisiert ?
Hast du vielleicht ein Bild, woran man sehen könnte, wo du was gemacht/versucht hast?
Hi Gerd,
danke für deine schnellen Antworten !
Klar hab ich ein Bild, siehe Anhang.
Da habe ich mal versucht eine parallelen Schleifenstruktur zu realisieren. Ist vermutlich aber nicht so im Sinne des Erfinders nehme ich mal an weil es die Aktualisierung so leider nicht funktioniert.
Hallo zich,
THINK DATAFLOW!
Findest du den Fehler selbst? Entweder durch genaues Hinschauen oder per Debugging mit ExecutionHighlighting?
Die Schleife sind nicht parallel!
Hi Gerd,
ja der Datenfluss ist eigentlich klar. Die obere while Schleife wird zuerst ausgeführt und deshalb wird die untere mit dem Anzeigeelement nicht aktualisiert.
Ich weiss jetzt leider nicht wie ich die Schleifen sonst parallel bekommen soll... In meinen Augen sind die parallel zumindest würde ich das gerade darunter verstehen.
Gruß zich
Hallo zich,
Zitat:In meinen Augen sind die parallel zumindest würde ich das gerade darunter verstehen.
THINK DATAFLOW: Funktionen (z.B. deine Schleifen) werden parallel abgearbeitet, wenn es
keine Datenabhängigkeit (z.B. in Form von Drähten) zwischen ihnen gibt!
Fällt dir was auf?
Hi Gerd,
KEINE Datenabhängigkeiten war ein super Stichwort
. Ich dachte die ganze Zeit es genügt den Dataflow mittels ERROR-Verdrahtung vorzugeben. Das sich beide Schleifen nicht aufeinander beziehen dürfen wusst ich nicht. Das Ganze lag ja jetzt an der Abbruchbedinung der beiden While Schleifen. Also weil die untere ihre Abbruchbedingung von der oberen geholt hat.
Danke !!
Grüße zich
Hi Gerd,
jetzt muss ich doch nochmal was einwerfen.
Irgendwie find ich es ja komisch dass das ganze nun funktioniert, so wie ich es im angehängten Bild gemacht habe.
Ich möchte bei beiden Schleifen die Selbe Abbruchbedingung. Wenn ich die Abbruchbedingung verdrahte funktioniert es nicht, wenn ich sie auf eine lokale Variable lege hingegen schon. Letztlich ist doch dann wieder die Abhängigkeit der beiden Schleifen zueinander gegeben...
Ich hätte erwartete, dass es auch anders funktionieren würde.
Naja, Grüße zich
(15.06.2012 09:22 )zich1011 schrieb: [ -> ]Wenn ich die Abbruchbedingung verdrahte funktioniert es nicht
Durch eine Verdrahtung sind die Schleifen ja abhängig. Da die zweite Schleife auf die erste warten muss, bis diese datenflusstechnisch verkoppelt sind (mittels Drähte).
Es gilt immer: Über den Draht wird der Datenfluss gesteuert.
(15.06.2012 09:22 )zich1011 schrieb: [ -> ]wenn ich sie auf eine lokale Variable lege hingegen schon.
Eine lokale Variable weicht hingegen dieses Prinzip auf, bzw. dieses übergeht, da hier keine Verdrahtung notwendig ist.
(15.06.2012 09:22 )zich1011 schrieb: [ -> ]Ich hätte erwartete, dass es auch anders funktionieren würde.
Am besten schaust du dir das ganze mal mit dem Lämpchen an
Dann kannst du schön den Datenfluss nachvollziehen.
Beste Grüße,
NWO