Hallo Fredi,
hier mal der Entwurf für einen Anwenderbaustein mit einer Schrittkette
Man könnte mit Tippbetrieb das Schwenkrohr etwa Mittig fahren und dann Schwenkbetrieb freigeben.
Die Schrittkette ist Remanent. Es spielt keine Rolle, wie lange die Steuerung aus ist.
Die Auflösung der Schwenkzeiten in 0,1s sollte ausreichend sein. also ein Wert am IA01 / IA02 von 100 entspricht deinen max 10sec.
Ich könnte mir vorstellen noch eine Überwachung (Zeit) zu integrieren beim zurückfahren zum Endschalter.
Probier es mal aus
Gruß Thomas
//Taktgeber, Auflösung 0,1Sekunde
T01 (
EN := true,
RE := T01Q1,
ST := not I02,
I1 := t#90ms,
I2 := ,
Q1 => ,
QV => );
// Schrittkette ( MB1 und MB2 remanent)
CASE MB01 OF
0: MB02:= 0;
MB01:=1; //gehe zu 1
1: //von mitte nach rechts fahren bis Sollwert erreicht
Q01:= I02; //fahren nach re
Q02:= false;
IF T01Q1 and I02 then
MB02:= MB02 + 1; //0,1sTakt hochzählen
END_IF;
IF MB02 >= IA01 THEN //Sollwert erreicht
MB02:= 0;
MB01:=2; //gehe zu 2
END_IF;
2: //1s anhalten für umsteuern
Q01:= false;
Q02:= false;
IF T01Q1 and I02 then
MB02:= MB02 + 1;
END_IF;
IF MB02 >= 10 THEN
MB02:= 0;
MB01:=3;
END_IF;
3: //Zurückfahren (li) bis Endschalter Mitte
Q01:= false;
Q02:= I02; //fahren nach li
IF I01 THEN
MB01:=4;
END_IF;
4: //von mitte nach li fahren bis Sollwert erreicht
Q01:= false;
Q02:= I02; //fahren nach li
IF T01Q1 and I02 then
MB02:= MB02 + 1; //0,1sTakt hochzählen
END_IF;
IF MB02 >= IA02 THEN //Sollwert erreicht
MB02:= 0;
MB01:=5; //gehe zu 5
END_IF;
5: //1s anhalten für umsteuern
Q01:= false;
Q02:= false;
IF T01Q1 and I02 then
MB02:= MB02 + 1;
END_IF;
IF MB02 >= 10 THEN
MB02:= 0;
MB01:=6;
END_IF;
6: //Zurückfahren (re) bis Endschalter Mitte
Q01:= I02; //fahren nach re
Q02:= false;
IF I01 THEN
MB01:=1;
END_IF;
ELSE
;
END_CASE;