Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
für mein anstehendes Projekt freunde ich mich gerade mit Queues im Allgemeinen und der Queued StateMachine im Besonderen an. Anbei ein Beispiel, das ich auf NI.com gefunden habe und ein angepasstes. Das Original hatte nur einen "Process"-State und hat diesen nach "Halt" mit "Resume" immer wieder aufgerufen. Wenn man jetzt allerdings mehrere States hat, die auch pausierbar sein sollen, würde das Programm dann ja immer wieder in dem "Process"-State anfangen.
Ist es sinnvoll, dies mit einer FGV zu umgehen, wie in dem zweiten Beispiel? Oder gibt es auch eine bessere Methode?
Grüßle
S.
Anzeige
12.10.2011, 20:09 (Dieser Beitrag wurde zuletzt bearbeitet: 12.10.2011 20:12 von schrotti.)
Du möchtest nach dem Zustand "Halt" wieder dort weitermachen, wo du vor dem Übergang in "Halt" warst? Sehe ich das richtig? Wenn dem so ist, dann greif dir im Zustand "Halt" bei "Queue leeren (Flush Queue)" den Ausgang "Verbleibende Elemente", schreib das in ein Register. Im Zustand "Resume" kannst schreibst du die Elemente wieder in die Queue, wobei dir eine For-Loop hilft.
BTW: Das VI Process_FGV.vi ist keine FGV sondern eine simple globale Variable.
meinst du in etwa so? Ich hatte in meinem Beispiel ja erst keinen Resume-State drin, das funktioniert aber augenscheinlich sehr gut. Dann brauche ich zumindest meine "FGV" (das muss ich mir wohl noch mal anschauen) nicht...
(19.10.2011 22:52 )schrotti schrieb: Genau so meine ich das:
Noch ein Tipp: Du kannst Primitiv "Fehler zusammenfassen" aufziehen auf so viele Eingänge, wie benötigt.
Ich könnte schwören, dass ich das schon so gemacht hab...die Funktion kenne ich eigentlich. Vielleicht hat da was beim Zurückspeichern auf LV2009 nicht recht geklappt, reproduzieren kann ich das aber grade nicht.
Wenn die SM durchgelaufen ist, das Programm also fertig ist und in den Stop-State springt, wird die Consumer-Schleife beendet. Die Producer-Schleife läuft aber weiter. Kann ich dann ein Benutzerereignis in dem Stop-State erzeugen, das den Stop-Event in der Producer-Schleife auslöst und somit auch diese beendet oder gibt es da eine bessere Alternative?
(20.10.2011 07:42 )Schwand schrieb: Ich könnte schwören, dass ich das schon so gemacht hab...die Funktion kenne ich eigentlich. Vielleicht hat da was beim Zurückspeichern auf LV2009 nicht recht geklappt, reproduzieren kann ich das aber grade nicht.
Gut möglich, da es die "Merge-Errors"-Funktion erst seit gibt. Vorher gab es "nur" das hier: Merge Errors LV-2009
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!