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

    #46
    OK, dann fang' ich mal an...

    1.
    Der "klassische" PI, wie er bei Wikipedia beschrieben ist, ist z.B. Produkt aus P und I. Ich würde zur Flexibilität eher Summe aus P und I bevorzugen, damit kann mit kP=0 auch einen reinen I-Regler machen ohne die Struktur an sich zu ändern.

    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.

    3.
    siehe 2. , allerdings in Abhängigkeit der Umweltbedinungen (welche auch immer). Vorstellen könnte ich mir z.B. bei geringer Vorlauftemperatur den P-Anteil größer zu machen. Vielleicht geht das aber auch besser über 4.

    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.
    Wenn man etwas mehr Zeit hat, macht man den Wert nicht nur in Abhängigkeit der Solltemp. sondern auch Außentemp. und Vorlauftemp.

    5.
    Eine Begenzung der einzelnen Regleranteile kann sich in vielen Fällen als sinnvoll erweisen, um z.B. Überschwinger zu reduzieren.
    Endlich umgezogen. Fertig? Noch lange nicht... ;-)

    Kommentar


      #47
      Zitat von Hauke Beitrag anzeigen
      OK, dann fang' ich mal an...
      5.
      Eine Begenzung der einzelnen Regleranteile kann sich in vielen Fällen als sinnvoll erweisen, um z.B. Überschwinger zu reduzieren.
      Auch der Ausgang ist ja begrenzt (max. 100%).
      Die Integration erfolgt zeitdiskret (quasi Summation).
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #48
        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
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar


          #49
          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.

          Kommentar


            #50
            @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....
            Endlich umgezogen. Fertig? Noch lange nicht... ;-)

            Kommentar


              #51
              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.

              Kommentar


                #52
                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.
                Endlich umgezogen. Fertig? Noch lange nicht... ;-)

                Kommentar


                  #53
                  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
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar


                    #54
                    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
                    Endlich umgezogen. Fertig? Noch lange nicht... ;-)

                    Kommentar


                      #55
                      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.
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        #56
                        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
                        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                        -> Bitte KEINE PNs!

                        Kommentar


                          #57
                          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
                          Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

                          Kommentar


                            #58
                            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).
                            Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

                            Kommentar


                              #59
                              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
                              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                              -> Bitte KEINE PNs!

                              Kommentar


                                #60
                                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.
                                Endlich umgezogen. Fertig? Noch lange nicht... ;-)

                                Kommentar

                                Lädt...
                                X