' schrieb:Das war ein Versehen, habe es oben ausgetaucht gegen 8.2
Ah supi, jetzt kann ich es öffen!*freu*
Jetzt muss ich mir das erstma reinziehen ...
![Rolleyes Rolleyes](images/smilies/rolleyes.gif)
das ist ein schönes Beispiel muss ich sagen*lob* das ich es jetzt sogar verstanden hab
![Lol Lol](images/smilies/lvfsmilies/fun/lol.gif)
' schrieb:das ist ein schönes Beispiel muss ich sagen*lob* das ich es jetzt sogar verstanden hab ![Lol Lol](images/smilies/lvfsmilies/fun/lol.gif)
Ja ich habe absichtlich nicht die Bezeichnung "state machine" benutzt, abwohl es so bezeichnet wird. Ich wollte Dich nicht kopfscheu machen. Die Bezeichnung hier in diesem einfachstmöglichen Beispiel etwas hochtrabend.
Mam kann es auch so betrachten. Dies Konstrukt entpricht einem Fußdiagramm mit Verzweigungen. Jeder Case enthält ein Stück fortlaufenden Code, und am Ende ist eine Verzweigung. Dort geht es entweder zum nächten Case (also gewissermassen weiter im Text), oder in einen ganz anderen Case, wobei es auch mehr als zwei Möglichketen geben kann.
Also die Umsetzung eines ganz normalen Programms mit Verweigungen führt auf dieses Konstrukt. Der Unterschied ist nur, daß die LabVIEW-Umsetzung immer dann als "State-Machine" bezeichnet wird. Das ist zwar richtig, aber oftmals sind diese state-machines so simpel gestrickt, daß man sie im Leben außerhalb von LabVIEW noch nicht als solche bezeichnen würde.
ok, das war sehr nett, sonst wär ich wschl. wieda überfordert gewesen :-)
Schön wenn es auch mal einfach erklärt wird!
Hab das jetzt auch mal für meinen Fall versucht zu adaptieren, aber es geht schon wieder schief: ich kann es wieder nicht mit Stop beenden...verflixt, hab ich noch irgendwas vergessen?
Komisch ist auch, dass die LEDs nur im Highlight modus in der richtigen Reihenfolge an und ausgehen, obwohl ich durch meine Pumpenantwort weiß, das er schon im nächsten Case ist...
![Lv82_img Lv82_img](images/smilies/lvfsmilies/lv_icons/lv82_img.jpg)
' schrieb:ich kann es wieder nicht mit Stop beenden...verflixt, hab ich noch irgendwas vergessen?
Ist ja klar, in dem einen Case wird Minuten oder Stunden gewartet, und in dieser Zeit hat der Stop-Knopf keine Chance gelesen zu werden. Aber mit der Konstruktion bis Du jetzt auf dem richtigen Wege, so daß es jetzt recht einfach ist das zu ändern.
Habe auch Schaltverhlten des Stop-Kopfers geändert, damit er beim Lesen von selbt wieder rausspringt.
![Lv82_img Lv82_img](images/smilies/lvfsmilies/lv_icons/lv82_img.jpg)
[
attachment=12723]
' schrieb:Ist ja klar, in dem einen Case wird Minuten oder Stunden gewartet, und in dieser Zeit hat der Stop-Knopf keine Chance gelesen zu werden. Aber mit der Konstruktion bis Du jetzt auf dem richtigen Wege, so daß es jetzt recht einfach ist das zu ändern.
Habe auch Schaltverhlten des Stop-Kopfers geändert, damit er beim Lesen von selbt wieder rausspringt.
[attachment=39972:Zyklusti...sion2_1_.vi]
ah ja alles klar! genial, so hatt ich mir das gedacht! Da werd ich mal weiter den Rest reinbasteln, aber kommen bestimmt noch weitere Fragen
![Big Grin Big Grin](images/smilies/biggrin.gif)
Und da ist auch schon wieder das nächste Problem:
sobald ich in meinem Case "Reaktorhalbierung" den Vergleich von aktuellem Waagenwert und Sollwert in eine while-schleife packe, hängt sich das Programm auf, warum denn das? *seufz*
![Lv82_img Lv82_img](images/smilies/lvfsmilies/lv_icons/lv82_img.jpg)
Du greifst die Daten deiner Waage ja außerhalb der inneren Whileschleife ab. Das ist ja klar, dass das dann ewig, oder nur einmal läuft ...
Schau es dir mal mit dem Lämpchen an, dann siehst du das sofort.
Du musst also die Abfrage des aktuellen Waagewert in die Schleife packen.
edit: oder du machst es so, wie im angehängten beispiel. Da bleibst du solange im gleichen State, bis deine Abfrage true ergibt.
![Lv82_img Lv82_img](images/smilies/lvfsmilies/lv_icons/lv82_img.jpg)
[
attachment=12738]
' schrieb:Du greifst die Daten deiner Waage ja außerhalb der inneren Whileschleife ab. Das ist ja klar, dass das dann ewig, oder nur einmal läuft ...
Schau es dir mal mit dem Lämpchen an, dann siehst du das sofort.
Du musst also die Abfrage des aktuellen Waagewert in die Schleife packen.
edit: oder du machst es so, wie im angehängten beispiel. Da bleibst du solange im gleichen State, bis deine Abfrage true ergibt.
[attachment=39987:Zyklusti...rsion2_2.vi]
Ok, das ding is das ich eigentlich die Waagenwerte die ganze Zeit über erfassen will..also dann doch lieber deine Variante, da is jetzt allerdings das Problem, das ich den Startwert der Waage nicht festsetzen kann mit ner lok. Variable, der läuft also immer dem aktuellen Waagenwert nach, so kann es natürlich auch nich funktionieren. Wie kann ich denn in diesem Case erst einmal den Wert festsetzen und dann den Verleich gegen den aktuellen Wert starten? Oder is es dann besser das gleich hintereinander in zwei verschiedene Cases zu packen?
Würd ich vermutlich gleich in einen eigenen Case packen. Ein Case wo du z.B. sämtliche Initialisierungen durchführst schadet auch nie.
Die Daten würd ich dann statt mit einer lokalen Variable mit einem Schieberegister auslesen.
edit: Du kannst natürlich auch mit deiner Whileschleifen Version kontinuierlich die Waage abfragen. Dazu musst du prinzipiell ja nur dein Waage Vi (das bei mir nur ein Fragezeichen ist) in die Schleife packen. Natürlich weiß ich jetzt nicht, wie dieses SubVi aussieht und ob das überhaupt möglich es so einfach in die Schleife zu packen.