Wie nehme ich die Sprungantwort eines Ofens auf?
Hallo!
Ich versuche gerade, einen PID-Regler für einen Ofen zu bauen und zu programmieren. Alles funktioniert soweit, ich habe zunächst einen Sprung auf 500°C auf das System gegeben und den Regler auf [P=1,I=0,D=0] eingestellt. Nun will die Ergebnisse auswerten.
Jetzt frage ich mich aber:
1: Muss ich eine sehr viel höhere Temperatur eingeben, sodass die Temperatur gegen einen Wert konvergiert?
Ich möchte meine Parameter nach dem Ziegler-Nichols-Verfahren abschätzen und habe bisher keine einfache Erklärung gefunden, wie ich eine solche Aufnahme durchführe.
Anbei die bisher aufgenommene Kurve und deren numerische Ableitung. Aus dem Maximum der Ableitung (oder dem ihres gleitenden Mittelwerts) habe ich den Wendepunkt bestimmt.
Grüße an Alle!
3 Antworten
Also wenn ich das jetzt richtig verstehe, dann hast du den Regelkreis mit einem P-Regler (Kp = 1) geschlossen. Der Plot zeigt dann das Führungsverhalten des Regelkreises. Normalerweise (für stabile Strecken) erfolgt eine Identifikation der Strecke ohne einen Regelkreis. Als Stellgröße wird bspw. ein Sprung gewählt und dann der Ausgang des Systems beobachtet. Bei einem einfachen thermischen System sollte dann das Streckenverhalten durch G(s) = K/(1 + s*T) gegeben sein, kann sich jedoch auch komplexer gestalten (Pole mit unterschiedlicher Dynamik). Nach Bestimmung der Antwort nach obigen Ansatz können dann bspw. die Tuning-Regeln nach Ziegler und Nichols verwendet werden. Soll das ganze im Regelkreis betrieben werden, so haben Ziegler und Nichols ebenfalls ein Verfahren für die Auslegung angegeben. Hierzu wird der Gain des P-Reglers solange erhöht, bis das System eine Dauerschwingung ausführt (für viele Systeme ist dieser Ansatz jedoch nicht zu empfehlen). Auf Basis des Kp_krit und der Periodendauer kann dann der PID-Regler bestimmt werden. Für die praktische Anwendung ist schließlich noch zu beachten, dass deine Stellgröße begrenzt ist. Somit ist dann für den I-Anteil des Reglers ein Anti-Windup Glied einzuführen um das dynamische Verhalten wesentlich zu verbessern.
1: Muss ich eine sehr viel höhere Temperatur eingeben, sodass die Temperatur gegen einen Wert konvergiert
So wie es aussieht, konvergiert die Kurve doch gegen irgendeinen Wert (der seltsamerweise deutlich unter 500° zu liegen scheint).
Es sieht für mich so aus, als hätte das System auch nach einer Stunde noch keinen stationären Zustand erreicht.
- Du musst den Ort der Messung zuerst verbessern Alles andere führt zu nichts.
- Bei Integral-- und Differenzialaktion die Zeitkonstante in Sekunden angeben. Für eine Ofenheizung ist eine I-Zeit von 10 Sekunden viel zu kurz!
Das stimmt. Das tut er nicht. Mein Vorgehen war bisher immer, die gemessenen kurven mathematisch anzunähern. Bisher war ich davon überzeugt, dass mir eine Extrapolation der Näherung einen hinreichend genauen Wert liefern wird.
Die seltsame "Form" der Kurve und die (auch rechnerisch) viel zu niedrige Endtemperatur würde ich mit der Position des Sensors direkt über den Heizelementen begründen. Ich habe bereits versucht, Parameter zu berechnen (KP=9.4 KI=10.6 KD=470) und einen zweiten Testlauf gestartet. Leider erreicht der I-Anteil schon nach kurzer Zeit astronomische Werte, sodass die Temperatur auf bis zu 700°C überschwingt.