Forum: Mikrocontroller und Digitale Elektronik Offene Fragen PID Temperaturregelung


von Apricot (Gast)


Lesenswert?

Hallo zusammen,

aktuell entwerfe ich ein Regelsystem und habe dazu noch ein paar offene 
Fragen.

Es handelt sich um einen geschlossenen Behälter, der von außen über 
Heizmatten beheizt wird. Die Temperatur wird im inneren des Behälters 
gemessen und auf einen Sollwert festgelegt.

Für die Regelung habe ich in Python einen PID-Regler programmiert. Da 
ich nur Heizen und nicht Kühlen kann und aufgrund der Trägheit kein 
Wind-Up entsteht, habe ich als Grenzen des Systems [0,100] festgelegt. 
Eingangsgröße ist die gemessene Temperatur. Die Heizmatten werden in 
einem Zeitraum von x-Sekunden für die Zeit y, abhängig von der 
Stellgröße, mit Spannung versorgt, den Rest sind sie aus (also quasi 
pseudo-PWM). Realisiert wird dies über einen GPIO meines verwendeten 
PCs.

Für das weitere Tuning des Reglers bin ich mir allerdings noch unsicher. 
Wenn ich über die Sprungantwort meine Parameter bestimme, muss ich diese 
noch auf meine Grenzen skalieren. Wie gehe ich dabei vor bzw. worauf 
muss ich achten? Oder wäre es besser nacheinander den P-, sowie I-Anteil 
einzustellen (D-Anteil würde ich aufgrund der Trägheit weglassen). Oder 
gibt es generell bessere Methoden?

Überschwingen möchte ich generell vermeiden, da das System um einiges 
besser heizt als kühlt. Die maximale Heizleistung beträgt ca. 0.5K/min, 
damit man einen Eindruck für das System bekommt. Die Solltemperatur 
sollte ziemlich genau erreicht und gehalten werden, weshalb ein 
Zweipunktregler eher rausfällt. Das Ganze soll erstmal für einen 
Betriebspunkt funktionieren. Für Tipps oder Verbesserungen beim 
Regleraufbau bin ich ebenso dankbar.

Ich hoffe ich habe mich relativ verständlich ausgedrückt und jemand kann 
seine Erfahrungen zum dem Thema mit mir teilen.

Vielen Dank!

Apricot

von Pandur S. (jetztnicht)


Lesenswert?

Ich empfehle die Funktion von Leistung zu Temperatur aufzunehmen, und 
erst mal diesen Wert zu verwenden. Darueber kann man noch einen 
langsamen Integrator laufen lassen.

von MaWin (Gast)


Lesenswert?

Apricot schrieb:
> jemand kann seine Erfahrungen

Bringe die Heizung IM temperaturisolierten Gehäuse an, nicht aussen.

Du hast sonst ewige Verzögerungszeiten.

Eine Vorab-Abschätzung misslingt, wenn du IN den Behälter massereiche 
Dinge stellst die aufgeheizt werden sollen, dann ist die thermische 
Trägheit plötzlich eine ganz andere.

von Apricot (Gast)


Lesenswert?

Danke für die schnellen Antworten. Eine Anbringung der Heizmatten im 
Behälter ist leider nicht möglich.

Mein Ansatz wäre dann wie folgt: Erst den P-Anteil und I-Anteil 
bestimmen (ähnlich zu
https://tlk-energy.de/blog/pid-regler-einstellen) und anschließend wie 
von Pandur beschrieben eine Funktion Leistung zu Temperatur zu 
erstellen. Sobald P + I <= 100 annimmt (damit keine Sprünge in der 
Stellgröße entstehen), setze ich I = Output bei Sollwert.

Würde das so Sinn machen?

Vielen Dank!

von Apricot (Gast)


Lesenswert?

Apricot schrieb:
> Danke für die schnellen Antworten. Eine Anbringung der Heizmatten
> im
> Behälter ist leider nicht möglich.
>
> Mein Ansatz wäre dann wie folgt: Erst den P-Anteil und I-Anteil
> bestimmen (ähnlich zu
> https://tlk-energy.de/blog/pid-regler-einstellen) und anschließend wie
> von Pandur beschrieben eine Funktion Leistung zu Temperatur zu
> erstellen. Sobald P + I <= 100 annimmt (damit keine Sprünge in der
> Stellgröße entstehen), setze ich I = Output bei Sollwert.
>
> Würde das so Sinn machen?
>
> Vielen Dank!

Edit:
Kleiner Denkfehler, wohl eher P <= 100 damit die Anfangstemperatur 
keinen Einfluss hat. Bei kleinem Ki sollte sich idealerweise bis zum 
Erreichen des Sollwertes keine allzu große Änderung des Wertes I-Wertes 
mehr einstellen.

von neubi (Gast)


Angehängte Dateien:

Lesenswert?

lg

von Apricot (Gast)


Lesenswert?

Danke für das PDF, die einzelnen Verfahren sind sehr verständlich 
erklärt.
Das Problem dabei ist eher die Skalierung der Parameter auf meine 
Grenzen der PWM von [0,100].

Generell würde ich dann jedoch erstmal meine PI-Regelung erweitern. 
Entweder eine Vorsteuerung abhängig von Leistung/Temperatur mit einbauen 
und anschließend den PI-Regler nur als Korrektur benutzen. Oder wie 
bereits beschrieben den I-Wert ab einer bestimmten Abweichung der 
Solltemperatur den zugehörigen Wert annehmen lassen, damit das System 
sich trotz niedrigem Ki nicht ewig einschwingen muss. Oder wäre das zu 
viel "gepfuscht"?

von Purzel H. (hacky)


Lesenswert?

Ich wuerde den Integrator die Differenz zur gerechneten Funktion machen 
lassen.

Also Stellwert = function(temp-ambient)+ error * P + integrator * I

Im Endfall ist dass der Proportionalfehler=0 und der Integrator 
uebernimmt die Abweichung zwischen Function und Realitaet. Dann kann man 
den Integrator mit einem windup und einer Grenze versehen. Der 
Integrator laeuft nicht solange der Stellwert am Anschlag ist, und 
nachher ist er auf ungefaehrliche Werte begrenzt.

von Wolfgang (Gast)


Lesenswert?

Apricot schrieb:
> Überschwingen möchte ich generell vermeiden, da das System um einiges
> besser heizt als kühlt. Die maximale Heizleistung beträgt ca. 0.5K/min,
> damit man einen Eindruck für das System bekommt. Die Solltemperatur
> sollte ziemlich genau erreicht und gehalten werden, weshalb ein
> Zweipunktregler eher rausfällt.

Dann brauchst du einen intelligenteren Regler.
Du kennst die Temperatur in deinem Volumen, du kennst die 
Umgebungstemperatur, du kennst die Isolation gegenüber der Umgebung, du 
kennst die Heizleistung deiner Heizmatte und du kennst die thermische 
Masse. Wenn du das in ein Modell für dein System reinsteckst, bekommst 
du die erforderliche Heizleistung zur Kompensation der Wärmeverluste und 
die zusätzlich erforderliche Energie, um dein Volumen von der 
Ist-Temperatur auf die Soll-Temperatur zu bewegen. Damit kannst du deine 
Heizung so steuern, dass keine Überschwinger auftreten (System endlicher 
Einstellzeit).
PID ist nicht immer das Mittel der Wahl.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.