LabVIEWForum.de
State Machine macht mit selben Funktionen jedesmal etwas anderes - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: State Machine macht mit selben Funktionen jedesmal etwas anderes (/Thread-State-Machine-macht-mit-selben-Funktionen-jedesmal-etwas-anderes)



State Machine macht mit selben Funktionen jedesmal etwas anderes - anuller - 07.04.2012 12:43

Hallo!

Ich habe nur eine kleine Frage zur Funktionsfähigkeit von Statemachines.

Ich muss ein Programm schreiben um verschiedene Tests automatisch ablaufen zu lassen.
Das funktioniert soweit ganz gut. Ich habe es in einer gestapelten Frequenz realisiert die allerdings recht lang ist.
Es gibt verschiedene Arten von Funktionen die sich immer wiederholen. Das einzige was anders ist sind die Werte die ausgegeben werden.

Ich habe immer die gleichen Testschritte die sich allerdings mit anderen Werten wiederholen. Jetzt ist es so.

Prüfpunkt1 Begin:
Case1: Steuerbefehlausgabe 0010
Case2:Sinussignalausgabe 2V
Case3:Sinussignalmessung 1V
Case4:Auswertung 1V ok???
Case5:Speichern Excel Spalte1 PrüfPunkt1
Prüfpunkt1 Ende:

Prüfpunkt2 Begin:
Case6:Steuerbefehlausgabe 0100
Case7:Sinussignalausgabe 3V
Case8:Sinussignalmessung 4V
Case9:Auswertung 4V ok???
Case10:Speichern Excel Spalte2PrüfPunkt2
Prüfpunkt2 Ende:

Prüfpunkt3 Begin:
...

Meine Frage ist jetzt, ob ich die Werte für die Steuerbefehle, Signalausgabe, Signalmessung, Auswertung, Speichern irgendwo z.B. aus einer Tabelle oder einem eigenen Case herholen kann??? Dann ist das Programm kürzer und ich brauche jedes vi (z.B. Steuerbefehlausgabe) nur einmal programmieren.

Eine Statemachine kann ja immer vor und zurück springen... vielleicht kann die mein Problem auch lösen.

Bisher habe ich es geschafft mit `ner Case-Machine von Case1>Case2>Case3>Case4>Case5 zu springen und dann wieder zu case1... aber da stehen dann ja immer noch die Werte z.B. 0010 drin... beim zweiten Aufruf soll da aber 0100 drin stehen usw...

Vielleicht gehts ja so???

Case1: WertePrüfpunkt1
Case2: WertePrüfpunkt2
Case3: Werteprüfpunkt3
Case4:Steuerbefehlausgabe xxx
Case5:Sinussignalausgabe xxx
Case6:Sinussignalmessung xxx
Case7:Auswertung xxx ok???
Case8:Speichern Excel Prüfpunkte1-3

Ich bräuchte die Statemachine auch, um später die einzelnen Prüfpunkte auch mal nur einzeln aufräumen zu können.

Ich glaube Labview scheitert an meinen Wünschen... :-)

Danke!


RE: State Machine macht mit selben Funktionen jedesmal etwas anderes - Lucki - 07.04.2012 13:44

Wenn es "soweit ganz gut" funktioniert, dann bietet es sich doch an, das VI mal hochzuladen, dann lässt sich leichter etwas erklären.
Vorher würde ich noch empfehen, die Überschrift wahr werden zu lassen, und für die Testabläufe tatsächlich eine state-machine statt - wie im Text ausgeführt - eine "gestapelte Frequenz" (Sequenz ???) zu verwenden.
Richtig müßte es auch heißen "State machine soll mit selben Funktionen immer etwa anderes machen" - so wie Du es fomuliert hast sieht es aus als ob Labview nicht ordentlich funktioniert.
Und da wir gerade beim Meckern sind:
Zitat:Ich glaube Labview scheitert an meinen Wünschen... :-)
Da hast Du Glück, weil es scherzhaft gemeint ist. Manche Anfänger, die mit ihrem VI nicht gleich zurechtkommen, leiden aber echt unter "pathologischem Selbstbewußtsein" und starten ihren Einstieg im LVF mit der Behauptung, dass irgendetwas unter Labview prinzipiell nicht geht und dass Labview diesen oder jenen Mangel hat.


RE: State Machine macht mit selben Funktionen jedesmal etwas anderes - ahlers01 - 08.04.2012 07:59

Schreib eine subVI, die für jeden Prüfpunkt mit den entsprechenden Parametern aufgerufen wird:


Etwa so (und natürlich in LabVIEW geschrieben):


subVI pruefen(inputs: p1,p2,p3,n; outputs: OK-Flag)
{
Steuerbefehlausgabe p1;
Sinussignalausgabe p2;
Sinussignalmessung p3;
Auswertung p3 OK-flag;
Speichern Excel Spalte_n PrüfPunkt_n;
}

Hauptprogram:
For i = 1 to N
pruefen(p1[i],p2[i],p3[i],OK?)
End;


RE: State Machine macht mit selben Funktionen jedesmal etwas anderes - anuller - 08.04.2012 18:39

Oh danke. Das werde ich mal ausprobieren.

Anbei mein erster State-Machine-Entwurf zur Bereicherung in diesem Forum.
Jetzt weiß jeder weiß was ich meine.
Doch sie läuft noch nicht rund... wenn jemand sofort sieht warum bin ich darüber sehr dankbar.

Die Idee ist eben, nur einen Frame für Steuer, Mess und Auswertung zu haben, da die Abläufe immer dieselben sind, nur die Werte ändern sich eben pro Prüfung. Im Beispiel sind es drei Prüfungen. (Fast alle Werte sind allerdings erstmal auf 0 gesetzt sind, was ja nicht immer so sein wird.)

Danke für eure Hilfe.


RE: State Machine macht mit selben Funktionen jedesmal etwas anderes - Lucki - 09.04.2012 17:31

Hier ein Vorschlag, aber nur das Gerüst für den Testablauf, keine Inhalte der Test-Cases. Es wird bei Start eine Warteschlange mit allen Cases erzeugt. In einer zweiten Schleife werden die Warteschlangen-Elemente - und damit die Tests - dann abgearbeitet.
Eine Redundanz fiel mir auf: Bei einer lokalen Variablen ist der Speicherplatz das entsprechende Bedien/Anzeigeelement selbst. Wenn man mit einer lokalen Variable lesen will, so liest man das direkt aus dem Element. Es ist nicht nötig, vorher mittels einer anderen lokalen V desselben Elements etwas reinzuschreiben. Bei der GB wäre das so, hier nicht.


RE: State Machine macht mit selben Funktionen jedesmal etwas anderes - chrissyPu - 10.04.2012 09:37

Sehr schick, Lucki. Erinnert mich an meinen Core III - Kurs... Suche nur noch eine Anwendung, wo ich das mal in der Form schön anwenden kann...


RE: State Machine macht mit selben Funktionen jedesmal etwas anderes - Lucki - 10.04.2012 12:42

(10.04.2012 09:37 )chrissyPu schrieb:  Suche nur noch eine Anwendung, wo ich das mal in der Form schön anwenden kann...
Da geht es Dir genau so wie mir. Habe zwar nie einen Kurs besucht, habe aber in letzer Zeit ein paar Beispiele zur QSM (Queue Driven State Machine) studiert. Bin von dieser Struktur begeistert, jetzt muss mir nur noch die richtige Anwendung dafür über den Weg laufen. Oder so: Da die QSM außerordentlich universell ist, wird die nächst beste Anwendung, egal wie, als QSM geschrieben.