Hallo,

so nach 4 Wochen Montage meld ich mich nochmal. Habe gesehen, dass die Regler auf der 1200er nur welche mit Anti-Wind-up, d.h. für meinen Fall (völlig) ungeeignet sind.
Deshalb hab ich jetzt begonnen einen eigenen Regler zu schreiben:

Code:
IF "FirstScan" THEN
    #Kp := 10.0;
    #Ti := 1000.0;
    #Td := 0.5;
    #e_sum := 0.0;
    #Cycle := 0.05;
END_IF;

#e := #Sollwert - #Istwert;                 // Regeldifferenz

IF #e <= 10.0 AND #e >= -10.0 THEN          // Wind-up: I-Anteil wird für große Regeldifferenz ausgeschaltet
    #e_sum := #e_sum + #e;                       // für I-Anteil    
ELSE                                                             // Regelabweichung muss zwischen 10 und -10 liegen
    #e_sum := 0.0;
END_IF;


#P_Anteil := #Kp * #e;                                  // P-Anteil des Reglers
#I_Anteil := #Ti * #e_sum * #Cycle;             // I-Anteil des Reglers
#D_Anteil := #Td * (#e - #e_alt) / #Cycle;   // D-Anteil des Reglers
#e_alt := #e;                                               // für D-Anteil 


IF #P_Anteil > 100.0 THEN                            // Ausgangsgrößen begrenzen
    #P_Anteil := 100.0;
END_IF;

IF #I_Anteil > 100.0 THEN                   // Ausgangsgrößen begrenzen
    #I_Anteil := 100.0;
END_IF;

IF #D_Anteil > 100.0 THEN                   // Ausgangsgrößen begrenzen
    #D_Anteil := 100.0;
END_IF;




#Stellwert := #P_Anteil + #I_Anteil + #D_Anteil;    // Ausgang berechnen

IF #Stellwert > 100.0 THEN                  // Ausgang begrenzen
    #Stellwert := 100.0;
END_IF;

IF #Stellwert < 0.0 THEN                    // Ausgang begrenzen
    #Stellwert := 0.0;
END_IF;
Ich weiß der Code kann noch bzgl. Zykluszeit und Programmierung optimiert werden, möchte jetzt nur wissen ob meine Idee so funktionieren könnte. Stimmt mein Teil mit dem Wind-up? Muss ich die Ausgangsgrößen noch weiter Begrenzen? Würde eine Rückführung des P- und D-Anteil eine Verbesserung bringen? Bin wieder für Ideen und Anregungen sehr dankbar.


Gruß