Google-Suche auf MEINE-SCHALTUNG.de :
|
Dauerkalender |
SchereEine einfache industrielle Schneidemaschine (Schere) soll mit einem SPS-Programm
angesteuert werden. Um das obere Teil der Schneidemaschine zu bewegen, werden zwei pneumatische
Ventile eingesetzt. Das erste Ventil ist für die Bewegung nach unten zuständig, das zweite Ventil
sorgt für die Bewegung in entgegensetzte Richtung. Die Position der Schneidklinge wird mit zwei
Initiatoren überwacht. Ein Sensor fragt die obere Stellung (OT) ab, der andere die untere Position
(UT). Mit einem Taster kann der Schneidvorgang ausgelöst werden. Wird der Taster losgelassen,
bevor der Schneidvorgang komplett abgeschlossen wurde, muss die Schere sofort anhalten. Wird der
Taster kontinuierlich festgehalten, muss er, um einen neuen Schneidvorgang auszulösen, losgelassen
und erneut betätigt werden.
Lösung:
Der einfache Programmablauf für einen Schneidvorgang wird hier mit zwei Merkern
gestaltet. Ein Merker (Bit_Merker[1]) steuert das erste Ventil, der zweite (Bit_Merker[2]) das
zweite Ventil. Mit einer Flanke wird erkannt, ob der Taster betätigt wurde. Ist das der Fall und
der letzte Schneidvorgang wurde komplett abgeschlossen, wird der erste Merker gesetzt. Der
Schneidvorgang wird damit aktiviert, es erfolgt eine Bewegung nach unten. Der Vorgang dauert
solange an, bis die Position UT erreicht wurde. In dem Moment wechseln beide Merker ihren Wert.
Bit_Merker[1]) wird rückgesetzt, Bit_Merker[2] wird dagegen gesetzt. Es erfolgt jetzt eine
Bewegung nach oben bis der obere Punkt OT angefahren wird.
Wird während des Schneidvorgangs der Taster losgelassen, gehen beide Ventile
aus. Damit wird sichergestellt, dass es im manuellen Betrieb zu keinen automatischen Abläufen
kommt. Wird der Taster erneut betätigt wird der Schneidvorgang fortgesetzt. Der Wert der beiden
Merker wird nach dem Loslassen des Tasters nicht verändert.
Lösung mit SCL:
"R_TRIG_DB_3"(CLK:="Taster_Schnitt",
Q=>#Bit_Merker[3]);
IF #Bit_Merker[3] AND NOT #Bit_Merker[2] THEN
#Bit_Merker[1] := TRUE;
END_IF;
IF #Bit_Merker[1] AND "UT" THEN
#Bit_Merker[1] := FALSE;
#Bit_Merker[2] := TRUE;
END_IF;
IF #Bit_Merker[2] AND "OT" THEN
#Bit_Merker[2] := FALSE;
END_IF;
"Ventil_Runter" := "Taster_Schnitt" AND #Bit_Merker[1];
"Ventil_Rauf" := "Taster_Schnitt" AND #Bit_Merker[2];
S7-Programmierung TIA-Portal (Übersicht):
Google-Suche auf MEINE-SCHALTUNG.de :
|
|