Ankündigung

Einklappen
Keine Ankündigung bisher.

Heizungsregelung 2 Punkt, PI, PWM was ist schlau

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • lobo
    antwortet
    Zitat von Hauke Beitrag anzeigen
    Hat aber folgenden Nachteil: Beim Einschalten der Regelung oder bei Verstellen der Solltemperatur wird sich zwangsläufig ein I-Anteil aufbauen, einfach weil für eine gewisse Zeit eine Regelabweichugn da ist. Durch Addition des Arbeitspunktes (unterstellen wir mal das der ganz gut getroffen ist) muss der I-Anteil im eingeschwungenen Zustand Null werden. Da aber er I-Anteil erst wieder anfängt kleiner zu werden wenn du über die Solltemperatur hinausgeschossen bist, wirst du zwangsläufig einen mehr oder weniger großen Überschwinger (oder Unterschwinger beim Sollwertsprung nach unten) erhalten.
    Das sehe ich anders. Du gehst in Deinen Überlegungen eigentlich von einem I-Regler (mit P-Unterstützung) aus. Wenn Du den Regler entsprechend auslegst, kannst Du dann natürlich den P-Anteil deutlich vergrößern und dafür den I-Anteil reduzieren (den brauchst Du ja nur um die immer vorhandene Regelabweichung eines P-Reglers auszugleichen). Dadurch wird Dein Regler schneller und er sollte (sofern er nicht grenzwertig ausgelegt ist) mit relativ geringem Überschwingen reagieren. Leider liegen meine Regelungstechnik-Vorlesungen ca. 14 Jahre zurück - und die Unterlagen sind irgendwo auf'm Speicher... aber wir haben damals verschiedene Regler im Labor ausgelegt (u.a. eine von einem Magnet schwebend gehaltene Kugel was nur durch eine verschachtelte Regelung ging) und dabei richtige alte echte Analog-Rechner verwendet, wo man die Parameter über veränderliche Widerstände einstellen konnte (schwärm - die alten Zeiten ...).

    Zitat von Hauke Beitrag anzeigen
    Ich könnte mir vorstellen das bei einem so trägen System selbst eine 2-Punkt Regelung Über- und Unterschwinger macht.
    Klar - wenn eine Regelung heftig überschwingt, dann doch die 2-Punkt-Regelung. Das ist doch der Nachteil einer Zweipunktreglung. Immerhin ist sie dafür stabil und kommt in geringstmöglicher Zeit auf den Sollwert. Wenn Du auf der anderen Seite ein aperiodisches Regelverhalten zugrundelegst, dann schwingt der gar nicht über --- kommt dafür aber auch nicht auf den Sollwert --- oder doch --- irgendwann --- vielleicht....

    Zitat von makki Beitrag anzeigen
    Ja, glaube ich, aber wo steht die Formel für den "Universalregler"
    Das musst Du die Jungs und Mädels von Eurotherm, Omron und wen auch immer fragen. Die Arbeiten schon seit Jahrzehnten an der "Weltformel der Regelungstechnik". Vor 20 Jahren ist da z.B. der Begriff "Fuzzy-Logik" eingeschlagen - den ich in diesem Fall zu einem nicht unerheblichen Teil allerdings für einen "Maggeding-Trick" halte . Auf alle Fälle gibt es zusätzlich noch den sog. "Cutback". Soweit ich verstanden habe, ist dies ein Wert, ab dem der Regler bereits einem drohen Überschwinger entgegenwirkt. Bei großen Sollwertsprüngen (Anheizen) wird also beim Erreichen des Cutback (low) bereits die Heizleistung reduziert. Dadurch kann man die Regelung sehr schnell auslegen, ohne gleich zu große Überschwinger in Kauf nehmen zu müssen. Der Rest ist (soweit ich es aus den Anleitungen ersehen kann) genauso wie die Regler im Häuschen eher ein I-Regler denn ein wirklicher p-Regler mit Arbeitspunkt.

    Viele Grüße,

    Stefan

    Einen Kommentar schreiben:


  • Hauke
    antwortet
    Zitat von enertegus Beitrag anzeigen
    ...aber doch recht einfach auch falsch parametriert werden kann; In diesem Fall schwingt das Teil ohne Ende.
    Das bekommt man mit einem schlecht parametrierte PI mindestens genauso gut hin...

    Ich denke ein Regler wird generell nur dann funktionieren wenn er auf die Regelstrecke angepasst ist. Wie gut funktionieren denn die "Plug&Play"-Regler in den herkömmlichen RTR's? Ich könnte mir vorstellen das bei einem so trägen System selbst eine 2-Punkt Regelung Über- und Unterschwinger macht.

    Wenn man die Eigenschaften der Strecke kennt kann man einen Regler so auslegen das die Dämpfung groß genug ist um eine periodische Schwingung zu vermeiden. Ich könnte mir vorstellen das man mit zwei Sätzen Standardparameter (für FBH und Heizkörper) schon recht gut hinkommt. Wer's genauer/schneller/besser braucht muss halt frickeln....

    Einen Kommentar schreiben:


  • Hauke
    antwortet
    Zitat von makki Beitrag anzeigen
    Wir sprechen jetzt aber von möglichst Plug&Play für Anwender (wie z.B. mich ) die keine Ahnung von Regelungstechnik haben wollen:
    OK, das war mir bisher nicht klar. Ich hatte die Anfrage nach dem "optimalen Regler" rein in technischer Hinsicht interpretiert.

    Zitat von lobo Beitrag anzeigen
    Aktoransteuerung = P + I + D + Arbeitspunkt
    Genau das war auch mein erster Gedanke. Hat aber folgenden Nachteil: Beim Einschalten der Regelung oder bei Verstellen der Solltemperatur wird sich zwangsläufig ein I-Anteil aufbauen, einfach weil für eine gewisse Zeit eine Regelabweichugn da ist. Durch Addition des Arbeitspunktes (unterstellen wir mal das der ganz gut getroffen ist) muss der I-Anteil im eingeschwungenen Zustand Null werden. Da aber er I-Anteil erst wieder anfängt kleiner zu werden wenn du über die Solltemperatur hinausgeschossen bist, wirst du zwangsläufig einen mehr oder weniger großen Überschwinger (oder Unterschwinger beim Sollwertsprung nach unten) erhalten.
    Deswegen der Gedanke den "Arbeitspunkt" im I-Anteil zu belassen wie das bei klassischen Regler auch gemacht wird. Dann muss nach Erreichen der Solltemperatur nicht so viel (im Idealfall gar nichts) vom I-Anteil abgebaut werden.
    Die Schnelligkeit erreiche ich über den D-Anteil. Damit wird für eine gewisse Zeit erstmal "übersteuert", also der Ausgang über den Arbeitspunkt angehoben um den Sollwert schneller zu erreichen. Genau wie der P-Anteil ist das aber bei Erreichen des Sollwertes wieder weg.

    Einen Kommentar schreiben:


  • makki
    antwortet
    Zitat von lobo Beitrag anzeigen
    Schau' Dir mal einen beliebigen Universalregler an - die haben eigentlich fast alle selbstoptimierende Regelverhalten.
    Ja, glaube ich, aber wo steht die Formel für den "Universalregler"

    Makki

    Einen Kommentar schreiben:


  • lobo
    antwortet
    Zitat von makki Beitrag anzeigen
    Eine "perfekte" Regelung müsste das wenn dann (sagt der Laie in mir) ohne Parameter (ausser Soll&Ist) vom "Anwender" zu verlangen - einfach können. Aufgrund tausender Parameter, Vorlieben etc. dürfte das aber ein Wunschtraum bleiben..
    Schau' Dir mal einen beliebigen Universalregler an - die haben eigentlich fast alle selbstoptimierende Regelverhalten. Da wird seitens der Regler automatisch die Regelstrecke vermessen und danach die Parameter eingestellt (zusätzlich zu einigen anderen Feinheiten).

    Einen Kommentar schreiben:


  • lobo
    antwortet
    Hallo Hauke,

    zunächst mal super, dass Du Dir die Mühe gemacht hast. Das sieht sehr gut aus (auch wenn ich mir den Code nicht bis ins Detail angesehen habe) und erleichtert mir auch, mein Problem mit den üblichen Reglern zu verdeutlichen.

    Zitat von Hauke Beitrag anzeigen
    2.
    kP und Tn müssen ja nicht zwangsläufig fix sein. Man könnte z.B. auf das kP und/oder Tn einen Faktor multiplizieren der in Abhängigkeit von der Regelabweichnung gebildet wird.

    4.
    Beim klassichen PI ist der im eingeregelten Zustand der P-Anteil =0. Das PWM das ich brauche um die Raumtemperatur auf einem bestimmten Niveau zu halten kommt allein aus dem I-Anteil.
    Besser wäre z.B. in Abhängigkeit von Solltemperatur schon mal einen bestimmten Wert "draufzuschlagen". Wenn ich weiß das ich für konstant 21°C Raumtemp. beispielsweise 48,7%PWM brauche und für 18°C 23,2% dann kann ich das ja pauschal schon mal addieren und den I-Regler nur noch den Rest machen lassen. Der P-Anteil sorgt dann noch dafür das das Einregeln etwas schneller geht.
    das ist genau der Punkt, den ich vorher angesprochen hatte. Und bei dem, was ich als klassische Regelung bezeichne, geht man immer von einem Arbeitspunkt aus. Damit ist zwar beim eingeschwungenen System der Beitrag des P-Anteils "0", aber die Stellgröße hat dennoch einen von Null verschiedenen Wert. Der Punkt 2. fällt dann bei Dir einfach weg, weil das was Du für Kpr beschreibst ist einfach der P-Anteil.

    Genau das mit dem Arbeitspunkt machen die "Häuschenregler" nicht - und leider auch nicht Dein Algorithmus.

    Was hältst Du davon, wenn die Zeile für die aktuelle Stellgröße (bei Dir "Aktoransteuerung") lauten würde:

    Aktoransteuerung = P + I + D + Arbeitspunkt

    Der Arbeitspunkt wäre jetzt für ein normal eingeschwungenes System bei einer üblichen Raumtemperatur zu bestimmen (ideal: 50 %). Das funktioniert natürlich nur, wenn P, I und D auch negaiv werden können und was mir noch unklar ist, wie da am Ende auf 0 - 100 % (oder 0 - 255) gerechnet wird - bzw. an welcher Stelle die Werte begrenzt werden. So halte ich es für sinnvoll, besonders den I-Anteil zu begrenzen.

    Viele Grüße,

    Stefan

    Einen Kommentar schreiben:


  • makki
    antwortet
    Ich denk ich werds mal umsetzen, dem Lerneffekt über Regelungstechnik wegen (ich lerne sowas mit Ursache&Wirkung leichter..)

    Wir sprechen jetzt aber von möglichst Plug&Play für Anwender (wie z.B. mich ) die keine Ahnung von Regelungstechnik haben wollen:
    Ich sehe das aber ansonsten wie energetus: Ein PI-Regler enthält schon zwei Parameter, mit denen man - falsch gesetzt - viel kaputt machen kann, einer mehr erhöht den Fehler um 50%..
    Eine "perfekte" Regelung müsste das wenn dann (sagt der Laie in mir) ohne Parameter (ausser Soll&Ist) vom "Anwender" zu verlangen - einfach können. Aufgrund tausender Parameter, Vorlieben etc. dürfte das aber ein Wunschtraum bleiben..

    Makki

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von Hauke Beitrag anzeigen
    Hier wie angekündigt mal ein erster Entwurf für eine PID-Regelung.
    Ich persönlich denke, dass ein PID Regler zwar recht gut ist, aber doch recht einfach auch falsch parametriert werden kann; In diesem Fall schwingt das Teil ohne Ende. Daher würde ich den normalen User einen PI Regler empfehlen - zum Heizen ist das m.E. das Optimum.

    Einen Kommentar schreiben:


  • Hauke
    antwortet
    Hier wie angekündigt mal ein erster Entwurf für eine PID-Regelung. Mangels Versuchsumgebung kann ich das ganze leider nicht testen. Die Parameter sind auch nur gaaaaaaaaanz grob geschätzt.
    Ich hab auch noch nicht simuliert was der so tut, ist aber ohne Daten zur Strecke glaube ich auch nicht sinnvoll.
    Ich könnte ja mal versuchen das ganze zu simulieren wenn sich jemand findet der mir mal sowas wie ne Sprungantwort oder einfach nur mitgeschriebene Messwerte der betreffenden Größen zur Verfügung stellen kann.

    Code:
    // PID-Regler für Raumtemperaturregelung
    /*diese Daten müssen vom System zur Verfügung gestellt werden*/
    Raumtemperatur [°C]
    Solltemperatur [°C]
    Zeit [min] /*alternativ: den Regler in fixen Intervallen berechnen und das Intervall als Festwert mit vorgeben*/
    /*diese Daten sollen auf den Bus geschrieben werden*/
    Aktoransteuerung [%]
    /*hier finden sich die Einstellparameter zur Applikation des Reglers*/
    /*generell git: Parameter=0 deaktiviert den entsprechenden Anteil (es kann also mit PI, P, I, PID, PD usw. geregelt werden*/
    kP = 5     /* [%/°C]   kP = 1 -> 1°C Regelabweichung führt zu 1% PWM am Ausgang */
    kI = 0.005 /* [%/°C*s] kI = 1 -> 1°C Regelabweichung führt pro Minute zu einer Erhöhung um 1% PWM am Ausgang */
    kD = 5     /* [%*s/°C] kD = 1 -> Gradient von 1°C/min Regelabweichung führt zu 1% PWM am Ausgang */
    fD = 0.075 /* [-]      fD = Filterkonstante für den Sollwertgradienten*/
    Regeldifferenz = Solltemperatur - Raumtemperatur
    if init then // also erstmalige Berechnung, dann gibt es keine "alt"-Werte
     Gradient = Regelabweichung
     dT = 0
    else
     dT = Zeit - Zeit_alt /* entsprechend umrechnen damit die Zeit in min rauskommt, dann passt das mit den Parametern besser */
     /* Alternative: dT in min vorgeben (Dann muss aber der Regler in jedem Fall mit der entsprechenden Frequenz berechnet werden!) */
     Istwertgradient = Regelabweichung_alt - Regelabweichung) / dT
     /* um den D-Anteil bei Sollwertsprüngen sinnvoll bedienen dürfte eine Filterung des Solltemperatur-Gradienten notwendig sein 
     (Versuch: PT1-Filter)*/
     Sollwertgradient_roh = (Solltemperatur_alt - Solltemperatur) / dT
     Sollwertgradient = fD*dT * Sollwertgradient_roh + (1 - fD*dT) * Sollwertgradient_alt
    endif
     
    /*hier der eigentliche Regler*/
    P = kP * Regeldifferenz
    I = I_alt + kI * Regeldifferenz
    D = kD * (Istwertgradient - Sollwertgradient)
    Aktoransteuerung = P + I + D
    /*Werte für den nächsten Rechenschritt speichern*/
    I_alt = I
    Zeit_alt = Zeit
    Regelabweichung_alt = Regelabweichung
    Solltemperatur_alt = Solltemperatur
    Sollwertgradient_alt = Sollwertgradient

    Einen Kommentar schreiben:


  • makki
    antwortet
    Zitat von Hauke Beitrag anzeigen
    Dann muss ich mich (erstmal) nicht mit Perl etc. quälen...
    Eben

    Der PI-Regler tut das, was ich von dem PI-Baustein fürn HS programmatisch 1:1 umgesetzt habe bzw. was die gängigen Wikipedias so hergeben
    (bis auf den, richtig, Reset bei Sollwertverstellung, den hab ich AFAIR dazugedichtet weil mich das bei mir gestört hatte, das er nicht asap voll auf/zu macht - ob das nun gut,richtig/falsch ist: ?)

    Makki

    Einen Kommentar schreiben:


  • Hauke
    antwortet
    Hey Männers,

    wie konnte ich eigentlich 6. vergessen?


    6.
    Eine derartig träge Strecke wie eine RTR ist eigentlich ein klassischer Anwendungsfall für einen PID-Regler.
    Insbesondere da es vermutlich Totzeiten in der Strecke gibt (Stellventil muss erst auf oder zufahren, Heizung muss warm werden und gibt auch nach völligen Schließen des Ventils u.U. noch Wärme an den Raum ab, ...) wird man denke mich mit einem PI auf Dauer nicht glücklich.
    Auch die von mir zuerst angedachte Vorsteuerung ist vielleicht in Verbindung mit dem I-Anteil der ja dann bei Erreichen des Sollwertes erst noch komplett abgebaut werden muss nicht unbedingt die beste Lösung (dürfte zu Überschwingern führen).




    Ich denke ich werde mich die Tage mal hinsetzen und einen Algorithmus entwerfen, vielleicht kann das ja dann jemand für WG oder EibPC übersetzen und ausprobieren. Dann muss ich mich (erstmal) nicht mit Perl etc. quälen...
    Falls mir jemand ein paar Daten seiner Regelstrecke (Sprungantwort, Verhalten bei Sollwertsprung oder einfach nur laufenden Betrieb gelogt) zur Verfügung stellen könnte wäre das u.U. hilfreich. Wenn vorhanden auch gerne mit Außen- und Vorlauftemperatur. Dann kann ich auch gleich die Parameter für den Regler vorschlagen.

    Einen Kommentar schreiben:


  • franzler
    antwortet
    Abgesehen davon ist es ja kein PI sondern "nur" ein P
    Stimmt genau deswegen ist es auch nur eine Übergangslösung. eine vernünftige PI-Regelung würde den Basiswert auch verüberflüssigen.

    Einen Kommentar schreiben:


  • Hauke
    antwortet
    @Makki:
    Leider bin ich nicht so bewandert in Perl, hast du eine Empfehlung für eine gute Einführung? Ich denke im groben hab ich verstanden was dein Script macht, würde es aber gern im Detail verstehen um ggf. Änderungsvorschläge direkt für den Quelltext machen können.
    Außerdem ist das WG bei mir ohnehin definitiv gesetzt, d.h. früher oder später muss ich mich doch damit auseinander setzen ;-)

    Machst du immer einen Reset wenn der Sollwert geändert wird? Folgendes Beispiel: Solltemp ist noch nicht erreicht und neuer Sollwert (größer als der alte) wird gesetzt. -> I-Anteil Reset -> es wird u.U. erstmal kälter...

    Von dem EibPC hab ich auch noch nicht alles verstanden, in welcher Sprache ist das jetzt wieder geschrieben?

    @franzler:
    Den Ansatz mit der Außentemperatur find' ich schon mal nicht schlecht, die Paramter hab ich jetzt noch nicht im Detail studiert. Allerdings bringst du wenn ich das richtig verstehe auch bei Außemp. bis zu 5 K über der Solltemp. noch einen Offset an?
    Abgesehen davon ist es ja kein PI sondern "nur" ein P....

    Einen Kommentar schreiben:


  • franzler
    antwortet
    Ein etwas anderer Ansatz (realisiert im linknx) welcher Raumspezifik und Außentemperatur (damit indirekt auch den Vorlauf) in einem Basiswert berücksichtigt.
    atd = math.min(math.max(obj("soll_raum")-obj("temp_aussen")-5,0),25);
    basis = 160*(1-atd^(-0.02*atd));
    delta = obj("soll_raum")-obj("ist_raum");
    value = math.floor(math.min(math.max((250*delta)+basis, 0),255)+0,5);
    set("stellwert_raum", value);
    Würde ich auch gern durch etwas besseres ersetzen.

    Einen Kommentar schreiben:


  • makki
    antwortet
    Die aktuellen Umsetzungen finden sich hier, hier, an dem schaltenden PI-Regler für HS hab ich nie weitergemacht, aber das Plugin macht programmatisch dasselbe..
    Aber richtig: gesucht ist die goldene Formel

    Makki

    Einen Kommentar schreiben:

Lädt...
X