Stichwort Datenfluss:
Der Datenfluss in LV ist eigentlich ganz leicht zu verstehen, da er immer den sichtbaren Verbindungen folgt und jedes Element solange mit der Ausführung seines Codes wartet, bis alle erwarteten Signale geliefert wurden.
Jetzt fragst du dich sicherlich: Aber wie kann ich Daten von einer While-Schleife in eine andere parallele Schleife übertragen, wenn die erste While-Schleife doch erst nach Beendigung Werte über ihre Tunnel weitergibt?
Das geht mit einer Queue oder einem Notifier, evtl auch mit einem Event, aber auch mit lokalen und globalen Variablen.
Ich persönlich vermeide globale Variablen wo immer es geht und nutze in den meisten Fällen Melder, Queues und wo es angebracht ist auch Events und wenn es nicht anders geht auch lokale Variablen.
In deinem Fall würde ich zu einem Melder greifen, da du bei solch trivialen Problemen keine Eventstruktur benötigst und ich annehme, dass deine Messung schneller abläuft als dein Timer.
Ich habe mal einen Screenshot gemacht, der zeigt wie du die Melder händeln kannst. Das Wait in deiner oberen (bzw linken) Schleife ist überflüssig, da dein Express-VI schon dafür sorgt, dass deine Prozessorlasst nicht bei 100% liegt. Ebenfalls die Anzeige für Impuls kannst du dir im normalen Betrieb schenken, da du so schnell nicht gucken kannst wie die an und aus geht. Ich habe sie daher nur zur Veranschaulichung im Debugmodus beibehalten.
Die Case-Struktur in der unteren Schleife dient lediglich dazu, dass die Schleife bei Beendigung des Programmes nicht erst noch die Sequenz durchläuft, sondern direkt die Schleife beendet. Die Sequenz innerhalb der Case-Struktur sorgt in dem Beispiel dafür, den Indikator nach 1,5 s wieder auf FALSE zu setzen (mittels einer lokalen Variablen). Die Abbruchbedingung der unteren Schleife ist direkt mit dem Errorausgang des WaitOnNotifier-Elements verbunden, da dies einen Fehler ausgibt, sobald der Melder nach beenden der oberen Schleife zerstört wird und somit die untere Schleife ebenfalls beendet wird.
Ich hoffe, ich habe jetzt nicht nur deine Hausaufgaben gemacht, sondern du hast auch etwas dabei gelernt!:PNaja, programmieren musst du es ja dennoch selbst, da ich ja nur eine Möglichkeit aufzeige, wie es gemacht werden kann.
Ach ja, wurde noch gar nicht gesagt: ExpressVIs sind nicht unsere Freunde!:)Die sind nur gut um mal schnell eine exemplarische Lösung zu bekommen, sollten aber in "richtigen" Programmen durch effektiveren Code (zu Fuß) ersetzt werden, da sich dieser im Fehlerfall auch analysieren lässt.
Falls ich später noch Zeit (und Lust) habe, zeige ich evtl noch wie deine Problemlösung ohne ExpressVI aussehen kann.
Vielleicht hat aber auch jemand anderes Lust (und Zeit) dazu?!
Beste Grüße aus dem schönen Schweden,
Tobias
PS: Solltet ihr denken, dass ich öfters mal y und z vertausche: das liegt daran, dass ich mit deutschem Tatsturtreiber an einer schwedischen Tastatur arbeite und die Fehler kommen immer dann, wenn ich mal wieder beim tippen auf die Tasten schaue...