LabVIEWForum.de - Zustandsautomat An -> Aus -> Zeit messen

LabVIEWForum.de

Normale Version: Zustandsautomat An -> Aus -> Zeit messen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Morgen,

ich bin dabei ein wenig den Zustandsautomaten zu erlernen. Ich habe mir die Aufgabe gestellt, dass es zwei Schaltflächen gibt, sobald ich eine drücke soll ein Timer anfangen zu laufen, bis ich die andere Schaltfläche gedrückt habe. Quasi meine Schnelligkeit soll getestet werden. Jetzt habe ich 3 Zustände "Idle, An und Aus". Im Idle Zustand habe ich zwei Ereignis Strukturen eingefügt, sobald die eine Taste gedrückt wird springt er in den "An" Zustand, wo ein Timer beginnt zu zählen, dann hört er allerdings auch auf zu zählen, da ich anschließend wieder in den Idle Zustand gehe. Wie kann ich es realisieren, dass die Zeit weiter läuft?

Grüße Stefan
Hallo Stefan,

lad doch dein VI in <= LV2011 einfach mal hoch, dann wird dir sicher recht schnell geholfen werden.

Gruß, Marko
Hallo,

ich arbeite an einem Rechner ohne Internet Anschluss :/ kann den leider auch nicht schnell anstecken...
Ich würde das nicht über einen Timer machen, sondern mittels Zeitstempel, Aktuelle Zeit ermitteln.
Zwei Ereignisstrukturen in einer whileSchleife, für An und Aus Knopf. Den An Zeitwert aus der ersten EStruktur übergibst du in die zweite Estruktur und Rechnest dort die Differenz der beiden aus.

Edit: Die beiden EStrukturen müssen noch in eine Sequenz.
(05.09.2013 08:46 )RadioactiveMan schrieb: [ -> ]Ich würde das nicht über einen Timer machen, sondern mittels Zeitstempel, Aktuelle Zeit ermitteln.
Zwei Ereignisstrukturen in einer whileSchleife, für An und Aus Knopf. Den An Zeitwert aus der ersten EStruktur übergibst du in die zweite Estruktur und Rechnest dort die Differenz der beiden aus.

Edit: Die beiden EStrukturen müssen noch in eine Sequenz.

Mehr als eine Ereignisstruktur halte ich immer für gefährlich, weil das unerwünschte Effekte hervorrufen kann.
Die Sequenz (Edit) ist ebenfalls unnötig, da eine klare Datenabhänigkeit durch die Übergabe von der ersten zur zweiten Ereignisstruktur besteht und die zweite dementsprechend nicht vor der ersten laufen kann.
Eine Ereignisstruktur ohne Timeout würde es auch nicht zulassen einen Live-Timer anzeigen zu lassen.


Im Anhang mal meine Realisierung.
(Es handelt sich um eine While-Schleife. Die drei Teilbilder nur, um alle Bereiche der Ereignisstruktur zu zeigen)


Gruß
Clyde
funktioniert ja einwandfrei. Danke dir! Jetzt werd ich mal versuchen das nachzu vollziehen Wink
Hallo Stefan,

das Beispiel von Clyde ist zwar schön gedacht und wird in den meisten fällen auch funktionieren. Allerdings warnt schon die LV-Hilfe vor der Verwendung der Funktion Timerwert auslesen bei Vergleichsoperationen. Da diese Funktion den aktuellen Timerwert ausgibt, kann es sein, dass dieser zwischen Start und STop übergelaufen ist und dann der Stopwert kleiner ist als der Startwert. In der Differenz wird dann Käse rauskommen. Solche Fehler sind schwer zu entdecken, da sie bei einem 32bit-Register entsprechend selten auftreten werden. Besser ist es z.B. mit der Systemzeit zu arbeiten (die kann auch in s gewandelt werden).

Gruß, Marko
Referenz-URLs