LabVIEWForum.de
Start und Stop in einer While-Schleife - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Start und Stop in einer While-Schleife (/Thread-Start-und-Stop-in-einer-While-Schleife)



Start und Stop in einer While-Schleife - jfkn2001 - 16.08.2010 20:17

Hallo Zusammen,

ich sitze vor einem Problem seit einigen Tage und finde keine Lösung. Habe auch schon vieles aus den Foren ausprobiert ohne Erfolg.

Zu meinem Problem:
Ich habe 3 While-Schleifen, die parallel laufen müssen.
1. Die erste ist die Main-Schleife mit den Ereignissen (Event-Structure)
2. Die zweite läuft direkt nach dem Start des Programms
3. Die dritte soll erst nach dem Drucken einer Starten-Taste durchlaufen und wieder nach dem Drucker der Stop-Taste stoppen.
4. Eine letzte Stop All - Taste soll alle Abläufe stoppen.

Ich würde mich auf jede Idee, wie man das Problem lösen konnte, freuen.

Ich habe ein Beispiel hochgeladen, benutze Labview2009

Danke an euch.

LG

Jimmy


Start und Stop in einer While-Schleife - Matze - 16.08.2010 20:41

Hallo Jimmy,

da ich dein Beispiel gerade nicht öffnen kann habe ich schnell was zusammen geklickt.

Sauberer geht die Kommunikation der Schleifen untereinander z.B. über Queues (Ereignisstruktur-Schleife ist der Erzeuger, was "Stop All" betrifft und die anderen beiden Schleifen sind Verbraucher.
Ungebremste Schleifen sind auch nichts, aber um grob zu zeigen, wie so etwas lösbar wäre, reicht das Beispiel vermutlich aus. Ich habe es jedoch nicht getestet.

[attachment=28784]


Start und Stop in einer While-Schleife - Falk - 16.08.2010 20:53

Moin Jimmy!

Es gibt einige Möglichkeiten dies zu realisieren. Dabei kommt es beispielsweise darauf an, wie den globaler Stop aussehen soll. Zum einen kannst du eine "Occurence" dazu verwenden.
Eine aus meiner Sicht gute Alternative dazu ist die Verwendung einen einfachen globalen Variable, die nur dem Zwecke dient einen boolschen Wert (true/ false) zu speichern. Siehe Anhang. Beachten solltest du dabei aber, diese am Programmstart entsprechend mit false zu initialisieren. Vorteil ist aus meiner Sicht, dass du diese Variable auch in SubVIs zur Beendigung von Code heranziehen kannst ohne dabei groß Verdrahtungen in tiefere Programmebenen sicherstellen zu müssen.

Schöne Grüße
Falk

Lv82_img


Start und Stop in einer While-Schleife - rasta - 17.08.2010 06:03

Hallo Jimmy,
wie Falk schon geschrieben hat gibt es viele Möglichkeiten.
Um bei Deinem Ansatz mit den Notifier´n zu bleiben, siehe Anhang Lv09_img2

Gruß
Ralf


Start und Stop in einer While-Schleife - jfkn2001 - 17.08.2010 08:23

Moin Zusammen,

Danke für die 3 Vorschläge. Es ist schön zu wissen, dass es mehere Wege gibt dieses Problem zu lösen. Habe die drei ausprobiert und habe mich sehr auf das Ergebnis gefreuet.

Allerdings soll manchmal beim dem Beispiel von "Mechatronik-Ingenieur" mehrmals auf die Stop-Taste gedruckt werden damit es hält. Sonst funktioniert das mehrfache Starten einwandfrei.

Danke noch an Alle. Smile

MfG

Jimmy


Start und Stop in einer While-Schleife - Matze - 17.08.2010 09:23

' schrieb:Allerdings soll manchmal beim dem Beispiel von "Mechatronik-Ingenieur" mehrmals auf die Stop-Taste gedruckt werden damit es hält. Sonst funktioniert das mehrfache Starten einwandfrei.
Hm, also "Stopp Alle" müsste beim ersten Klick alle Schleifen verlassen und somit das Programm beenden.
"Stop" müsste beim 1. Klick die innere Schleife verlassen, sofern Start nicht "true" ist. Ist das Schaltverhalten des Start-Buttons auf "Latch" eingestellt, würde ich sagen, dass es funktioniert.

Aber es kann gut sein, dass ich irgendwo einen kleinen Denkfehler habe (kömmt öfters vorWink).


Start und Stop in einer While-Schleife - cheeze - 19.08.2010 15:23

Ich habe ein ähnliches Problem. Allerdings geht es bei mir um das Stoppen zweier Schleifen.
Die 1. Schleife wird alle 2s ausgeführt. Die 2. Schleife alle 20ms. Das gleichzeitige stoppen (mit einem Stop-Button) mit globalen und lokalen Variablen funktioniert nicht. Bei gleicher Taktzeit ist dies kein Problem aber wenn die Schleifen mit so unterschiedlichen taktzeiten laufen wird nur eine Schleife beendet.


Start und Stop in einer While-Schleife - jg - 19.08.2010 16:25

Wenn man es entsprechend macht, geht das schon:
Lv09_img2[attachment=28869]
Ansonsten muss man halt den Datenfluss abwarten, bis irgendwann die globale/lokale Variable das nächste Mal ausgelesen wird. Bei einer 2 Sekunden Schleife kann das dann bis zu 4 Sekunden dauern, da ja alles quasi parallel abgearbeitet wird.

Gruß, Jens