LabVIEWForum.de - While-Schleife - einmal zuviel?

LabVIEWForum.de

Normale Version: While-Schleife - einmal zuviel?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,

folgendes ist mir aufgefallen:

Drücke ich in angehängtem VI den Stop-Button will ich, dass die While-Schleife sofort abbricht. Aber anstatt abzubrechen wird sie noch ein einziges Mal ausgeführt und bricht dann ab.

Wie schaffe ich einen sofortigen Abbruch?


Alex

P.S.: das angehängte Beispiel ist eine Vereinfachung aus meinem komplexeren Programm.
' schrieb:Hi,

folgendes ist mir aufgefallen:

Drücke ich in angehängtem VI den Stop-Button will ich, dass die While-Schleife sofort abbricht. Aber anstatt abzubrechen wird sie noch ein einziges Mal ausgeführt und bricht dann ab.

Wie schaffe ich einen sofortigen Abbruch?
Alex

P.S.: das angehängte Beispiel ist eine Vereinfachung aus meinem komplexeren Programm.

it's no bug, it's a featureSmile

While-Schleifen werden IMMER mindestens einmal ausgeführt.
Du könntest den Inhalt der While-Schleife zusätzlich in eine Case-Struktur packen und als Bedingung für Case deinen Stop-Button definieren.

Dein Test.VI kann ich mir nicht anschauen, denn ich nur LV8.0 hab.

eg
Das While-Scheifen min. einmal ausgeführt werden ist mir bekannt.
Jedoch wird nach Betätigung des Stopp-Buttons die Schleife ein weiteres Mal ausgeführt.

Mit dem Tipp von eg (CASE-Struktur über Stopp-Button) funktioniert es wenigstens - wenns auch unschön ist ;-)
' schrieb:Das While-Scheifen min. einmal ausgeführt werden ist mir bekannt.
Jedoch wird nach Betätigung des Stopp-Buttons die Schleife ein weiteres Mal ausgeführt.

Das glaube ich dir nicht. Probiere das mal aus und schau, was Numeric sagt.

eg
Sieht aus, als wolltest Du so' ne Art "State Machine" bauen. Was hast Du denn genau vor?

Gruß Markus

' schrieb:Das While-Scheifen min. einmal ausgeführt werden ist mir bekannt.
Jedoch wird nach Betätigung des Stopp-Buttons die Schleife ein weiteres Mal ausgeführt.

Mit dem Tipp von eg (CASE-Struktur über Stopp-Button) funktioniert es wenigstens - wenns auch unschön ist ;-)
Eine SPS sendet mir per TCP/IP Informationen über durchzuführende Messungen und ich soll die Messung durchführen.
' schrieb:Drücke ich in angehängtem VI den Stop-Button will ich, dass die While-Schleife sofort abbricht. Aber anstatt abzubrechen wird sie noch ein einziges Mal ausgeführt und bricht dann ab.
Das liegt an folgendem:

Der Stopp-Button, der die Schleife beenden soll, wird am Anfang der Schleife ausgelesen und dessen Wert an die Schleifenbeendigung weitergeleitet. Wenn du die eine innere Schleife mit dem Stopp-Button beendest, hat dieser Wert des Stopp-Buttons keine Auswirkung auf die Schleifenbeendigung der äußeren Schleife! Ob die beenden soll oder nicht, liegt nämlich schon seit Beginn der Schleife fest. Dein Problem liegt also am Datenflußprinzip. Es ist in deinem Falle nicht so, dass der Stoppbutton abgefragt wird am Ende der (äußeren) Schleife.

Du musst dir also was einfallen lassen, damit der Stopp-Button quasi wie am Ende der Schleife abgefragt wird.

Du könntest z.B. den Stopp-Button für die äußere Schleife sequenzieren mit der Statemachine, sodass der Stoppbutton erst nach jedem Case überprüft wird.
' schrieb:it's no bug, it's a featureSmile

While-Schleifen werden IMMER mindestens einmal ausgeführt.
Was aber Verbesserung am Programm, um dem gewünschten Verhalten zu entsprechen, nicht ausschließt.
Ist-Zustand: Stopp-Knopf wird ganz zuerst gelesen, dann erst wird das was in der Schleife drin ist abgearbeitet. Wenn Du in dieser Zeit den Knopf drückst, wird Dein Abbruchwunsch nicht mehr zu Kenntnis genommen, sondern erst beim nächsten Durchlauf.
Es ist ein leider fast unvermeidlicher Irrtum, so zu denken: Der Abbruchkopf ist in der Schleife rechts unten, und dort habe ich auch den Stopp-Butten platziert. Da wird er wohl erst kurz vor der Entscheidung auf Abbruch gelesen werden. Falsch!!!!!

Richtig ist so:

[attachment=7634]
Edit: Entschuldige Ichselbst, sehe gerade, Du hast ja alles schon vor mir gesagt was zu sagen war...
Referenz-URLs