| 
	
		
			| 
					14.02.2018, 16:49  
				 |  
			| 
					
                                                 |   IchSelbst
   LVF-Guru
 
      
 
 Beiträge: 3.708
 Registriert seit: Feb 2005
 
 11, 14, 15, 17, 18
 -
 DE
 
 97437
 Deutschland
 
 | RE: Programmstop 
					 (14.02.2018 10:14 )MartinNewBee schrieb:  wie programmiere ich einen quasi "Notaus" (ich weiß so was sollte nicht programmiert sondern gebaut werden). 
Was willst du haben: Einen Notaus bzw. Nothalt oder nur einen ganz normalen "Ablauf sofort beenden" (es gäbe da noch "Ablauf nach Zyklus beenden").
 
Für beide Fälle ist es ratsam, die Ablaufsteuerung als Schrittkette zu gestalten. Arbeite die Schrittkette in einem festgelegten Raster ab, z.B. 50ms. Jeder einzelne Schritt einer Schrittkette darf nur einen Bruchteil der Rasterzeit der Schrittkette benötigen. Sollte eine definierte oder undefinierte Wartezeit benötigt werden, so muss diese Zeit eben ohne explizite Wartefunktion programmiert werden. Man könnte z.B. die Schrittkettenaufrufe zählen. Wenn du jetzt einen "Abbruch sofort" haben willst, muss du lediglich nach jedem einzelnen Schritt (also außerhalb der Case-Sequenz) die Ende-Bedingung abfragen. Ist sie eingetreten, setzt du den nächsten Schritt der Schrittkette einfach auf den Schritt "Ablauf sofort beenden".
				 
 
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller). 
				
				 |  
    |  
			|  |  
	
		
			| 
					17.02.2018, 09:15  (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2018 09:36  von Lucki.) |  
			| 
					
                                                 |   Lucki
   Tech.Exp.2.Klasse
 
   
 Beiträge: 7.699
 Registriert seit: Mar 2006
 
 LV 2016-18 prof.
 1995
 DE
 
 01108
 Deutschland
 
 | RE: Programmstop 
					Ergänzung zum Beitrag von THL:Diese Programmstruktur allein ist aber noch keine Gewähr, dass ein VI sofort beendet wird. Damit wird zwar der Stop-Knopf sofort gelesen, es wird aber nicht die Auführung eines vielleicht sekundenlangen Waits abgebrochen.
 Das "Zerstückeln" eines langen Waits, wenn es im VI vorkommt, in mehrere kleinere Teile wird damit nicht überflüssig gemacht.
 
 Vieleicht auch interessant: Die Funktionen "Occurrences" (mit Meldern ginge es auch) lassen sich als unterbrechbares "Wait" verwenden. Die Funktion "O. Warten" verhält sich exakt wie ein "Wait", läßt sich aber mit der Funktion "O. Auslösen" jederzeit abbrechen.
 
				
				 |  |  
			|  |  
	
		
			| 
					19.02.2018, 14:49  
				 |  
			| 
					
                                                 | THL
   LVF-Gelegenheitsschreiber
 
   
 
 Beiträge: 111
 Registriert seit: May 2011
 
 2012
 2009
 EN
 
 
 Deutschland
 
 | RE: Programmstop 
					 (17.02.2018 09:15 )Lucki schrieb:  Ergänzung zum Beitrag von THL:Diese Programmstruktur allein ist aber noch keine Gewähr, dass ein VI sofort beendet wird. Damit wird zwar der Stop-Knopf sofort gelesen, es wird aber nicht die Auführung eines vielleicht sekundenlangen Waits abgebrochen.
 Das "Zerstückeln" eines langen Waits, wenn es im VI vorkommt, in mehrere kleinere Teile wird damit nicht überflüssig gemacht.
 
Da hatte ich mich wohl missverstänlich ausgedrückt. In meinem Beispiel ersetzt  das Timeout der Ereignisstruktur das Wait. Es kommt also gar kein Wait vor, auf das man warten müsste. 
Mein Vorschlag ist natürlich nur für solche Fälle gedacht gewesen, wo in (langen) regelmässigen Abständen ein Ereignis ausgelöst wird (welches selbst kein Wait mehr enthält).
				 
				
				 |  |  
			|  |  
	
		
			| 
					19.02.2018, 17:26  (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2018 17:28  von Lucki.) |  
			| 
					
                                                 |   Lucki
   Tech.Exp.2.Klasse
 
   
 Beiträge: 7.699
 Registriert seit: Mar 2006
 
 LV 2016-18 prof.
 1995
 DE
 
 01108
 Deutschland
 
 | RE: Programmstop 
					@THL 
Ich wollte Dich nicht korrigieren, sondern nur ergänzen, denn bei andern VIs -nicht bei Deinem Beispiel - mit mehreren unterschiedlich langen Waits ist diese Struktur nicht gut ausbaufähig. Entweder man nimmt dann außerdem Wait-Funktionen - oder man verlagert das Warten nicht in den Sender der Queue, sondern in die einzelen Emfänger. (Und da aber mehrere Empfänger bei Queues nicht verwendet werden sollen, wären dann Melder - die hier gar nichts zu melden haben - zu verwenden.) 
Also so:
  
				
				 |  |  
			|  |  |  |