LabVIEWForum.de - Zustandsabfrage in state machines

LabVIEWForum.de

Normale Version: Zustandsabfrage in state machines
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Forum,

ich habe Probleme mit meiner state machine. Der Zustand, indem ich mich befinde haengt von zwei Dingen ab:

1. Dem ausgewaehlten Wert in einem System-Ring
2. Dem gedrueckten Button

Nun weiss ich nicht, wie ich meine state machine aufbauen soll. Ich frage mal nach zwei Moeglichkeiten, ohne andere auschliessen zu wollen:

a) Der Zustand aller Buttons wird in einem Event-case abgefragt, welcher sich wiederum in einem "Leerlauf-case" einer "case-structure" befindet. Diese "case-structure" bildet mit der While-Schleife die state machine, von der hier die Rede ist.
Die vorkommenden "cases" waeren dann 0=Leerlauf und eben die uebrigen "cases", die ueber den System-Ring gewaehlt werden koennen

b) Sowohl jeder Button, als auch jeder im System-Ring vorkommende Eintrag stellen jeweils EINEN "case" der "case-structure" dar, die zusammen mit der While-Schleife meine state machine ausmacht.

Ich habe bisher auf die Variante a) gesetzt, jedoch habe ich Probleme bekommen. In meinem System-Ring kann ich Messreihen auswaehlen, die lange dauern und in Schleifen abgearbeitet werden. Ich muss jedoch zu jedem Zeitpunkt in der Lage sein, MEHRERE BUTTONS AUF EIN "VALUE CHANGE"-EVENT ABFRAGEN ZU KOENNEN, NOCH WAEHREND ICH MICH IN EINER MESSUNG / EINEM CASE DER STATE MACHINE BEFINDE.

Ich habe viele Beitraege im Forum gelesen, jedoch nicht das grundlegende Prinzip dieser Unterschiede in einer state machine verstanden. Vielleicht koennt ihr mir ganz konkret zu den von mir beschriebenen Faellen a) und b) etwas helfen, bzw. schreiben, was ihr sonst davon haltet.

Vielen Dank im Voraus und Gruesse aus dem Labor

Boris
Mach' mal bei Deinen Events das im Screenshot gezeigte Häkchen raus.

[attachment=13669]

Gruß Markus
Ok, habe ich gemacht.

Jetzt kann ich von jedem Case aus jeden Button betaetigen, zumindest habe ich das jetzt so verstanden. Zwei prinzipielle Frage:

Warum ist es moeglich aus einem Case x heraus einen Button zu betaetigen, wenn der Event-Case, der diesen Button enthaelt, sich im Leerlauf-Case befindet. Man also aus dem Case x heraus gar nicht auf die Vorgaenge zugreifen kann, die stattfinden sollen, wenn der Button betaetigt wird. Eigentlich muesste LabVIEW doch dann in den Leerlauf-Case zurueckspringen...?

Etwas anderes: Wenn ich versuche ein sub-Vi durch Betaetigen verschiedener Buttons zu beenden muss ich die Referenzen dieser Buttons an das sub-Vi heranfuehren. Aber wie erzeuge ich eine OR-Bedingung fuer mehrere Referenzen?

Danke Dir, ich habe bisher schon viele Deiner Kommentare gelesen.

Boris
Eines wollte ich noch sagen:

wenn jemand etwas auf meine Fragen antworten moechte, muss er sich nicht unbedingt die Muehe machen und ein VI mit einer state machine posten.
Ich denke es gibt mittlerweile genug Beispiele fuer state machines im Forum. Mein Problem ist eher, dass ich die Abfrage der Buttonzustaende in den
einzelnen Cases nicht verstanden habe.

Gruss

Boris
Referenz-URLs