LabVIEWForum.de
Schleife sofort beenden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Schleife sofort beenden (/Thread-Schleife-sofort-beenden)



Schleife sofort beenden - mprocket - 17.01.2018 15:19

Hallo liebe Community,

mit diesem Programm soll eine Datei ausgelesen werden und nachgefahren werden (rechte Spalte Drehzahl, linke Spalte Zeit in Sekunden wie lange diese Drehzahlen gehalten werden sollen). Die unterschiedlichen Drehzahlen sollen mit einer Rampe angefahren werden. Mein Programm funktioniert soweit ganz gut.
Nun aber das Problem: Ich möchte das Programm zusätzlich mit einem Stopp Button zu jeder Zeit beenden können und nicht nur wenn die komplette Datei abgefahren wurde. Mir ist klar, dass dazu die While-Schleife schneller wiederholt werden muss, ich habe dazu auch diverse Foreneinträge gelesen, jedoch komme ich an diesem Punkt nicht weiter. Wenn ich die Schleife schneller durchlaufen lasse, bzw das VI "Warten" entferne, dann wird die gewünschte Drehzahl zwar angefahren, jedoch aber nicht gehalten.

Wie kann ich also beides realisieren, dass die Drehzahl gehalten wird und dass das Programm sowohl am Ende der Datei beendet wird, aber auch zu jeder Zeit mit einem Stopp Button beendet werden kann?

Noch zur Info: Dieses Programm ist nur ein Zustand einer State-Machine. Vielleicht hilft das bei der Problemlösung.

Für Anregungen und Tipps bin ich sehr dankbar.

Grüße
Marcel


RE: Schleife sofort beenden - GerdW - 17.01.2018 15:37

Hallo mprocket,

Zitat:Ich möchte das Programm zusätzlich mit einem Stopp Button zu jeder Zeit beenden können und nicht nur wenn die komplette Datei abgefahren wurde.
Dann musst du auch zu "jeder Zeit" den Stopp-Button abfragen!
Das bedeutet, dass er innerhalb der FOR-Loop abgefragt und auch dort die Stop-Bedingung aktiviert werden muss!

Warum ist dein VI so kompliziert und unaufgräumt?
[attachment=58642]


RE: Schleife sofort beenden - mprocket - 17.01.2018 17:07

Hallo GerdW,

zunächst vielen Dank für deine Antwort! Mein Programm entstand aus herumprobieren, deshalb die Unordnung und Komplexität. Zudem benutze ich LabVIEW erst seit kurzem Blush

Ich habe dein Programm mal nachgebastelt. Ich kann nun zwar jederzeit das Programm beenden, aber die Drehzahlen werden nur angefahren und nicht die gewünschte Zeit gehalten? Wo liegt der Fehler?

Warum verbindest du die beiden Bedingungsanschlüsse mit einem UND?

Danke und Grüße
Marcel


RE: Schleife sofort beenden - GerdW - 17.01.2018 17:38

Hallo Marcel,

Zitat:Warum verbindest du die beiden Bedingungsanschlüsse mit einem UND?
Damit bei einem Stopp wirklich "sofort alles" abgebrochen werden kann.

Zitat:nicht die gewünschte Zeit gehalten? Wo liegt der Fehler?
Du hast bei der CompoundArithmetic eine Negation zu viel…


RE: Schleife sofort beenden - mprocket - 17.01.2018 17:49

Hallo GerdW,

oh das habe ich glatt übersehen, danke.

Dennoch funktioniert das Programm noch nicht so wie ich mir das vorstelle. Angenommen die Drehzahl 300 1/min soll laut Datei z.B. 90s gehalten werden, aber ich möchte bereits nach 10s durch den Stopp Button beenden, funktioniert das nicht. Zwar werden die darauffolgenden Drehzahlen nicht mehr angefahren, aber dennoch muss ich die 90s abwarten. Es wird also leider nicht sofort beendet. Gibt es dafür eine Möglichkeit?

Grüße
Marcel


RE: Schleife sofort beenden - GerdW - 17.01.2018 18:06

Hallo Marcel,

Zitat:Gibt es dafür eine Möglichkeit?
Na klar gibt es die!
Tipp: Du musst ja nicht 1× 90s warten, sondern kannst ja stattdessen auch 180× 0.5s warten…


RE: Schleife sofort beenden - mprocket - 19.01.2018 10:50

Hallo GerdW,

ich verstehe deinen Tipp, nur leider weiß ich nicht wie man dem Timer sagt, dass er 180 x 0,5s wartet und nicht 1 x 90s...

Das Problem habe ich nun jedoch lösen können, mit hilfe einer Eventstruktur Big Grin

Vielen Dank für deine Hilfe.
Grüße Marcel


RE: Schleife sofort beenden - GerdW - 19.01.2018 10:53

Hallo Marcel,

Zitat:nur leider weiß ich nicht wie man dem Timer sagt, dass er 180 x 0,5s wartet und nicht 1 x 90s...
Ganz einfach: man ruft die Wartefunktion nicht einmal mit 90s Wartezeit auf, sondern in einer Schleife 180mal mit 0.5s Wartezeit…


RE: Schleife sofort beenden - Lucki - 19.01.2018 18:59

Zum Warten kann man auch sehr gut die Funktion "verstrichene Zeit" verwenden.
Ich habe im Beispiel keine Rampe verwendet.
Unterschied : Es ist nicht die Anstiegszeit konstant, sondern die Flankensteilheit.
Die Textdatei sollte sich im Arbeitsverzeichnis befinden, dann wird nicht nachgefragt.
Hinweis: Eine zusätzliche Digitalanzeige läßt sich bei Rundinstrumenten usw. mit "sichbare Elemente" erzeugen.
[attachment=58653]


RE: Schleife sofort beenden - mprocket - 19.01.2018 23:26

Hallo GerdW und Lucki,

vielen Dank für eure Tipps und Anregungen!

Grüße
Marcel