| 
				 
					20.08.2014, 10:01  
				 
				
  Beitrag #1 
			 | 
		 
		
		
			
                                 
					
                                                 
				
                    
                     
                             
                       
                            ElektroAnne 
 
 
                            
                                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?
				 
				
				
				
				
				 
			 | 
                              
                 
				
 | 
		 
		
			| 
				
			 | 
		 
	
 
	
		
			| 
				 
					20.08.2014, 10:14  
				 
				
  Beitrag #2 
			 | 
		 
		
		
			
                                 
					
                                                 
				
                    
                     
                            
 
 
                       
                            NoWay 
 
 
                            
                                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    Vielleicht kannst du das noch etwas genauer umschreiben.
 
Gruß 
NoWay
				  
				
				
				
				
				 
			 | 
                              
                 
				
 | 
		 
		
			| 
				
			 | 
		 
	
 
	
		
			| 
				 
					20.08.2014, 10:24  
				 
				
  Beitrag #3 
			 | 
		 
		
		
			
                                 
					
                                                 
				
                    
                     
                             
                       
                            ElektroAnne 
 
 
                            
                                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 beschreiben  
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.
				  
				
				
				
				
				 
			 | 
                              
                 
				
 | 
		 
		
			| 
				
			 | 
		 
	
 
	
		
			
				
					20.08.2014, 10:34   
(Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2014 10:37  von GerdW.)
				 
				
  Beitrag #4 
			 | 
		 
		
		
			
                                 
					
                                                 
				
                    
                     
                            
 
 
                       
                            GerdW 
 
 
                            
                                ______________ 
                                
                                
 
  
                            
                            
	Beiträge: 17.529 
	Registriert seit: May 2009
	
 
 
LV2019 (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…
				 
				
				
 
				
				
				 
			 | 
                              
                 
				
 | 
		 
		
			| 
				
			 | 
		 
	
 
	
		
			| 
				 
					20.08.2014, 10:59  
				 
				
  Beitrag #5 
			 | 
		 
		
		
			| 
                                 
				
 | 
		 
		
			| 
				
			 | 
		 
	
 
	
		
			| 
				 
					20.08.2014, 12:47  
				 
				
  Beitrag #6 
			 | 
		 
		
		
			
                                 
					
                                                 
				
                    
                     
                             
                       
                            ElektroAnne 
 
 
                            
                                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 Leitung  
				 
				
				
				
				
				 
			 | 
                              
                 
				
 | 
		 
		
			| 
				
			 | 
		 
	
 
	
		
			| 
				 
					20.08.2014, 12:50  
				 
				
  Beitrag #7 
			 | 
		 
		
		
			
                                 
					
                                                 
				
                    
                     
                            
 
 
                       
                            GerdW 
 
 
                            
                                ______________ 
                                
                                
 
  
                            
                            
	Beiträge: 17.529 
	Registriert seit: May 2009
	
 
 
LV2019 (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!
				  
				
				
 
				
				
				 
			 | 
                              
                 
				
 | 
		 
		
			| 
				
			 | 
		 
	
 
	
		
			| 
				 
					20.08.2014, 12:51  
				 
				
  Beitrag #8 
			 | 
		 
		
		
			
                                 
					
                                                 
				
                    
                     
                            
 
 
                       
                            Lucki 
 
 
                            
                                Tech.Exp.2.Klasse 
                                
                                
 
  
                            
                            
	Beiträge: 7.699 
	Registriert seit: Mar 2006
	
 
 
LV 2016-18 prof. 
1995 
DE 
 
01108 
Deutschland 
			 | 
                              
RE: Schleife Zustandsautomat 
				
					
 
 
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.
      QSM1.vi (Größe: 9,46 KB / Downloads: 494) 
				  
				
				
				
				
				 
			 | 
                              
                 
				
 | 
		 
		
			| 
				
			 | 
		 
	
 
	
		
			| 
				 
					21.08.2014, 10:18  
				 
				
  Beitrag #9 
			 | 
		 
		
		
			
                                 
					
                                                 
				
                    
                     
                             
                       
                            ElektroAnne 
 
 
                            
                                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 ?
				 
				
				
				
				
				 
			 | 
                              
                 
				
 | 
		 
		
			| 
				
			 | 
		 
	
 
	
		
			
				
					21.08.2014, 10:23   
(Dieser Beitrag wurde zuletzt bearbeitet: 21.08.2014 10:24  von GerdW.)
				 
				
			 | 
		 
		
		
			
                                 
					
                                                 
				
                    
                     
                            
 
 
                       
                            GerdW 
 
 
                            
                                ______________ 
                                
                                
 
  
                            
                            
	Beiträge: 17.529 
	Registriert seit: May 2009
	
 
 
LV2019 (LV2021) 
1995 
DE_EN 
 
10××× 
Deutschland 
			 | 
                              
RE: Schleife Zustandsautomat 
				
					Hallo Anne, 
was Ludwig in der Eile (  ) 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…
				  
				
				
 
				
				
				 
			 | 
                              
                 
				
 
 
				 
 | 
		 
		
			| 
				
			 | 
		 
	
 
 |  |