FUNCTION "VLT_Steuern" : VOID
TITLE =Ansteuerung VLT über Profibus und Istwert/Status auslesen
AUTHOR : de_Vries
FAMILY : Multi_FC
NAME : VLT_PB
VERSION : 0.1
VAR_INPUT
ANXX_VLT : INT ; //PEW/PAW Adresse für ANEI/ANAU VLT
Sollwert : INT ; //Sollwert VLT
Start : BOOL ; //Start Reglerfreigabe VLT
END_VAR
VAR_IN_OUT
Stoerung : BOOL ; //M :Störung Allgemein
Speed_Ist : INT ; //Istwert VLT
Status : INT ; //Statuswort von VLT Regler
END_VAR
VAR_TEMP
Steuern_VLT : STRUCT //Steuerwort für Danfoss Profibusanbindung
Bit_8 : BOOL ; //VLT Steuerbit: Bit 0 = OFF Bit 1 = Festdrehzahl ein
Bit_9 : BOOL ; //VLT Steuerbit: Bit 0 = Rampe 1 ein Bit 1 = Rampe 2 ein
Bit_10 : BOOL ; //VLT Steuerbit: Bit 0 = Daten ungültig Bit 1 = Daten gültig
Bit_11 : BOOL ; //VLT Steuerbit: Bit 0 = Relais 01 off Bit 1 = Relais 01 on
Bit_12 : BOOL ; //VLT Steuerbit: Bit 0 = Relais 01 off Bit 1 = Relais 01 on
Bit_13 : BOOL ; //VLT Steuerbit: Wahleinstellung 1 lsb
Bit_14 : BOOL ; //VLT Steuerbit: Wahleinstellung 1 msb
Bit_15 : BOOL ; //VLT Steuerbit: Bit 0 = Vorfahrt Bit 1 = Reversierung
Bit_0 : BOOL ; //VLT Steuerbit: Wahl Festsollwert lsb
Bit_1 : BOOL ; //VLT Steuerbit: Wahl Festsollwert msb
Bit_2 : BOOL ; //VLT Steuerbit: Bit 0 = DC-Bremse Bit 1 = Rampe
Bit_3 : BOOL ; //VLT Steuerbit: Bit 0 = Freilauf Bit 1 = Aktiv
Bit_4 : BOOL ; //VLT Steuerbit: Bit 0 = Schnellstop Bit 1 = Rampe
Bit_5 : BOOL ; //VLT Steuerbit: Bit 0 = Halten Bit 1 = Rampe aktiv
Bit_6 : BOOL ; //VLT Steuerbit: Bit 0 = Rampenstop Bit 1 = Start
Bit_7 : BOOL ; //VLT Steuerbit: Bit 0 = n.Quittieren Bit 1 = Quittieren
END_STRUCT ;
Status_VLT : STRUCT //Statuswort für Danfoss Profibusanbindung
Bit_8 : BOOL ; //VLT Statusbit: Bit 0 = Drehzahl >< Soll Bit 1 = Drehzahl = Soll
Bit_9 : BOOL ; //VLT Statusbit: Bit 0 = Ortbetrieb Bit 1 = Busbetrieb
Bit_10 : BOOL ; //VLT Statusbit: Bit 0 = Frequenzgrenze Bit 1 = Frequenz OK
Bit_11 : BOOL ; //VLT Statusbit: Bit 0 = Läuft Bit 1 = Läuft nicht
Bit_12 : BOOL ; //VLT Statusbit: Bit 0 = VLT OK Bit 1 = VLT nicht OK
Bit_13 : BOOL ; //VLT Statusbit: Bit 0 = Spannung OK Bit 1 = Spannungsgrenze
Bit_14 : BOOL ; //VLT Statusbit: Bit 0 = Drehmoment OK Bit 1 = Momentengrenze
Bit_15 : BOOL ; //VLT Statusbit: Bit 0 = Timer OK Bit 1 = Timergrenze
Bit_0 : BOOL ; //VLT Statusbit: Bit 0 = Steuer. n.bereit Bit 1 = Steuerung bereit
Bit_1 : BOOL ; //VLT Statusbit: Bit 0 = VLT nicht bereit Bit 1 = VLT bereit
Bit_2 : BOOL ; //VLT Statusbit: Bit 0 = Motor Freilauf Bit 1 = Motor Aktiv
Bit_3 : BOOL ; //VLT Statusbit: Bit 0 = Kein Fehler Bit 1 = Abschaltung
Bit_4 : BOOL ; //VLT Statusbit: Bit 0 = Reserve Bit 1 = Reserve
Bit_5 : BOOL ; //VLT Statusbit: Bit 0 = Reserve Bit 1 = Reserve
Bit_6 : BOOL ; //VLT Statusbit: Bit 0 = Reserve Bit 1 = Reserve
Bit_7 : BOOL ; //VLT Statusbit: Bit 0 = Keine Warnung Bit 1 = Warnung
END_STRUCT ;
Nicht_genutzt : INT ; //Nicht genutzter Bereich (Schmiermerker)
Statuswort : INT ; //Statuswort für VLT Regler
Steuerwort : INT ; //Steuerwort für VLT Regler
END_VAR
BEGIN
NETWORK
TITLE =Ansteuerung VLT über Profibus und Istwert/Status auslesen
L #ANXX_VLT; // Eingangsadresse als Formaloperant
SLW 3; // Bitregister ausblenden
LAR1 ; // in Adressregister laden
// ------------------------- Steuerwort vorbelegen --------------------------------
SET ; // VKE auf '1' setzen
R #Steuern_VLT.Bit_0; // = Festsollwert lsb aus
R #Steuern_VLT.Bit_1; // = Festsollwert msb aus
= #Steuern_VLT.Bit_2; // = DC-Bremse aus, Rampenbetrieb ein
= #Steuern_VLT.Bit_3; // = Motor aktiv
= #Steuern_VLT.Bit_4; // = Schnellstop aus, Rampenbetrieb ein
= #Steuern_VLT.Bit_5; // = Haltebetrieb aus, Rampenbetrieb ein
R #Steuern_VLT.Bit_6; // = Rampenstop
R #Steuern_VLT.Bit_7; // = nicht quittieren
R #Steuern_VLT.Bit_8; // = Festdrehzahl aus
R #Steuern_VLT.Bit_9; // = Rampe 1 ein
R #Steuern_VLT.Bit_10; // = Bit 10 > 0 aktiv
R #Steuern_VLT.Bit_11; // = Relais 1 aus
R #Steuern_VLT.Bit_12; // = Relais 2 aus
R #Steuern_VLT.Bit_13; // = Wahleinstellung 1 lsb aus
R #Steuern_VLT.Bit_14; // = Wahleinstellung 1 msb aus
R #Steuern_VLT.Bit_15; // = Reversierung aus
// ------------------------ Statuswort / Istwert auslesen ---------------------------
L PEW [AR1,P#0.0]; // Statuswort
T #Statuswort; // in LD laden
T #Status; // zur Ausgabe
CALL "BLKMOV" (// Statuswort
SRCBLK := #Statuswort,// in Statuswort Struktur schreiben
RET_VAL := #Nicht_genutzt,//
DSTBLK := #Status_VLT);//
L PEW [AR1,P#2.0]; // Istgeschwindigkeit laden
SSI 4; // Rechtsbündig ausrichten (Vorzeichen beibehalten)
T #Speed_Ist; // Übergabe an Ausgang
O #Status_VLT.Bit_3; // Oder VLT Abschaltung
O #Status_VLT.Bit_12; // oder VLT ist nicht OK
= #Stoerung; // VLT Störung
// ----------------------------- Antrieb starten -----------------------------------
U #Start; // Und Start VLT
U #Status_VLT.Bit_0; // und Steuerung ist bereit
U #Status_VLT.Bit_1; // und VLT ist bereit
UN #Status_VLT.Bit_12; // und VLT ist OK
= #Steuern_VLT.Bit_6; // = VLT Start
CALL "BLKMOV" (// Steuerword Struktur
SRCBLK := #Steuern_VLT,// in Steuerwort für Übergabe schreiben
RET_VAL := #Nicht_genutzt,//
DSTBLK := #Steuerwort);//
// ----------------------------- Werte zum VLT -------------------------------------
L #Steuerwort; // Steuerwort
T PAW [AR1,P#0.0]; // in VLT laden
L #Sollwert; // Sollwert
SLW 4; // Linksbündig Ausrichten
T PAW [AR1,P#2.0]; // in VLT laden
END_FUNCTION