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:

Schleife Zustandsautomat



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!

20.08.2014, 10:01
Beitrag #1

ElektroAnne Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2014

2010
2013
kA


Deutschland
Schleife Zustandsautomat
Hallo liebes Forum !

Ich habe folgendes Problem. Zum Aufbau eines Messplatzes hab ich einen Zustandsautomaten gebaut.
Der Messplatz umfasst mehrere Komponenten (Zustande) die je nach Usereingabe mehrfach ausgeführt werden müssen.
Ich weiß nun nicht so recht wie ich dies umsetzen soll, es wäre "praktisch" wie eine For-Schleife aber nur um mehrere Zustände.
Habt ihr eine Idee?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.08.2014, 10:14
Beitrag #2

NoWay Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 241
Registriert seit: Jul 2013

LV-2019
2013
EN


Deutschland
RE: Schleife Zustandsautomat
Hallo ElektroAnne.

Die simpelste Methode wäre folgende, denke ich: Du baust dir ein Enum (TypeDef), mit allen Zuständen, dei du brauchst. Innerhalb der Zustände verwendest du das Enum dann mittels Schieberegister, um gezielt Zustände aufzurufen. Wenn die Zustände nicht einfach nur stumpf nacheinander aufgerufen werden sollen, braucht es natürlich noch eine Logik innerhalb des jeweiligen Zuständes, über die der nächste Zustand bestimmt wird.

Es ist schwer, dein konkretes Problem aus der Beschreibung herauszulesen. Für mich jedenfalls Tongue Vielleicht kannst du das noch etwas genauer umschreiben.

Gruß
NoWay
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2014, 10:24
Beitrag #3

ElektroAnne Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2014

2010
2013
kA


Deutschland
RE: Schleife Zustandsautomat
Ich kann es ja nochmal detailierter versuchen zu beschreibenSmile

Also sagen wir ich hab Zustand1, Zustand2, Zustand3 und Zustand4

Der User gibt dem Programm als Anweisung die Zahl 4.

Das Programm soll dann folgend ablaufen: Zustand1 läuft normal ab. Zustand2 und Zustand3 sollen jetzt jedoch 4-mal hintereinander ablaufen. Und danach soll dann Zustand 4 kommen.

So ist mein Plan, jedoch scheitert es an der Umsetzung.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2014, 10:34 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2014 10:37 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Schleife Zustandsautomat
Hallo Anne,

dann baust du dir ein kleines VI, das mit der Eingabe "4" ein Array wie folgt erstellt:
Z1, Z2, Z2, Z2, Z2, Z3, Z3, Z3, Z3, Z4

Dazu brauchst du zweimal InitArray und einmal BuildArray. Fertig…

Dieses Array ist dann die Vorgabe für deine StateMachine: einfach stupide einen Zustand nach dem anderen aus dem Array abarbeiten…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2014, 10:59
Beitrag #5

NoWay Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 241
Registriert seit: Jul 2013

LV-2019
2013
EN


Deutschland
RE: Schleife Zustandsautomat
Oder tatsächlich mit forschleife.


Angehängte Datei(en)
10.0 .vi  state.vi (Größe: 7,65 KB / Downloads: 421)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2014, 12:47
Beitrag #6

ElektroAnne Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2014

2010
2013
kA


Deutschland
RE: Schleife Zustandsautomat
Danke für eure Hilfe.

NoWay, so weit hab ich dein Programm verstanden.
Jetzt ist nur noch mein Problem, wie stell ich das an, das es so ablaufen würde:

Zustand 1, Zustand 2, Zustand 3, Zustand 2, Zustand 3, Zustand 4 (Usereingabe 2)

Das die Usereingabe praktisch angibt wie oft Zustand 2 und Zustand 3 hintereinander ablaufen sollen...
Da steh ich noch etwas auf der LeitungBahn
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.08.2014, 12:50
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Schleife Zustandsautomat
Hallo Anne,

was ist daran so schwierig?
Code:
x1 = InitArray(Z2, Anzahl)
x2 = InitArray(Z3, Anzahl)
x3 = 1DArrayÜberführen(x1, x2)
x4 = BuildArray(Z1, x3, z4)
Fertig!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2014, 12:51
Beitrag #8

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Schleife Zustandsautomat

Akzeptierte Lösung

Hier bietet sich eine "Queue driven State Machine" (QSM) an, siehe Beispiel. Der Vorteil offenbart sich natürlich erst, wenn Du mehr als nur den "Ablauf Nr 4" im Programm hast.

10.0 .vi  QSM1.vi (Größe: 9,46 KB / Downloads: 429)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.08.2014, 10:18
Beitrag #9

ElektroAnne Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2014

2010
2013
kA


Deutschland
RE: Schleife Zustandsautomat
Nochmal eine kurze Frage zu dem geposteten Vi.
Ich würde gern noch weitere Zustände hinzufügen.
Dies funktioniert allerdings durch einfaches hinzufügen im State und im Case nicht.
Kann mir jemand sagen, wie ich da vorgehen muss ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.08.2014, 10:23 (Dieser Beitrag wurde zuletzt bearbeitet: 21.08.2014 10:24 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Schleife Zustandsautomat
Hallo Anne,

was Ludwig in der Eile (Smile) vergessen hat zu erwähnen: ein Enum sollte (so gut wie immer) als Typdefinition angelegt werden.

Also: mach aus dem Enum mit den States in Ludwigs Beispiel-VI ein typdefiniertes Enum und ersetze alle Instanzen dieses Enums durch die Typdefinition. Wenn das erledigt ist, öffnest du die Typdefinition erneut und fügst einen neuen Zustand (z.B. Z5) hinzu (speichern nicht vergessen). In allen Instanzen der Typdefinition taucht dieser Zustand nun auch auf und du kannst ihn per Queue versenden. Jetzt noch einfach einen neuen Case dafür im Consumer einrichten und fertig. Tipp hierzu: entferne aus der Consumer-Case-Struktur den Standard ("Voreinstellung"), dann bekommst du eine Fehlermeldung, wenn du für einen State im Enum noch keinen Case angelegt hast…

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
  Zustandsautomat oder QMH meta_ir 2 3.725 19.01.2017 08:52
Letzter Beitrag: meta_ir
  Zustandsautomat beenden flizzer82 7 6.214 22.09.2016 09:33
Letzter Beitrag: jg
  Zustandsautomat geht nicht in nächsten Schritt mrgigi 4 4.808 30.09.2015 13:19
Letzter Beitrag: panduci
  Flache Sequenz/Zustandsautomat C.R. 3 5.082 20.09.2014 16:05
Letzter Beitrag: Lucki
  Zustandsautomat An -> Aus -> Zeit messen stefan_huaba 6 6.233 05.09.2013 18:41
Letzter Beitrag: Trinitatis
  Zustandsautomat (Anzeige-Element aus einem Frame) David_EA 3 4.164 04.09.2013 09:02
Letzter Beitrag: David_EA

Gehe zu: