Einfaches Beispielprogramm S7-300 für Lenze 8400 Profibus

Waschtel

Level-1
Beiträge
28
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Suche ein einfaches Beipielprogramm um einen Lenze 8400 Frequenzumrichter über Profibus anzusteuern

Vorhanden S7-314-2PN/DP und Lenze Profibus Modul+FU

Der FU soll Ein-/Ausgeschaltet werden können
Störungsausgabe vom FU
Sollwertvorgabe am Touch Panel
Istwertausgabe am Touch Panel

MFG
Waschtele
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lenze PPO3

Ich hab mal was, ist aber schon lange her dass ich mit Lenze gearbeitet habe.... try and error :cool:

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


Code:
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
 
Hallo Gebs,
das habe ich mir schon angesehen nur kapiere ich das nicht ganz.

Bei SEW und bei Siemens werden die bits angesteuert so wie Ingo dV auch beschreibt
und das finde ich nicht in dem Beispielprogramm

Danke für die Rückmeldungen
 
Zurück
Oben