=== 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 ?