-> Hier kostenlos registrieren
Hallo zusammen!
Ich habe nicht viel Erfahrung mit SPS Programmierung und vor mir steht folgende Aufgabe, muss ein Programm erstellen, dass die rotierende Spannzangen zwischen zwei Sensoren hin und her laufen lasst bis die eingestellte Anhahl von Windungen nicht erreicht wird, die letzte 10 Windungen sollen langsamm gedreht werden. Für Verstendlichkeit hab ich ein Bild eingefügt, wo mit 'IN' Sensoren genannt sind und mit 'OUT' Ventiele die for Bewegung vor und zurück zustandig sind . Noch mal kurz Spannzangen mussen hin und her zwischen Sensoren IN4 und IN3 bewegen so lang bis die eingestellte Windungszahl bei Zähler nicht erreicht wird IN9 zählt die Windungen, so bald Windungszahl erreicht muss die Spannzanges bis Sensor IN5 fahren, Zähler muss zuruckgesetzt und das selbe Spiel muss jezt zwischen IN5 und IN4 passieren und so insgesamt 4 mal bis Sensor IN7.Hier ist das Quellcode von mir
CTU1(CU:=IN9 ,RESET:=RES ,PV:= , Q=> , CV=>ZAELER );(*Wicklungszaeler*)
POSITION1:RS;
POSITION2:RS;
IF ZAELER<WINDUNGSZAHL1-10
THEN
POSITION1(SET:=IN3 , RESET1:=IN4 , Q1=>OUT7 );
POSITION2(SET:=IN4 , RESET1:=IN5 , Q1=>OUT6 );
ELSIF ZAELER>WINDUNGSZAHL 1-10 AND ZAEL ER<WINDUNGSZAHL1
THEN
target_velocityARS2108:=500;
target_velocityARS2305:=50;
POSITION1(SET:=IN3 , RESET1:=IN4 , Q1=>OUT7 );
POSITION2(SET:=IN4 , RESET1:=IN5 , Q1=>OUT6 );
ELSIF ZAELER=WINDUNGSZAHL1 AND IN5=FALSE
THEN
target_velocityARS2108:=500;
target_velocityARS2305:=0;
OUT6:=FALSE;
OUT7:=TRUE;
END_IF;
TP1(IN:=IN5 , PT:=T#5ms , Q=>RES , ET=> );(*Windungs Zähler auf Null setzen*)
(*
IF ZAELER<WINDUNGSZAHL2
THEN
target_velocityARS2108:=1500;
target_velocityARS2305:=100;
POSITION1(SET:=IN4 , RESET1:=IN5 , Q1=>OUT7 );(*Laufvorgang*)
POSITION2(SET:=IN5 , RESET1:=IN4 , Q1=>OUT6 );
*)
END_IF;
Es funktioniert akzeptabel, so bald ich nicht diese Teil vom Qellcode einfüge was zur Zeit als Kommentar markiert. Wenn ich diese Teil doch einfüge dann fahren die Spannzangen bis Sensor IN5 und laufen zwischen IN4 und IN5. Für mich ist das verstadlich da die Bedienung ZAELER<WINDUNGSZAHL2 erfühlt ist. Meine Frage wie kann ich mein Proramm verbessern bzw verandern um diese Ablauf zu programmieren? Oder gibts hier im Forum villeicht schon ahnliches Thema ? Denke so was oder ähnliches ist oft zu treffen. Hoffe Sie haben vestanden was ich meine Danke voraus !
Ich habe nicht viel Erfahrung mit SPS Programmierung und vor mir steht folgende Aufgabe, muss ein Programm erstellen, dass die rotierende Spannzangen zwischen zwei Sensoren hin und her laufen lasst bis die eingestellte Anhahl von Windungen nicht erreicht wird, die letzte 10 Windungen sollen langsamm gedreht werden. Für Verstendlichkeit hab ich ein Bild eingefügt, wo mit 'IN' Sensoren genannt sind und mit 'OUT' Ventiele die for Bewegung vor und zurück zustandig sind . Noch mal kurz Spannzangen mussen hin und her zwischen Sensoren IN4 und IN3 bewegen so lang bis die eingestellte Windungszahl bei Zähler nicht erreicht wird IN9 zählt die Windungen, so bald Windungszahl erreicht muss die Spannzanges bis Sensor IN5 fahren, Zähler muss zuruckgesetzt und das selbe Spiel muss jezt zwischen IN5 und IN4 passieren und so insgesamt 4 mal bis Sensor IN7.Hier ist das Quellcode von mir
CTU1(CU:=IN9 ,RESET:=RES ,PV:= , Q=> , CV=>ZAELER );(*Wicklungszaeler*)
POSITION1:RS;
POSITION2:RS;
IF ZAELER<WINDUNGSZAHL1-10
THEN
POSITION1(SET:=IN3 , RESET1:=IN4 , Q1=>OUT7 );
POSITION2(SET:=IN4 , RESET1:=IN5 , Q1=>OUT6 );
ELSIF ZAELER>WINDUNGSZAHL 1-10 AND ZAEL ER<WINDUNGSZAHL1
THEN
target_velocityARS2108:=500;
target_velocityARS2305:=50;
POSITION1(SET:=IN3 , RESET1:=IN4 , Q1=>OUT7 );
POSITION2(SET:=IN4 , RESET1:=IN5 , Q1=>OUT6 );
ELSIF ZAELER=WINDUNGSZAHL1 AND IN5=FALSE
THEN
target_velocityARS2108:=500;
target_velocityARS2305:=0;
OUT6:=FALSE;
OUT7:=TRUE;
END_IF;
TP1(IN:=IN5 , PT:=T#5ms , Q=>RES , ET=> );(*Windungs Zähler auf Null setzen*)
(*
IF ZAELER<WINDUNGSZAHL2
THEN
target_velocityARS2108:=1500;
target_velocityARS2305:=100;
POSITION1(SET:=IN4 , RESET1:=IN5 , Q1=>OUT7 );(*Laufvorgang*)
POSITION2(SET:=IN5 , RESET1:=IN4 , Q1=>OUT6 );
*)
END_IF;
Es funktioniert akzeptabel, so bald ich nicht diese Teil vom Qellcode einfüge was zur Zeit als Kommentar markiert. Wenn ich diese Teil doch einfüge dann fahren die Spannzangen bis Sensor IN5 und laufen zwischen IN4 und IN5. Für mich ist das verstadlich da die Bedienung ZAELER<WINDUNGSZAHL2 erfühlt ist. Meine Frage wie kann ich mein Proramm verbessern bzw verandern um diese Ablauf zu programmieren? Oder gibts hier im Forum villeicht schon ahnliches Thema ? Denke so was oder ähnliches ist oft zu treffen. Hoffe Sie haben vestanden was ich meine Danke voraus !