LabVIEWForum.de - Ausschaltverzögerung 2024

LabVIEWForum.de

Normale Version: Ausschaltverzögerung 2024
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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 hatBig Grin

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 Sad

Letzt endlich soll es dauerhaft so funktionieren wie es beim ersten Durchgang.

Herzlichen Dank Smile
Hallo bear1775,
leider kann ich dein Vi nicht öffnen. Ich habe nur lv19_img.

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
Ich habe eine lv18_img Version erstellt
Hallo bear1775,

du musst bei den Elapsed Time VIs den Timer über den Rest Eingang zurücksetzen.
(17.05.2024 10:59 )Martin.Henz schrieb: [ -> ]Hallo bear1775,

du musst bei den Elapsed Time VIs den Timer über den Rest Eingang zurücksetzen.

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 Dodgy

Grüße Marco
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 Smile

Grüße Marco
Hallo baer1775,

(17.05.2024 11:33 )baer1775 schrieb: [ -> ]Ich würde am Eingang des "elapsed time" ja ebenfalls eine Positive Flanke benötigen
um den timer zurück zu setzen.

ja, genau das ... und dass kann dir zum Beispiel der vorhergehende Zustand liefern.

(ich habe dein allererstes VI modifiziert)
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 Smile

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 Smile
Referenz-URLs