Step 7 Schrittverzögerung mit SCL

Code:
[FONT=Courier New]Pause (IN:= Pausenstart, PT:= T#4s);
Pausenstart:= SEL(G:= Pause.Q, IN0:= Pausenstart, IN1:= False);


IF first THEN
    first:=0;
    SM[0]:=1;
    [COLOR="#FF0000"]Pausenstart:= true[/COLOR];
END_IF;


IF SM[0] AND Pause.Q THEN
    IF IN1 THEN
        //ANWEISUNG
        SM[0]:=0; 
        SM[1]:=1;
        [COLOR="#FF0000"]Pausenstart:= true[/COLOR];
    END_IF;
END_IF;

IF SM[1] AND Pause.Q THEN
    IF IN2 AND NOT Pause.Q THEN     
        OUT1:=0;
        SM[1]:=0;
        OUT2:=1;
        IF [COLOR="#800080"]Pause2.Q[/COLOR] THEN
            M2.1:=1;
            SM[2]:=1;
            [COLOR="#FF0000"]Pausenstart:= true[/COLOR];
        END_IF;
    END_IF;
END_IF;

[COLOR="#800080"]Pause2[/COLOR] (IN:= OUT2, PT:= T#4s);

IF SM[2] AND Pause.Q THEN
    IF IN3 THEN
        //ANWEISUNG
        SM[2]:=0;
        SM[3]:=1;
    END_IF;
END_IF;[/FONT]
Du mußt halt sicher gehen, das der Timer zwischen den einzelnen Benutzungen auch wirklich zurückgesetzt wird.
Vom Schritt 1.1 zu 2 wäre das nicht unbedingt sicher gestellt, deshalb würde ich dort einen separaten Timer benutzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man kann direkt bei jedem Pausenstart den Pause-Timer rücksetzen oder mit IN:=False aufrufen, dann funktioniert das mit nur 1 Timer auch nach Zwischenschritten die weniger als 1 Zyklus lang sind.

Harald
 
Zurück
Oben