Programm Stop - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Programm Stop (/Thread-Programm-Stop) Seiten: 1 2 |
Programm Stop - Lucki - 01.08.2009 08:45 ' schrieb:Ich denke, ich werde noch einen großen Case einsetzen, in dem mein ganzes Programm sitzt, und der ist durch die Stop-Funktion gesteuert.Und ich sehe da gar keine Schwierigkeit. In einer Viertelstunde ist alles erledigt, wenn Du es so machst: [attachment=20133] [attachment=20132] Falls Du aber dafür nur 2 Minuten Zeit zur Verfügung hast, dann bleibt nur es so zu machen (Aber kein anständiger Programmierer macht das. Die Stop-Taste drückt den roten Knopf) [attachment=20135] Programm Stop - Lucki - 01.08.2009 10:08 ' schrieb:Wie wär es mit folgendem VI. Da eh nur gewartet wird kann man eine Ereignisstruktur mit Timeout einsetzen. Stoppt sofort wenn man Stop drückt.Dieser Vorschlag ist schlichtweg optimal, und die Umstellung dürfte auch schnell gehen. Ein Anfänger würde sich vielleicht etwas mehr Text wünschen. Also hier ist er: In den Timeout-Case kommt der Inhalt der bisherigen Haupschleife hinein. (Der Boolsche alternierende Schalter dient nur als Platzhalter) Natürlich abzüglich der Uhren. Dies Struktur wird man in der Regel noch erweitern. Denn wenn einmal diese schöne Struktur da ist, wird man auch weitere Bedienvorgänge oder sogar alle als Ereignisse behandeln. Programm Stop - schrotti - 02.08.2009 12:35 ' schrieb:Ich habe das Problem mit langsamem Stop genauer angeschaut: Das ist doch logisch. Im ersten Fall wird "Stopp" ausgwertet und anschließend gewartet. Wenn du dann auf Stopp drückst wird dies erst in der nächsten Iteration ausgwertet. Mit definiertem Datenfluss könntest du das aber umgehen. Ich bevorzuge für so etwas eine stinknormale whileschleife, die alle 50 ms ausgeführt wird. Bei einer Ereignisstruktur brauch ich dynamische Ereignisse, wenn ichs als SubVI einsetzen will. Programm Stop - wohl - 04.08.2009 16:37 Danke für die Vorschläge! Mit einigem Rumprobieren fand ich, daß mir bei meiner LabVIEW-Version (Base) die Ereignis-Struktur nicht zur Verfügung steht. Da fallen einige Vorschläge für mich von Vorn herein flach. Der Vorschlag in Beitrag 11 stoppt auch nicht langsamer, als meine Basteleien, es schien nur so, weil der Timer im Case auf 100ms stand. Ich habe nochmal rumgebastelt, und die funktion "Auf Frontpanel Aktivität warten" gefunden. Da kann der Timeout als Zeitfunktion verwendung finden, Stop als Eingabe über das Frontpanel bricht diese "Zeitfunktion" ab. Leider läßt sich keine zur Systemuhr synchrone Steuerung damit aufbauen. Ich habe schließlich einen Timer selbst gebastelt, der alle Bedingungen erfüllt, wie Synchron zur Systemuhr, und Schnellstop: Auslesen der Systemuhr, String in Zahl verwandeln, und nur die Sekunden herausführen. Diesen Wert für die Zeitsteuerung anschließend aufarbeiten, um 2 While-Iterationen pro Minute zu erhalten. Der angesteuerte Case muß nur eine Verzögerung von mindestens einer Sekunde enthalten, damit keine zwei Events innerhalb der Triggerzeit vorkommen (Ist eigentlich nur bei einem so einfachen Programm, wie Blinklicht relevant). Programm Stop - unicorn - 05.08.2009 08:35 Nichts desto trotz solltest Du in der While-Schleife ein kleines Wait spendieren, z. B. 50 ms. Das ändert nichts an der Reaktionszeit beim Drücken des Stopp-Knopfes. Es reduziert aber die Prozessorauslastung der anderenfalls volle Kraft voraus die While-Schleife abarbeitet. Programm Stop - wohl - 05.08.2009 09:16 Guter Tip, danke! |