Files
HundM_awl/=A01+UH06-KF00/Programmbausteine/Module/MAntrieb_PowerSave.awl
T

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