![]() |
Ausschaltverzögerung 2024 - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Ausschaltverzögerung 2024 (/Thread-Ausschaltverzoegerung-2024) |
Ausschaltverzögerung 2024 - baer1775 - 16.05.2024 15:16 Hallo Zusammen, Vorab: das Thema beschäftigt mich schon eine halbe Ewigkeit und irgendwie bin ich mit meinen bisherigen Lösungen nicht zufrieden. Ich habe leider auch keine passende Lösung gefunden und hoffe, dass es jemand gibt, der hier etwas tolles hat ![]() Worum geht's? In einem Case-gesteuerten Ablaufprogramm (Statusmaschine) muss für eine gewisse Zeit der Folgeschritt aufgehalten werden. Z.B. um einen DO auf high und danach wieder auf low zu setzen. Nach Ablauf dieser Zeit soll es mit dem nächsten Case weiter gehen. Dabei darf die Hauptschleife nicht stoppen, da paralell z.B. die Datenerfassung per DAQ läuft. Meine Applikation ist recht groß deshalb habe ich versucht, ein sinnvolles Beispiel zu machen. Ist angehängt. Ablauf: CASE 0 wartet bis Starttaste gedrückt wird. Start drücken dann CASE 1 startet das VI "verstrichene Zeit". nach 2 Sekunden geht es weiter mit CASE 2 startet das VI "verstrichene Zeit". nach 2 Sekunden geht es weiter mit CASE 3 startet "wait" für 2 Sekunden [Mainwhile steht --> darf nicht sein dann CASE 4 (nur zu Darstellungszweck der LED) CASE 5 beendet den Durchlauf. Das ganze funktioniert nur bei Neustert des VIs. Beim erneuten Starten der Schleife per Button ist irgendwie alles Essig ![]() Letzt endlich soll es dauerhaft so funktionieren wie es beim ersten Durchgang. Herzlichen Dank ![]() RE: Ausschaltverzögerung 2024 - Hubert R. - 16.05.2024 17:18 Hallo bear1775, leider kann ich dein Vi nicht öffnen. Ich habe nur ![]() Mein Vorschlag: Wenn du nach dem Prinzip „mache etwas – habe etwas gemacht“ verfährst geht das. Was meine ich mit „mache etwas“. Lagere deine 2 Sekunden verstrichen Funktion in ein separates Vi aus (SubVi). Wenn dein state ausgeführt wird schicke diese Info über eine Queue an dieses SubVi. Dieses kann nun deine Zeit abarbeiten. Wenn das erledigt ist meldet es sich zurück „habe etwas gemacht“. Dieses „habe etwas gemacht“ kann man mit einem User Event erledigen. Ich hoffe ich konnte dir etwas helfen. Liebe Grüße Hubert RE: Ausschaltverzögerung 2024 - baer1775 - 17.05.2024 08:01 Ich habe eine ![]() RE: Ausschaltverzögerung 2024 - Martin.Henz - 17.05.2024 10:59 Hallo bear1775, du musst bei den Elapsed Time VIs den Timer über den Rest Eingang zurücksetzen. RE: Ausschaltverzögerung 2024 - baer1775 - 17.05.2024 11:33 (17.05.2024 10:59 )Martin.Henz schrieb: Hallo bear1775, Hallo Martin, das hab ich ohne nennenswerten Erfolg versucht. Ich würde am Eingang des "elapsed time" ja ebenfalls eine Positive Flanke benötigen um den timer zurück zu setzen. Unser VI funktioniert zwar sehr gut wenn es in einer Whileschleife läuft, aber in einer Statusmaschine oder einer Sequenz eben leider nicht ![]() Grüße Marco RE: Ausschaltverzögerung 2024 - baer1775 - 17.05.2024 11:53 Ich habe jetzt nochmal eine Version hochgeladen. Diese enthält als 4. Variante meine bisherige Lösung: * ein MS Timerwert wird in den Rückkopplungsknoten geschleift * im nächsten CASE wird dann der aktuell MS Timerwert mit dem vorherigen MS Timerwert verglichen * Wenn das Delta größer/gleich dem Sollwert (2000ms) dann TRUE Aber eigentlich suche ich was eleganteres, schöneres, einfacheres ![]() Grüße Marco RE: Ausschaltverzögerung 2024 - Martin.Henz - 17.05.2024 13:43 Hallo baer1775, (17.05.2024 11:33 )baer1775 schrieb: Ich würde am Eingang des "elapsed time" ja ebenfalls eine Positive Flanke benötigen ja, genau das ... und dass kann dir zum Beispiel der vorhergehende Zustand liefern. (ich habe dein allererstes VI modifiziert) RE: Ausschaltverzögerung 2024 - baer1775 - 21.05.2024 11:43 Vielen Dank erst mal Martin, das ist natürlich eine Idee, die man in einer Applikation umsetzen könnte. Der Vorteil von Deinem Beispiel ist, dass ich mir nicht erst den MS Timerwert aus einem Case vorher holen muss und mit dem aktuellen MS Wert vergleichen (so wie in meinem Beispiel 2). Das ist nämlich meine Lösung für bisherige Applikationen die eine Ausschaltverzögerung benötigen. Aber du bringst mich auf eine Idee um das ganze etwas smarter / kleiner zu machen. Man nehme statt Deinem Schieberegister einen Rückkopplungskonten und verbindet das dann mit dem Reset des Timer-VIs. Das funktioniert auch als Sub-VI ![]() Cool, das sollte es gewesen sein. Das ganze nur noch abbrechbar machen. Teste ich mal in einer großen Applikation. Dankeschön Wenn jemand noch eine ganz andere Lösung hat, dann gerne her damit ![]() |