Step 7 Schrittkette auf Fehler abfragen?

Zuviel Werbung?
-> Hier kostenlos registrieren
Aber "Reset_Timer" würde es ja bei Verwendung eines SFB4-Timers nicht geben, richtig?
Da geht's ja nicht darum, ob der Timer einen RESET-Eingang hat oder nicht, sondern wie Du die Startbedingungen für diesen Timer gestaltest.

Es ist also eine boolsche Variable, die Du selbst erstellst und in die Startlogik des Timers einbeziehst.
So wie es Manuel in seinem Beispiel auch aufgezeigt hat.
 
SCL ist nicht meine Welt.
In AWL würde ich folgendes schreiben:
Code:
L Schrittzähler 
L Schrittzähler_alt
<>
= M_Schrittwechsel

U M_Schrittwechsel
R Timer_start

U Timer_start
L KT10.1
SE T_Ueberwachung

U M_Schrittwechsel
S  Timer_start

L Schrittzähler 
T Schrittzähler_alt

Ohne Gewähr, da nur aus der Hüfte.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hier mal ein Beispiel mit Sprungverteiler, das kann man auch schnell für SCL mit Select Case umwandeln.
Da kannst du in jeden Schritt einen Watchdog mit einen Timer und unterschiedlichen Zeiten einbauen.

Code:
NETWORK
TITLE =Sprungverteiler Schrittkette

//------------------------------------------
M004: L     #STEP.Nr; 
      SPL   aE; 

//------------------------------------------
//Schrittkette
      SPA   a0; //Schritt 0   - Initalisierung
      SPA   a1; //Schritt 1   - Anschläge auf
      SPA   a2; //Schritt 2   - warten bis Anschläge oben
      ..
      ..
      SPA   a21; //Schritt 21  - Ablauf beenden
aE:   NOP   0; 
      SPA   work; 

NETWORK
TITLE =Teilablauf: Start Schrittkette

//------------------------------------------   

NETWORK
TITLE =Schritt 0: Initalisierung

a0:   CLR   ; 
      =     #wait.IN; 

      SPA   pNr; 
NETWORK
TITLE =Schritt 1: Anschläge auf

a1:   SET   ; 
      =     "V Anschlag links heben"; 
      =     "V Anschlag rechts heben"; 

      SPA   pNr; 
NETWORK
TITLE =Schritt 2: warten bis Anschläge oben 

//Watchdog starten
a2:   SET   ; 
      =     #wait.IN; 
      L     T#500MS; 
      T     #wait.PT; 

//warten auf Zeitüberschreitung
      U     #wait.Q;
      SPB   Err

//Warten bis Anschläge oben      
      UN    #Anschlaege_oben
      SPB   work; 

      CLR   ; 
      =     #wait.IN; 

      SPA   pNr; 
..
..
..

NETWORK
TITLE =Schritt 16: Ablauf beenden

a21:  UN    #beenden
      SPB   work; 

..
.. 

      SPA   zNr; 

      SPA   pNr; 
NETWORK
TITLE =Schritt zuweisen

//Schrittnummer um "1" hochzählen
pNr:  L     #STEP.Nr; 
      L     1; 
      +I    ; 

//Schrittnummer zuweisen
zNr:  T     #STEP.Nr; 
NETWORK
TITLE =Ende Schrittkette

work: NOP   0; 


NETWORK
TITLE =Wartezeit

      CALL #wait ;


NETWORK
//kein fehler Baustein beenden
BEA

//Fehler zueweisen
Err:    L     #STEP.Nr;
	  T     #Err.Nr;

END_FUNCTION_BLOCK
 
Zurück
Oben