Quellcode des PI-Reglers und Diagrammdaten
Hallo,
also dieSache sieht jetzt so aus.
Die Formeln müßten jetzt stimmen. Hier meine PI-Regelung:
Code:
Function PIRegler() as word
local Reglerabweichung as single
local tmp as single
local Ausgabe as single
Reglerabweichung = TSoll - TIst ' Temperaturabweichung
' I-Anteil
tmp = Reglerabweichung * IBeiwert
if Compare1A < 255 then ' Integral wirkt erst im Regelbereich
_TDeltaSumme = _TDeltaSumme + tmp
else
_TDeltaSumme = 0
end if
if _TDeltaSumme < 0 then _TDeltaSumme = 0
if _TDeltaSumme > 255 then _TDeltaSumme = 255
' P-Anteil
tmp = Reglerabweichung * PBeiwert
v2 = tmp
Ausgabe = _TDeltaSumme + tmp
if Ausgabe < 0 then Ausgabe = 0
If Ausgabe > 255 then Ausgabe = 255
PIRegler = Ausgabe
End Function
Das Ergebnis dürfte sich sehen lassen.
Hier eine Tabelle der gemessenen Werte währen der Regelung.
Die Werte kannste direkt kopieren und in Works oder Excel einfügen und dann mal grafisch anschauen. Der erste Wert ist die Solltemperatur, der zweite die Isttemperatur, der dritte der PWM-Wert (8 Bit), und der vierte der P-Anteil.
Wenn du meinen Code anschaust, wird dir bestimmt auffallen, daß ich _TDeltaSumme auf 0 setze, wenn PWM (Compare1A) im anschlag hängt und nur die Summenbildung zulasse, wenn die Temperatur im Regelbereich liegt.
Damit hatte ich bisher das beste Ergebnis. Die Einregelzeit war die Kürzeste, kaum ein Überschwinger und stabil.
Die anderen Varianten wie Symetrische _TDeltaSumme-Begrenzung von -255 bis +255 über und untersteuern erheblich. Schwingen ist die Folge.
den Kp habe ich so berechnet. Annahme: der Regelbereich soll beginnen, wenn eine Abweichung von < 5°C zw. Soll und Istwert herrscht. Das sollte genügend Reserve geben wegen der Nachheizzeit des Termoelements. Also muß die Verstärkung bei 5°C * Kp = 255 ergeben.
Folglich is Kp=255/5 (Ich habe 51 gewählt)
Mit Ki habe ich etwas experimentiert. je größer ich den mache, desto stärker wird die Heizung angesteuert (im Regelbereich). Mit Kp=2 fahre ich ganz gut.
Willste mal das Diagramm in Excel oder Works anschauen? Der Messtakt ist 1 Sekunde.
Diagrammdaten für Excel oder Works im Anhang: