INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Queued SM



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!

12.10.2011, 15:44
Beitrag #1

Schwand Offline
LVF-Stammgast
***


Beiträge: 276
Registriert seit: Nov 2007

2014
2006
DE

31789
Deutschland
Queued SM
Hallo zusammen,

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.


Angehängte Datei(en)
9.0 .vi  Queued SM.vi (Größe: 14,56 KB / Downloads: 171)

9.0 .ctl  state.ctl (Größe: 3,89 KB / Downloads: 146)

0.0 .zip  Queued SM_2_2009.zip (Größe: 18,55 KB / Downloads: 149)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.10.2011, 20:09 (Dieser Beitrag wurde zuletzt bearbeitet: 12.10.2011 20:12 von schrotti.)
Beitrag #2

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
RE: Queued SM

Akzeptierte Lösung

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.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.10.2011, 07:41
Beitrag #3

Schwand Offline
LVF-Stammgast
***


Beiträge: 276
Registriert seit: Nov 2007

2014
2006
DE

31789
Deutschland
RE: Queued SM
Moin Schrotti,

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...

Grüßle
S.


Angehängte Datei(en)
9.0 .vi  Queued SM_2.vi (Größe: 16,65 KB / Downloads: 170)

9.0 .ctl  state.ctl (Größe: 3,88 KB / Downloads: 144)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.10.2011, 22:52
Beitrag #4

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
RE: Queued SM
Genau so meine ich das:

Noch ein Tipp: Du kannst Primitiv "Fehler zusammenfassen" aufziehen auf so viele Eingänge, wie benötigt.


Angehängte Datei(en) Thumbnail(s)
   

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.10.2011, 07:42
Beitrag #5

Schwand Offline
LVF-Stammgast
***


Beiträge: 276
Registriert seit: Nov 2007

2014
2006
DE

31789
Deutschland
RE: Queued SM
(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. Fragezeichen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.10.2011, 12:13
Beitrag #6

Schwand Offline
LVF-Stammgast
***


Beiträge: 276
Registriert seit: Nov 2007

2014
2006
DE

31789
Deutschland
RE: Queued SM
Hätte da noch eine Frage zur Q_SM:

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?

Grüßle
S.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.10.2011, 20:42
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Queued SM
(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. Fragezeichen
Gut möglich, da es die "Merge-Errors"-Funktion erst seit Lv10 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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.10.2011, 16:25
Beitrag #8

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
RE: Queued SM
Ich hab gar nicht darauf geachtet, dass das VI LV9 ist.

Jedenfalls kannst du ein Benutzereignis auch programmatisch auslösen, wobei es hierfür zwei Möglichkeiten gibt.
  1. Mittels eines Eigenschaftsknotens den Wert eines Bedienelements signalisierend ändern.
  2. Ein Benutzerereigniss erstellen, regestrieren und in der Eventstruktur einen entsprechenden Case erzeugen


Ich bevorzuge Zweites, da ich es für übersichtlicher und schöner halte.


Angehängte Datei(en)
9.0 .vi  Queued SM_2(1).vi (Größe: 27,49 KB / Downloads: 158)

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2011, 08:31
Beitrag #9

Schwand Offline
LVF-Stammgast
***


Beiträge: 276
Registriert seit: Nov 2007

2014
2006
DE

31789
Deutschland
RE: Queued SM
Ok, so hab ich es ja auch gemacht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Queued State Machine: IDLE Optimierung ALuehmann 3 4.931 14.02.2017 14:00
Letzter Beitrag: HVo
Question Frage zu "queued state machine" Architektur joptimus 4 6.011 05.08.2016 14:34
Letzter Beitrag: joptimus
  Queued Message Handler Design galilio 3 6.248 14.07.2016 15:34
Letzter Beitrag: Freddy
  Queued State Machine Zeitverzögerung NISI 5 5.568 03.06.2015 16:39
Letzter Beitrag: NISI
  Queued State Machine - DAQ in Unterprogramm ständig auswerten und darauf reagiern Aspen 1 3.830 23.01.2015 11:09
Letzter Beitrag: Aspen
  Frage zu Queued state machine montanaro 5 6.188 15.03.2013 12:38
Letzter Beitrag: montanaro

Gehe zu: