FUNCTION "Lenze_PPO3" : VOID
TITLE =Ansteuerung Lenze über Profibus und Istwert/Status auslesen
//Für Funktionsmodul E82ZAFPC0xx (Profibus DP)
AUTHOR : de_Vries
FAMILY : Multi_FC
NAME : Len_PPO3
VERSION : 4.0
VAR_INPUT
ANXX_Lenze : INT ; //PEW/PAW Adresse für ANEI/ANAU Lenze
Sollwert : INT ; //Sollwert Lenze
Max_Hz : INT ; //Maximalfrequenz in Hz
Start : BOOL ; //Start Reglerfreigabe Lenze
Reset : BOOL ; //Reset Fehler
END_VAR
VAR_IN_OUT
Stoerung : BOOL ; //M :Störung Allgemein
Speed_Ist : INT ; //Istwert Lenze
Status : INT ; //Statuswort von Lenze Regler
END_VAR
VAR_TEMP
Steuern_Lenze : STRUCT //Steuerwort -> Antr.-Regler
Bit_08 : BOOL ; //DRIVECOM reserviert
Bit_09 : BOOL ; //DRIVECOM reserviert
Bit_10 : BOOL ; //DRIVECOM reserviert
Bit_11 : BOOL ; //DCTRL1-Trip-Set
Bit_12 : BOOL ; //DCTRL1-Par2/4
Bit_13 : BOOL ; //DCTRL1-Par3/4
Bit_14 : BOOL ; //MCTRL1-DCB
Bit_15 : BOOL ; //NC (unbenutzt)
Bit_00 : BOOL ; //Einschalten
Bit_01 : BOOL ; //Spannung nicht sperren
Bit_02 : BOOL ; //Schnellhalt nicht aktiv
Bit_03 : BOOL ; //Reglerfreigabe
Bit_04 : BOOL ; //Quickstop nicht aktiv
Bit_05 : BOOL ; //HGL freigeben (0 = HGL stoppen)
Bit_06 : BOOL ; //HGL freigeben (0 = HGL Null)
Bit_07 : BOOL ; //Reset Störung
END_STRUCT ;
Status_Lenze : STRUCT //Statuswort <- Antr.-Regler
Bit_08 : BOOL ; //Meldung
Bit_09 : BOOL ; //Buszugriffsberechtigung
Bit_10 : BOOL ; //Hochlaufgeber Ist = Soll
Bit_11 : BOOL ; //Drehzahlbegrenzung angesprochen
Bit_12 : BOOL ; //DCTRL1-Par-B0
Bit_13 : BOOL ; //DCTRL1-Par-B1
Bit_14 : BOOL ; //MCTRL1-Imax
Bit_15 : BOOL ; //PCTRL1-Qmin
Bit_00 : BOOL ; //Einschaltbereit
Bit_01 : BOOL ; //Eingeschaltet
Bit_02 : BOOL ; //Betrieb freigegeben
Bit_03 : BOOL ; //Störung TRIP aufgetreten
Bit_04 : BOOL ; //Spannung gesperrt
Bit_05 : BOOL ; //Schnellhalt
Bit_06 : BOOL ; //Einschaltsperre
Bit_07 : BOOL ; //Warnung
END_STRUCT ;
Nicht_genutzt : INT ; //Nicht genutzter Bereich (Schmiermerker)
Statusword : INT ; //Statusword für Lenze Regler
Steuerword : INT ; //Steuerword für Lenze Regler
END_VAR
BEGIN
NETWORK
TITLE =Ansteuerung Lenze über Profibus und Istwert/Status auslesen
//Folgende Parameter müssen im Lenzeregler angepasst werden.
//C005 - Wert 200 : Werte per Profibus werden akzeptiert
//C011 - Wert in Hz: Frequenzgrenze in Hz
//C015 - wie C011 : Max Sollwert in Hz
//C127 - Wert 1 : Sollwertvorgabe in 16383
//C1509 - xxx : Stationsadresse
//
//Klemme 28 muss 'HIGH' sein
//In der Hardware muss das Modul 2AX - PZD(2W. Kons.) auswählen!
//
//Einschaltbereit schalten = 7E Hex
//Betrieb freigeben = 7F Hex
//
//In der Harware PZD (2 Worte) auswählen
L #ANXX_Lenze; // Eingangsadresse als Formaloperant
SLW 3; // Bitregister ausblenden
LAR1 ; // in Adressregister laden
// ------------------------- Steuerword vorbelegen --------------------------------
SET ; // VKE auf '1' setzen
= #Steuern_Lenze.Bit_00; // = Drivecom einschalten
R #Steuern_Lenze.Bit_01; // = DRIVECOM Spannung sperren
R #Steuern_Lenze.Bit_02; // = DRIVECOM Schnellhalt
R #Steuern_Lenze.Bit_03; // = RFR (Reglerfreigabe)
R #Steuern_Lenze.Bit_04; // = QSP (Quickstop)
R #Steuern_Lenze.Bit_05; // = HGL stoppen; 1:= HGL freigeben
R #Steuern_Lenze.Bit_06; // = HGL -> Null; 1:= HGL freigeben
R #Steuern_Lenze.Bit_07; // = Reset Störung
R #Steuern_Lenze.Bit_08; // = DRIVECOM reserviert
R #Steuern_Lenze.Bit_09; // = DRIVECOM reserviert
R #Steuern_Lenze.Bit_10; // = DRIVECOM reserviert
R #Steuern_Lenze.Bit_11; // = DCTRL1-Trip-Set
R #Steuern_Lenze.Bit_12; // = DCTRL1-Par2/4
R #Steuern_Lenze.Bit_13; // = DCTRL1-Par3/4
R #Steuern_Lenze.Bit_14; // = MCTRL1-DCB
R #Steuern_Lenze.Bit_15; // = NC (unbenutzt)
// ------------------------ Statuswort / Istwert auslesen ---------------------------
L PEW [AR1,P#0.0]; // Statuswort
T #Statusword; // in LD laden
T #Status; // zur Ausgabe
CALL SFC 20 (// Statuswort
SRCBLK := #Statusword,// in Statuswort Struktur schreiben
RET_VAL := #Nicht_genutzt,//
DSTBLK := #Status_Lenze);//
L PEW [AR1,P#2.0]; // Istgeschwindigkeit laden
T #Speed_Ist; // *** Istgeschwindigkeit an Ausgabe
U #Status_Lenze.Bit_03; // Oder TRIP aufgetreten
= #Stoerung; // *** Lenze Störung
// -------------------------- Antrieb Einschaltbereit -------------------------------
U( ; //
L #Sollwert; // Wenn Sollwert
L 0; // ungleich '0'
<>I ; //
) ; //
U #Start; // Und Start Lenze
UN #Stoerung; // und keine Störung liegt an
= #Steuern_Lenze.Bit_01; // *** Spannung ein
= #Steuern_Lenze.Bit_02; // *** Schnellhalt aus
= #Steuern_Lenze.Bit_03; // *** Reglerfreigabe ein
= #Steuern_Lenze.Bit_04; // *** QSP aus (Quickstop)
= #Steuern_Lenze.Bit_05; // *** HGL freigeben
= #Steuern_Lenze.Bit_06; // *** HGL freigeben
// -------------------------- Antrieb Einschalten -----------------------------------
U #Status_Lenze.Bit_00; // Einschaltbereit
UN #Status_Lenze.Bit_03; // Keine Störung (TRIP) aufgetreten
U #Status_Lenze.Bit_05; // Schnellhalt aus
UN #Status_Lenze.Bit_06; // Einschaltsperre aus
= #Steuern_Lenze.Bit_00; // *** Antrieb einschalten
// ----------------------------- Antrieb Reset --------------------------------------
U #Reset; // Resetanforderung
= #Steuern_Lenze.Bit_07; // *** Lenze quittieren
CALL SFC 20 (// Steuerword Struktur
SRCBLK := #Steuern_Lenze,// in Steuerwort für Übergabe schreiben
RET_VAL := #Nicht_genutzt,//
DSTBLK := #Steuerword);//
// ----------------------------- Werte zum Lenze -------------------------------------
L #Steuerword; // Steuerwort
T PAW [AR1,P#0.0]; // *** in Lenze laden
L #Sollwert; // Sollwert
SLW 4; // Linksbündig Ausrichten
T PAW [AR1,P#2.0]; // *** in Lenze laden
END_FUNCTION