Textilschneider
Ein Gestell mit einem Kreismesser zum Schneiden von Textilmaterialien bewegt
sich bei einem Schnittvorgang quer über einen Textiltisch. Je nach aktueller Position erfolgt
die Bewegung bei einem Schnitt entweder von der linken zur rechten Seite des Tisches oder
umgekehrt. Das Messergestell wird von einem elektrischen Motor, der an einen Frequenzumrichter
angeschlossen ist, angetrieben. Die Bewegung des Messergestells kann im Bereich von 5 bis 15
m/min stufenlos eingestellt werden. In einer Entfernung von jeweils 35 cm von den Rändern des
Tisches sind zwei Initiatoren angebracht, die ein kurzes Signal ausgeben, sobald das Messergestell
vorbei fährt. Die Entfernung der beiden Initiatoren voneinander beträgt 2 m. Bei der Parametrierung
des Umrichters wurde eine feste Beschleunigung und Verzögerung von 0,2 m/s² festgelegt. Das
Messergestell muss nach jedem Schnitt stets an gleicher Position zum Stehen kommen. Ein
SPS-Programm soll die zeitliche Verzögerung des Stoppsignals berechnen, nachdem ein Initiator
passiert wurde. Mit dem Stoppsignal soll der Bremsvorgang eingeleitet werden.
Lösung:
Bei unterschiedlichen Geschwindigkeiten ergibt sich bei konstanter Verzögerung
jeweils ein anderer Bremsweg. Würde man z.B. die Bremsung mit dem Signal vom Initiator initiieren,
würde das Gestell stets an einem anderen Punkt zum Stehen kommen. Es gilt die Zeit zu berechnen,
wie lange das Gestell mit der aktuellen Geschwindigkeit, nachdem der Initiator passiert wurde,
noch weiter fahren muss, bevor mit einem Stoppsignal die Bremsung gestartet werden
kann.
| Zunächst muss die aktuelle Geschwindigkeit ermittelt werden. Die Zeit, die das Gestell
für die Strecke zwischen den beiden Initiatoren (2 m) benötigt, kann mit dem Zeitbaustein TONR
gemessen werden. Aus der Formel v=s/t kann dann anschließend die aktuelle Geschwindigkeit
errechnet werden. Im nächsten Schritt wird für die aktuelle Geschwindigkeit und vorgegebene
Verzögerung die Bremszeit errechnet. Die gesuchte Verzögerungszeit ergibt sich aus der Differenz
zwischen der Zeit, die das Gestell benötigt hätte, um bei aktueller Geschwindigkeit die Endlage
zu erreichen und der errechneten Bremszeit. Sobald die Zeit verstrichen ist, kann mit einem
Stoppbefehl die Bremsung gestartet werden.
Das Programm kann man z.B. in einem Funktionsbaustein erstellen. Die verwendeten
Variablen sind: |
// Vorbelegung
#Messstrecke := 2.0;
#Verzögerung := 0.2;
#Abstand_Ini_PHalt := 0.35;
// Schere Start
"R_TRIG_DB"(CLK:="Start_Taster", Q=>#Start_Flanke);
// Start Bedingungen
IF #Start_Flanke AND NOT #Schere_In_Bewegung THEN
#Zeitmessung_Aktiv := FALSE;
#Timer_Rücksetzen := TRUE;
#Schere_In_Bewegung := TRUE;
END_IF;
// Intervall der Zeitmessung bestimmen
IF #Schere_In_Bewegung THEN
IF ("Initiator_Links" OR "Initiator_Rechts") AND NOT #Zeitmessung_Aktiv THEN
#Zeitmessung_Aktiv := TRUE;
#Start_Initiator_Belegt := TRUE;
END_IF;
IF NOT "Initiator_Links" AND NOT "Initiator_Rechts" THEN
#Start_Initiator_Belegt := FALSE;
END_IF;
IF NOT #Start_Initiator_Belegt AND ("Initiator_Links" OR "Initiator_Rechts") THEN
#Zeitmessung_Aktiv := FALSE;
#Schere_In_Bewegung := FALSE;
END_IF;
END_IF;
// Zeitmessung
"Strecke_Timer".TONR(IN := #Zeitmessung_Aktiv,
R := #Timer_Rücksetzen,
PT := t#100s,
Q => #Messung_Abgelaufen,
ET => #Zeit_Gemessen);
// Geschwindigkeit v = s/t (m/Sek)
IF #Zeit_Gemessen > 0 THEN
#t1 := DINT_TO_REAL(#Zeit_Gemessen);
#Geschwindigkeit := (#Messstrecke / #t1) * 1000;
#Geschw_m_min := #Geschwindigkeit * 60;
END_IF;
// Bremszeit t = v/a (Sek)
#Bremszeit := #Geschwindigkeit / #Verzögerung;
// Zeit für die Strecke Initiator - Endlage t = s/v (Sek)
#t_Ini_PHalt := #Abstand_Ini_PHalt / #Geschwindigkeit;
// Die gesuchte Verzögerungszeit (ms)
#t_Ini_PStop := (#t_Ini_PHalt - #Bremszeit) * 1000;
// Stopp - Signal aktivieren
#Zeit_Verzögerung := REAL_TO_DINT(#t_Ini_PStop);
"IEC_Timer_0_DB".TON(IN:=("Initiator_Links" OR "Initiator_Rechts") AND NOT #Zeitmessung_Aktiv,
PT:=#Zeit_Verzögerung,
Q=>#Stop_Signal,
ET=>#t_ist);
S7-Programmierung TIA-Portal (Übersicht):
Google-Suche auf MEINE-SCHALTUNG.de :
|
|