497 lines
17 KiB
Plaintext
497 lines
17 KiB
Plaintext
=== FB 95: MAntrieb_PowerSave [STL] ===
|
|
INTERFACE:
|
|
Input:
|
|
Automatik : Bool // Automatikbetrieb ist aktiv
|
|
Handbetrieb : Bool // Handbetrieb ist aktiv
|
|
BereichErr : Bool := 1 // Bereichsstörung -> Antrieb stoppen
|
|
Q : Bool // Eingang Motorschutz ok
|
|
Ptc : Bool // Eingang Motortemperatur ok
|
|
Fu : Bool // Eingang Frequenzumrichter ok
|
|
QKontroll : Bool // Jetzt Q-Ok-Meldung von Frequenzumrichter (nach Netz EIN) kontrollieren
|
|
FuKontroll : Bool // Jetzt Fu-Ok-Meldung von Frequenzumrichter (nach Netz EIN) kontrollieren
|
|
ErrQuit : Bool // Motorschutzstörung quittieren
|
|
Kontroll_B : Bool // Kontroll-Sensor für Bewegung
|
|
T_Nachlauf : Int := 60 // Nachlaufzeit (*1s)
|
|
Output:
|
|
Antriebrueck : Bool // Rückwärts-Ausgang des Antriebs
|
|
Antriebvor : Bool // Vorwärts-Ausgang des Antriebs
|
|
Jog1 : Bool // Frequenz 1/3 aktivieren
|
|
Jog2 : Bool // Frequenz 2/3 aktivieren
|
|
Analog : Int // Ausgangswort für Analogwandler
|
|
InOut:
|
|
QErr : Bool // Motorschutzstörung
|
|
PtcErr : Bool // Temperaturstörung
|
|
FuErr : Bool // Frequenzumrichter ist gestört
|
|
Err_Antrieb_verklemmt : Bool // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv)
|
|
Static:
|
|
sJog1 : Bool // Frequenz 1/3 aktivieren
|
|
sJog2 : Bool // Frequenz 2/3 aktivieren
|
|
sAntriebrueck : Bool // Rückwärts-Ausgang des Antriebs
|
|
sAntriebvor : Bool // Vorwärts-Ausgang des Antriebs
|
|
Stat : "UAntrieb_PowerSave" // Status des Antriebs
|
|
Temp:
|
|
Antriebaktiv : Bool // Antrieb ist aktiv
|
|
Neustart : Bool // Antrieb wurde erneut gestartet
|
|
Frequenz : Real // Frequenz für FC106
|
|
Constant:
|
|
|
|
--- NW 1: Zeitwert laden ---
|
|
AN Automatik
|
|
ON Stat.A_start
|
|
JC Nw02
|
|
|
|
L T_Nachlauf // Zeitwert laden
|
|
T Stat.T_Zelle
|
|
|
|
|
|
--- NW 2: Zeitwert löschen ---
|
|
Nw02: AN Automatik
|
|
O Stat.A_vor
|
|
O Stat.A_rueck
|
|
O BereichErr
|
|
O QErr
|
|
O FuErr
|
|
JCN Nw03
|
|
|
|
L 0 // Zeitwert löschen
|
|
// // T #Stat.T_Zelle
|
|
|
|
|
|
--- NW 3: Motorschutzstörung / Temperaturüberwachung ---
|
|
Nw03: A ErrQuit
|
|
R QErr
|
|
AN Q
|
|
A QKontroll
|
|
S QErr
|
|
|
|
A ErrQuit
|
|
R PtcErr
|
|
AN Ptc
|
|
S PtcErr
|
|
|
|
|
|
--- NW 4: Frequenzumrichterstörung ---
|
|
AN Stat.Frequenz
|
|
AN Stat.Analog
|
|
JC en05
|
|
|
|
A ErrQuit
|
|
ON FuKontroll
|
|
R FuErr
|
|
AN Fu
|
|
A FuKontroll
|
|
S FuErr
|
|
|
|
en05: NOP 0
|
|
|
|
--- NW 5: Undefinierte Zustände / Befehle (alle Antriebe) ---
|
|
A Automatik // Automatik + Hand aktiv
|
|
A Handbetrieb
|
|
O
|
|
AN Automatik // keine Betriebsart
|
|
AN Handbetrieb
|
|
O
|
|
A Stat.A_vor // Vorwärts + Rückwärts aktiv
|
|
A Stat.A_rueck
|
|
O
|
|
A Stat.H_vor
|
|
A Stat.H_rueck
|
|
O
|
|
A BereichErr // Bereichsstörung
|
|
A Automatik // Automatik aktiv
|
|
O
|
|
AN Stat.Normal // Antrieb nicht eindeutig
|
|
AN Stat.Frequenz
|
|
AN Stat.Analog
|
|
O
|
|
A Stat.Normal
|
|
A(
|
|
O Stat.Frequenz
|
|
O Stat.Analog
|
|
)
|
|
O
|
|
A Stat.Frequenz
|
|
A Stat.Analog
|
|
O QErr // Motorschutzstörung
|
|
O
|
|
A Automatik // Automatik aktiv
|
|
A PtcErr // Temperaturstörung
|
|
JCN en06
|
|
|
|
Stop: SET
|
|
R sAntriebvor
|
|
R sAntriebrueck
|
|
R Stat.T_Ausfertig
|
|
R sJog1
|
|
R sJog2
|
|
|
|
L 0.0 // Zeitwert/Frequenz löschen
|
|
// // T #Stat.T_Zelle
|
|
T Frequenz // Frequenz für FC106
|
|
|
|
JU RET
|
|
|
|
en06: NOP 0
|
|
|
|
--- NW 6: Undefinierte Zustände / Befehle (Fu-Zusatz) ---
|
|
A Stat.Frequenz
|
|
A(
|
|
AN Stat.F1 // Keine Frequenz angegeben
|
|
AN Stat.F2
|
|
AN Stat.F3
|
|
O
|
|
A Stat.F1 // Mehrere Frequenzen angegeben
|
|
A(
|
|
O Stat.F2
|
|
O Stat.F3
|
|
)
|
|
O
|
|
A Stat.F2 // Mehrere Frequenzen angegeben
|
|
A Stat.F3
|
|
O FuErr // Frequenzumrichterstörung
|
|
ON FuKontroll // Frequenzumrichter ist eingeschaltet
|
|
)
|
|
JC Stop
|
|
|
|
--- NW 7: Undefinierte Zustände / Befehle (Analog-Zusatz) ---
|
|
A Stat.Analog
|
|
A(
|
|
L Stat.F // Keine Frequenz angegeben
|
|
L 0.0
|
|
==R
|
|
AN Stat.F1 // Keine Frequenz angegeben
|
|
AN Stat.F2
|
|
AN Stat.F3
|
|
O FuErr // Frequenzumrichterstörung
|
|
ON FuKontroll // Frequenzumrichter ist eingeschaltet
|
|
)
|
|
JC Stop
|
|
|
|
|
|
--- NW 8: Antrieb vorwärts starten ---
|
|
A(
|
|
A Automatik // Automatik ist aktiv
|
|
AN Stat.A_rueck
|
|
A(
|
|
L Stat.T_Zelle
|
|
L 0 // Nachlaufzeit vorhanden ?
|
|
<>I // Ja !
|
|
AN Stat.A_PS // PowerSave-Mode: Bei Ausschaltverzögerung anhalten
|
|
O Stat.A_vor // Einschalten
|
|
)
|
|
O
|
|
A Handbetrieb // Handbetrieb aktiv
|
|
A Stat.H_vor // Handtaste vorwärts
|
|
)
|
|
AN Stat.Stop_vor // Stoppen
|
|
A Q // Motorschutz ok
|
|
AN QErr // Motorschutzstörung noch aktiv
|
|
= sAntriebvor
|
|
R Stat.T_Ausfertig
|
|
|
|
--- NW 9: Antrieb rückwärts starten ---
|
|
A(
|
|
A Automatik // Automatik ist aktiv
|
|
A Stat.A_rueck // Einschalten
|
|
O
|
|
A Handbetrieb // Handbetrieb aktiv
|
|
A Stat.H_rueck // Handtaste rückwärts
|
|
)
|
|
AN Stat.Stop_rueck // Stoppen
|
|
A Q // Motorschutz ok
|
|
AN QErr // Motorschutzstörung noch aktiv
|
|
AN sAntriebvor
|
|
= sAntriebrueck
|
|
R Stat.T_Ausfertig
|
|
|
|
--- NW 10: Frequenz übergeben (Fu-Zusatz) ---
|
|
AN Stat.Frequenz
|
|
AN Stat.Analog
|
|
JC en11
|
|
|
|
A sAntriebvor
|
|
AN sAntriebrueck
|
|
O
|
|
AN sAntriebvor
|
|
A sAntriebrueck
|
|
= Antriebaktiv
|
|
|
|
A Antriebaktiv
|
|
A(
|
|
O Stat.F1
|
|
O Stat.F3
|
|
)
|
|
= sJog1
|
|
|
|
A Antriebaktiv
|
|
A(
|
|
O Stat.F2
|
|
O Stat.F3
|
|
)
|
|
= sJog2
|
|
|
|
AN sJog1 // Keine Geschwindigtkeit aktiv
|
|
AN sJog2
|
|
AN Stat.Analog // falls analoge Übergabe erfolgt
|
|
R sAntriebvor
|
|
R sAntriebrueck
|
|
|
|
en11: NOP 0
|
|
|
|
--- NW 11: Frequenz übergeben (Analog-Zusatz) ---
|
|
AN Stat.Analog
|
|
JC en12
|
|
|
|
A sAntriebvor
|
|
AN sAntriebrueck
|
|
O
|
|
AN sAntriebvor
|
|
A sAntriebrueck
|
|
= Antriebaktiv
|
|
|
|
L 0.0 // Falls Stop erwünscht
|
|
|
|
AN Antriebaktiv
|
|
JC w090
|
|
|
|
L Stat.F
|
|
w090: T Frequenz // Frequenz für FC106
|
|
|
|
L 3000.0 // Maximal 3000 U/min ?
|
|
<=R // Ja !
|
|
JC w091
|
|
|
|
T Frequenz // Frequenz für FC106
|
|
|
|
w091: L Frequenz
|
|
L 0.0 // Keine Geschwindigtkeit aktiv ?
|
|
==R // Ja !
|
|
AN sJog1 // Aber schon Jog-Geschwindigtkeit aktiv
|
|
AN sJog2
|
|
R sAntriebvor
|
|
R sAntriebrueck
|
|
|
|
en12: NOP 0
|
|
|
|
--- NW 12: Steuersignale zurücksetzen ---
|
|
RET: A Stat.A_vor // Übergabe an OP
|
|
= Stat.OP_A_vor
|
|
|
|
A Stat.A_start
|
|
= Stat.OP_A_start
|
|
|
|
A Stat.A_PS
|
|
= Stat.OP_A_PS
|
|
|
|
A Stat.Stop_vor
|
|
= Stat.OP_Stop_vor
|
|
|
|
A Stat.Stop_rueck
|
|
= Stat.OP_Stop_rueck
|
|
|
|
L Stat.F
|
|
T Stat.OP_F
|
|
|
|
A Stat.F1
|
|
= Stat.OP_F1
|
|
|
|
A Stat.F2
|
|
= Stat.OP_F2
|
|
|
|
A Stat.F3
|
|
= Stat.OP_F3
|
|
|
|
L 0.0
|
|
T Stat.F
|
|
|
|
SET
|
|
R Stat.F1
|
|
R Stat.F2
|
|
R Stat.F3
|
|
R Stat.Stop_vor
|
|
R Stat.Stop_rueck
|
|
R Stat.Stop_intern
|
|
R Stat.A_vor
|
|
R Stat.A_rueck
|
|
R Stat.A_start
|
|
R Stat.A_PS
|
|
R Stat.H_vor
|
|
R Stat.H_rueck
|
|
|
|
|
|
--- NW 13: Nachlaufzeit läuft ---
|
|
AN "1s-Impuls" // 1s-Impuls
|
|
ON sAntriebvor // Antrieb steht
|
|
JC Nw14
|
|
|
|
L Stat.T_Zelle
|
|
L 0 // Zeit steht ?
|
|
==I // Ja !
|
|
JC Nw14
|
|
|
|
L Stat.T_Zelle
|
|
+ -1
|
|
T Stat.T_Zelle
|
|
|
|
L 0 // Zeit gerade abgelaufen ?
|
|
<=I // Ja !
|
|
S Stat.T_Ausfertig
|
|
JCN Nw14
|
|
|
|
T Stat.T_Zelle
|
|
|
|
|
|
--- NW 14: Analog-Signal wandeln ---
|
|
Nw14: AN Stat.Analog
|
|
JC en14
|
|
|
|
CALL SYS "UNSCALE" (IN:=Frequenz, HI_LIM:=200.0, LO_LIM:=0.0, BIPOLAR:=FALSE, RET_VAL:=Stat.RET_VAL_FC106, OUT:=Analog)
|
|
|
|
L Stat.RET_VAL_FC106
|
|
L 0 // Fehler vorhanden ?
|
|
<>I // Ja !
|
|
R sAntriebvor // Antrieb stoppen
|
|
R sAntriebrueck
|
|
|
|
en14: NOP 0
|
|
|
|
|
|
--- NW 15: Ausgänge an OP übergeben ---
|
|
A sAntriebvor
|
|
AN Stat.OP_Out_Mvor // beim letzten Zyklus war Motor nicht eingeschaltet
|
|
O
|
|
A sAntriebrueck
|
|
AN Stat.OP_Out_Mrueck // beim letzten Zyklus war Motor nicht eingeschaltet
|
|
= Neustart // Antrieb wurde erneut gestartet
|
|
|
|
A sAntriebvor
|
|
= Stat.OP_Out_Mvor
|
|
|
|
A sAntriebrueck
|
|
= Stat.OP_Out_Mrueck
|
|
|
|
|
|
--- NW 16: Verklemm-Kontrolle ---
|
|
AN Stat.Kontroll_B_verbaut // Parameter 4: Kontroll-Sensor für Bewegung ist eingebaut
|
|
R Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv)
|
|
JC en16
|
|
|
|
A ErrQuit
|
|
A Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv)
|
|
JC w161
|
|
|
|
|
|
A Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv)
|
|
R sAntriebvor // Antrieb anhalten
|
|
R sAntriebrueck
|
|
JC en16
|
|
|
|
AN Kontroll_B // Sensor ist nicht aktiv
|
|
JC w160
|
|
|
|
// Also Sensor aktiv:
|
|
L 0 // Inaktiv-Zeit nullen
|
|
T Stat.Raster_B_inaktiv
|
|
|
|
AN sAntriebvor // Antrieb steht
|
|
AN sAntriebrueck
|
|
ON "100ms-Impuls" // 0,1s-Impuls
|
|
JC en16
|
|
|
|
L Stat.Raster_B_aktiv
|
|
L "MW2" // Anzahl der 100ms-Takte
|
|
+I
|
|
T Stat.Raster_B_aktiv
|
|
L 20 // 2s erreicht ?
|
|
>=I // Ja !
|
|
S Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv)
|
|
|
|
JU en16
|
|
|
|
// Sensor inaktiv:
|
|
w160: L 0 // Aktiv-Zeit nullen
|
|
T Stat.Raster_B_aktiv
|
|
|
|
AN sAntriebvor // Antrieb steht
|
|
AN sAntriebrueck
|
|
ON "100ms-Impuls" // 0,1s-Impuls
|
|
JC en16
|
|
|
|
L Stat.Raster_B_inaktiv
|
|
L "MW2" // Anzahl der 100ms-Takte
|
|
+I
|
|
T Stat.Raster_B_inaktiv
|
|
L 20 // 2s erreicht ?
|
|
>=I // Ja !
|
|
S Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv)
|
|
|
|
JU en16
|
|
|
|
w161: L 0
|
|
T Stat.Raster_B_aktiv // Aktiv-Zeit nullen
|
|
T Stat.Raster_B_inaktiv // Inaktiv-Zeit nullen
|
|
|
|
SET
|
|
R Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv)
|
|
|
|
en16: NOP 0
|
|
|
|
|
|
--- NW 17: Anzahl der Einschaltungen speichern ---
|
|
AN Neustart // Antrieb wurde erneut gestartet
|
|
JC en17
|
|
|
|
L Stat.Statistik.Einschaltungen
|
|
+ DINT#1 // Anzahl der Einschaltungen +1
|
|
T Stat.Statistik.Einschaltungen
|
|
|
|
en17: NOP 0
|
|
|
|
|
|
--- NW 18: Ausgangsvariablen schreiben ---
|
|
A sAntriebvor
|
|
= Antriebvor
|
|
|
|
A sAntriebrueck
|
|
= Antriebrueck
|
|
|
|
A sJog1
|
|
= Jog1
|
|
|
|
A sJog2
|
|
= Jog2
|
|
|
|
|
|
--- NW 19: Gesamt-Laufzeit aufaddieren ---
|
|
AN sAntriebvor // Antrieb steht
|
|
AN sAntriebrueck
|
|
ON "1s-Impuls" // 1s-Impuls
|
|
BEC
|
|
|
|
L Stat.Statistik.Laufzeit_s
|
|
+ 1 // Laufzeit des Antriebs in Sekunden+1
|
|
T Stat.Statistik.Laufzeit_s
|
|
L 60 // Eine Minte erreicht ?
|
|
<I // Nein !
|
|
BEC
|
|
|
|
L 0
|
|
T Stat.Statistik.Laufzeit_s
|
|
L Stat.Statistik.Laufzeit_m
|
|
+ 1 // Laufzeit des Antriebs in Minuten+1
|
|
T Stat.Statistik.Laufzeit_m
|
|
L 60 // Eine Stunde erreicht ?
|
|
<I // Nein !
|
|
BEC
|
|
|
|
L 0
|
|
T Stat.Statistik.Laufzeit_m
|
|
L Stat.Statistik.Laufzeit_h
|
|
+ 1 // Laufzeit des Antriebs in Stunden+1
|
|
T Stat.Statistik.Laufzeit_h
|
|
|
|
|
|
--- NW 20: Ende ---
|
|
BE
|
|
|