OK, Mit einem Taster geht das.
Hier mal ein Beispiel das auch in einen Anwenderbaustein gepackt werden kann.
// Takttimer 1s
T01 (
EN := true,
RE := T01Q1,
ST := ,
I1 := T#990ms,
I2 := ,
Q1 => ,
QV => );
MB03:= 10; //wert in Sek für eine volle Fahrt (Bitte anpassen, max 254sec)
//Tasterflanke erzeugen
//M01= Flankenmerker, M02 = Hilfsmerker
M01:= I01 AND NOT M02;
M02:= I01;
//Schrittschaltwerk
CASE MB02 OF //MB02= Schritt, MB04= Fahrzeitzähler
//Initialisieren
0: Q63:= FALSE;//hoch
Q64:= FALSE;//runter
MB02:=1;
MB04:= 0;
// Stop, warten auf Flanke
1: Q63:= FALSE;
Q64:= FALSE;
IF M01 THEN
MB02:= 2;
END_IF;
// Hochfahren
2: Q63:= TRUE; //hoch
Q64:= FALSE;//runter
IF T01Q1 THEN
MB04:= MB04 + 1; //Fahrzeit hochzählen
END_IF;
IF (MB04 > MB03) or M01 THEN //Fahrzeit erreicht oder Tastflanke
MB04:= 0; //Zähler zurücksetzen
MB02:= 3; //gehe zu stop
END_IF;
3: //Stop, warten auf Flanke
Q63:= FALSE;
Q64:= FALSE;
IF M01 THEN
MB02:= 4;
END_IF;
// Runterfahren
4: Q63:= FALSE; //hoch
Q64:= TRUE; //runter
IF T01Q1 THEN
MB04:= MB04 + 1; //Fahrzeit hochzählen
END_IF;
IF (MB04 > MB03) or M01 THEN //Fahrzeit erreicht oder Tastflanke
MB04:= 0; //Zähler zurücksetzen
MB02:= 1; //gehe zu stop
END_IF;
ELSE
MB02:=0; //gehe zu INIT
END_CASE;
Gruß Thomas