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
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.
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.
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!
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.
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"?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.