' schrieb:Nun die entscheidende Frage: Wie lange pumpt die Pumpe dann in eine Richtung?
Die Pumpe pumpt immer so lange in eine Richtung, wie die Timeoutzeit lang ist. Also, Antwort anders ausgedrückt: zwei Sekunden.
Zitat:Ich habe es so verstanden, dass bei der naechsten Iteration genau "Timeoutzeit" gewartet wird, bis der naechste Timeout-Case, diesmal mit umgekehrter Richtung ablaeuft. Das heisst wiederrum, der vorherige Timeout-Case laeuft solange, bis der naechste gestartet wird, naemlich nach x sec der Timeoutzeit.
Deine Ausdruckweise mit der deutschen Sprache stimmt nicht überein mit der Funktionsweise einer Event-Sequenz.
Ein Timeout-Case läuft nicht ständig ("der vorherige Timeout-Case laeuft
solange, bis der naechste gestartet wird"). Ein Timeout-Case ist ein einmaliges Ereignis und dauert weniger als eine Millisekunde. Was 2 Sekunden dauert ist der Zustand, der durch den Code im Timeout-Case erzeugt wird: "Pumpe vorwärts laufen" (beachte: im Timeout wird "Pumpe vorwärts schalten" gemacht, danach heißt es "Pumpe vorwärts laufen"). Nach diesen 2 Sekunden erfolgt das nächste Timeout-Event.
Zitat:Diese Start.vi in der Case-Struktur im Timeout-Case setzt die Pumpe nur unendlich lange in Bewegung. Weil aber nach der Timeoutzeit von 2 Sekunden in der naechsten Iteration ein erneuter Start-Befehl aber mit umgekehrter Richtung kommt, kehrt die Pumpe die Richtung um.
So ist es richtig ausgedrückt.
Hinweis: Es ist in erster Linie eine Event-Struktur, dann erst eine Case-Struktur.
Zitat:Ich muss mal sehen, ob das so gut ist fuer meine Anwendung. Es kann ja auch passieren, dass ich einmal 10 Sekunden als Timeoutzeit habe und die muss ich vorher immer warten, bis irgendetwas passiert. Ich kann noch nicht abschaetzen, ob das sinnvoll ist.
Du kannst folgendes machen:
Mach ein Schieberegister, dessen Ausgang auf den Timeout-Eingang geht. Das Schieberegister belegst du außerhalb der While-Schleife mit 0 vor. Im Timeout-Event gibst du dann die "richtige" Timeout-Zeit auf das Schieberegister, sodass ab der nächsten Iteration immer die gewünschte zeitgewartet wird. Durch die 0 wird die Pumpe praktisch sofort geschaltet, wenn das SubVI gestartet wird.
Beachte weiterhin, dass mittels eines Benutzerevents (den Post dazu hast du ja schon gefunden) der Timeout praktisch umgangen werden kann.