Ich hab dir mal einen Programmentwurf gemacht.
//Taktgeber, 100ms Flanke erzeugen
T01 (
EN := NOT T01Q1,
RE := ,
ST := ,
I1 := T#95ms,
I2 := ,
Q1 => ,
QV => );
//Schrittkette Ablauf
// MW05 ist die interne Zählvariable
CASE MB07 OF
//Initialisierung, alles resetten
0: MW05:= 0; //Zählvariable resetten
Q01:= false;
Q02:= false;
Q03:= false;
Q04:= false;
Q17:= false;
Q18:= false;
MB07:=1;
//Startbereit, warte auf start
1: IF I02 AND I03 AND I01 THEN
M01:= true;
MB07:= 2;
END_IF;
//K12 Einschalten nach 1s
2: IF NOT I02 OR NOT I03 THEN //Stop erkannt
MB07:=15;
END_IF;
IF T01Q1 THEN //Takte hochzählen
MW05:= MW05 + 1;
END_IF;
IF MW05 > 10 THEN //nach 1s
Q03:= true; //Hydraulik freigeben
MW05:= 0; //Zählvariable resetten
MB07:= 3; //weiter zu 3
END_IF;
//Hauptantrieb 3s rückwärts
3: IF NOT I02 OR NOT I03 THEN //Stop erkannt
MB07:=15;
END_IF;
IF T01Q1 THEN //Takte hochzählen
MW05:= MW05 + 1;
END_IF;
IF MW05 > 10 THEN //nach 1s
Q02:= true; //Hauptantrieb rückwäts ein
END_IF;
IF MW05 > 40 THEN //nach weiteren 3s
Q02:= false; //Hauptantrieb wieder aus
MW05:= 0; //Zählvariable resetten
MB07:= 4; //weiter zu 4
END_IF;
//3s warten bis Hauptantrieb steht
4: IF NOT I02 OR NOT I03 THEN //Stop erkannt
MB07:=15;
END_IF;
IF T01Q1 THEN //Takte hochzählen
MW05:= MW05 + 1;
END_IF;
IF MW05 > 30 THEN //nach 3s
MW05:= 0; //Zählvariable resetten
MB07:= 5; //weiter zu 5
END_IF;
//Hauptantrieb vorwäts einschalten
5: IF NOT I02 OR NOT I03 THEN //Stop erkannt
MB07:=15;
END_IF;
IF T01Q1 AND I06 THEN //Takte hochzählen
MW05:= MW05 + 1;
END_IF;
IF (MW05 > 30) AND I17 AND I06 THEN //Hauptantrieb ist hochgelaufen und Hydr ein
MW05:= 0; //Zählvariable resetten
MB07:= 6; //weiter zu 6
END_IF;
//Vorschub zurück fahren
6: IF NOT I02 OR NOT I03 THEN //Stop erkannt
MB07:=15;
END_IF;
IF T01Q1 AND (MW05 < 10) THEN //10 Takte hochzählen
MW05:= MW05 + 1;
END_IF;
Q17:= false;
Q18:= I17 AND I04 AND (MW05 > 5); //MV2 0,5s verzögert ein
IF NOT I04 AND I17 THEN //Druck erreicht
Q18:= false;
MW05:= 0; //Zählvariable resetten
MB07:= 7; //weiter zu 7
END_IF;
//Vorschub vor fahren
7: IF NOT I02 OR NOT I03 THEN //Stop erkannt
MB07:=15;
END_IF;
IF T01Q1 AND (MW05 < 10) THEN //10 Takte hochzählen
MW05:= MW05 + 1;
END_IF;
Q17:= I17 AND I04 AND (MW05 > 5); //MV1 0,5s verzögert ein ###Hier soll noch das Stromrelais rein###
//Q17:= I17 AND I04 AND I07; //MV1 ein, wenn Strom nicht zu hoch
IF NOT I04 AND I17 THEN //Druck erreicht
Q17:= false;
MW05:= 0; //Zählvariable resetten
MB07:= 6; //weiter zu 6
END_IF;
//Stopschritt, hier wird sofort alles ausgeschaltet
15: MW05:= 0; //Zählvariable resetten
Q01:= false;
Q02:= false;
Q03:= false;
Q04:= false;
Q17:= false;
Q18:= false;
MB07:=1; //gehe zurück zu 1
ELSE
MB07:=0; // irgendwas ist schief gegangen, gehe zu INIT
END_CASE;
;
Wie soll der Handrücklauf S5 eingebunden werden?
Welches Stromrelais ist für welche Funktion?
Gruß Thomas