LabVIEWForum.de - While mit Flat Sequence durch State Machine ersetzen

LabVIEWForum.de

Normale Version: While mit Flat Sequence durch State Machine ersetzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe ein größeres Problem. Seit einiger Zeit beschäftige ich mich mit LabVIEW. Ich habe mittlerweile ein relativ großes Programm,
welches allerdings sehr unüberischtlich ist. Ich habe den Fehler gemacht, das ein Teil meines Main-VI ein einer while-Schleife mit
vielen Flat-Sequences abläuft. Dies ist natürlich sehr lang...

Jetzt wurde ich darauf hingewiesen, eine State Machine zu verwenden.
Wie kann ich nun am geschicktesten mein Programm umformen?
Kann man in einer State-Machine den gleichen State mehrmals aufrufen?

Mein Ziel ist es, ein Test nach einen bestimmten Muster durchzuführen. Hierfür habe ich vier SubVIs, welche an einer bestimmten Stelle
aufgerufen werden. Dazwischen erfolgt jeweils eine Pause.
Beispiel: SubVI1 - P1 - SubVI3 - P2 - SubVI1 - P1 - SubVI4 - P3- SubVI2 - P1 - SubVI3 - P2 - SubVI2 - P1 - SubVI4

Ich lad im Anhang einfach mal meine Schleife hoch. Nur mal um zu sehen, wie lang die ist. (ohne SubVIs)


[attachment=6954]
Guckst du hier...als Anregung:

http://www.LabVIEWforum.de/index.php...ost&p=15729


Das ist ja der Gag an der State-Machine...irgend eine Bedingung wird abgefragt...und abhängig davon wird ein State "angesprungen"...ob das jetzt jedes Mal ein neuer ist oder 1354 mal der gleiche, hängt ganz von deiner Vorgabe ab...

Gruss
Achim
Das hab ich verstanden.

Ich versuch mein Problem noch mal zu erklären.
Ich springe State 1 an, dieser wird acht mal wiederholt, danach State 2. Dieser wiederum 8 mal angesprungen.
Danach State 1, jedoch jetzt nicht 8 mal, sondern 16 mal. Und nun nicht State 2, sondern State 3 danach.

8x State 1
8x State 2
16x State 1
16x State 3

Ich lade einfach mal meinen Test hoch. Ich habe das mit einem Entscheidungscase gelöst. ist noch nicht ausgereift
und ich weiß auch nicht, ob dies die eleganteste Lösung ist.
Was meint ihr dazu?


[attachment=6958]
Hab momentan nur LV8.0.1, du musst vorerst auf meine Kommentare verzichten...

Wenn du sagst, du hast es verstanden, wo ist dann dein Problem? Offenbar klappts ja schon...du musst halt am Ende jedes States prüfen, ob du jetzt von hier aus wieder hier landen willst oder wo anders...und da ist ein Case (+ evtl. ein Zähler) ganz gut! Alternativ kannst du "Select" von der Comparison-Palette verwenden, so wie ich's im Beispiel (Link oben) gemacht hab!

Gruss
Achim
kann mir mal bitte einer state machine auf deutsch übersetzen? ich hab ne deutsche LabVIEW version......weiß garnet um was des hier geht....
' schrieb:kann mir mal bitte einer state machine auf deutsch übersetzen? ich hab ne deutsche LabVIEW version......weiß garnet um was des hier geht....


Finite state machine ist ein endlicher Zustandsautomat.

eg
' schrieb:kann mir mal bitte einer state machine auf deutsch übersetzen? ich hab ne deutsche LabVIEW version......weiß garnet um was des hier geht....

Ne State Machine ist nix LV-spezifisches...in "G" (= LabVIEW) lässt sich das allerdings sehr anschaulich programmieren...

http://de.wikipedia.org/wiki/Finite-State-Machine
Referenz-URLs