LabVIEWForum.de - Schleife sofort beenden

LabVIEWForum.de

Normale Version: Schleife sofort beenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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]
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
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…
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
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…
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
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…
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]
Hallo GerdW und Lucki,

vielen Dank für eure Tipps und Anregungen!

Grüße
Marcel
Referenz-URLs