Ankündigung

Einklappen
Keine Ankündigung bisher.

Multi-RTR (PI-Regler)

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

    #31
    Zitat von haegar80 Beitrag anzeigen
    Bedeutet das nicht, daß bei Soll = Istperperatur eine Stellgröße von 0 ausgegeben wird?
    Hi,

    solange der Integralanteil nicht Null ist, ist auch die Stellgröße nicht Null. Ich finde dieses Verhalten des PI-Reglers für träge Fussbodenheizungen nicht so ideal und lösche deshalb mal probeweise bei erreichen der Solltemperatur den I-Anteil und damit ist auch die Stellgröße sofort Null.

    Gruß
    Carsten

    Kommentar


      #32
      Sorry, ich kann Euch noch immer nicht ganz folgen

      @Sascha - redest Du von der Stellgröße des Reglers oder nur von einem Regleranteil? Die Stellgröße (Ausgabewert des Reglers) setzt sich zusammen aus der Summe der gewichteten Regleranteile (hier P + I)

      @Carsten - Du versuchst hier gerade den Regler zu missbrauchen Natürlich soll der Regler bei Erreichen der Solltemperatur weiterhin eine Regelgröße > 0 ausgeben, im besten Fall (eingeschwungen/stationär) genau die Stellgröße, die den Wärmeabfluß aus dem Raum kompensiert.

      Kommentar


        #33
        Zitat von chriss1980 Beitrag anzeigen
        @Sascha - redest Du von der Stellgröße des Reglers oder nur von einem Regleranteil? Die Stellgröße (Ausgabewert des Reglers) setzt sich zusammen aus der Summe der gewichteten Regleranteile (hier P + I)
        Ich spreche von der Stellgröße in %:

        my $kp = 1.0 / $this_controller{ 'ProportionalGain' };
        my $error = $SetPoint - $Sensor;
        $plugin_info{ $prefix . '_Actuator' } = 100.0 * $kp * ($error + $integral);

        z. B.
        ProportionalGain = 5
        $SetPoint = 20
        $Sensor = 18
        $integral (wird in dem Beispiel vernachlässigt)>> Stellgröße = 100 * 0,2 * 2 = 40%

        ProportionalGain = 5
        $SetPoint = 20
        $Sensor = 20
        $integral (wird in dem Beispiel vernachlässigt)
        >> Stellgröße = 100 * 0,2 * 0 = 0%

        Also kommt es doch zu einer Stellgröße von 0% wenn Soll- = Isttemperatur?

        Hab ich da einen Denkfehler??

        Gruß
        Sascha

        Kommentar


          #34
          Denkfehler? Kommt darauf an...
          Wenn Du den I-Anteil vernachlässigst degeneriert Dein Regler erstmal zum P-Regler. Da die Ausgangsgröße des P-Reglers proportional zur Abweichung ist, wird sie natürlich auch 0 wenn Soll = Ist.

          Aber was hat das mit Deiner ursprünglichen Frage zu den 100% vs 50% Stellgröße zu tun?!?

          Kommentar


            #35
            Zitat von chriss1980 Beitrag anzeigen
            Aber was hat das mit Deiner ursprünglichen Frage zu den 100% vs 50%
            Das hat damit zu tun, daß beim völligen Erreichen der Vorgabetemperatur die Stellgröße 0% ist und dann die Temperatur zwangsweise abfällt, bis der Regler wieder eingreift (weil Ist < Soll).

            Da aber eine FBH eher eine Temperierung ist, brauche ich auch bei Soll=Ist eine Öffnung der Ventile (wenn auch nur zu 50%), damit die Temperatur gehalten werden kann. Somit muß der hydraulische Abgleich so abgestimmt sein, daß ohne externe Einflüsse die Raumtemperatur mit 50% Ventilöffnung (oder entsprechende PWM) gehalten wird.

            z. B. Proptionalanteil 4°K, Solltemperatur = 20°C
            Soll = Ist > 50%
            Ist = 18°C > 100%
            Ist = 22°C > 0%
            Ist = 23°C > 0%
            Ist = 19°C > 75%
            Ist = 21°C > 25%

            Der Integralanteil kann in diesem Beispiel vernachlässigt werden, da dieser "nur" dafür da ist die Stellgröße nachzuführen falls es der Proportionalanteil daneben liegt.

            Okay, ober bin ich verwirrt?
            Sascha

            Kommentar


              #36
              Zitat von haegar80 Beitrag anzeigen
              my $kp = 1.0 / $this_controller{ 'ProportionalGain' };
              my $error = $SetPoint - $Sensor;
              $plugin_info{ $prefix . '_Actuator' } = 100.0 * $kp * ($error + $integral);

              Bedeutet das nicht, daß bei Soll = Istperperatur eine Stellgröße von 0 ausgegeben wird?
              Nein, das heißt es nicht.

              Das heißt, dass bei Soll=Ist der Proportionalteil 0 ist und daher nur noch der Integral-Teil den Stellwert bestimmt.

              Aus dem PI-Regler einen PID zu machen ist trivial.

              Aber beachte: ein PI-Regler bietet (wie Du ja gerade gelernt hast) zwei Möglichkeiten sich in's Bein zu schießen. Und ein PID gleich Drei Möglichkeiten!
              Und noch schlimmer: wenn Du nicht höllisch aufpasst und nicht weißt was Du tust, dann hast Du mit dem PID schnell mal einen Schwingkreis gebaut. Das ist noch wesentlich blöder als ein Überschwingen...

              Daher gibt es gute Gründe, warum für die Breite nur ein PI-Regler angeboten wird.

              Um einen PID ordentlich zu parametrieren solltest Du das Regelungstechnische KnowHow besitzen und z.B. über Sprungantworten das Systemverhalten messen und daraus die PID-Parameter bestimmen.
              TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

              Kommentar


                #37
                Zitat von haegar80 Beitrag anzeigen
                $integral (wird in dem Beispiel vernachlässigt)
                $integral (wird in dem Beispiel vernachlässigt)
                Zitat von haegar80 Beitrag anzeigen
                Der Integralanteil kann in diesem Beispiel vernachlässigt werden, da dieser "nur" dafür da ist die Stellgröße nachzuführen falls es der Proportionalanteil daneben liegt.

                Okay, ober bin ich verwirrt?
                Nein, Du bist nicht verwirrt, Du hast nur nicht verstanden, was ein PI-Regler ist und wie der funktioniert!

                Ein reiner P-Regler kann (eigentlich) nie den Ist-Wert auf den Soll-Wert bringen. Dafür regelt der perfekt nach dem Prinzip: je größer meine Abweichung ist, um so größer muss meine Stellwert geändert werden.

                Nur ein I-Regler kann die Regel-Abweichung auf Null bringen, d.h. Ist=Soll erreichen.

                Das von Dir gewünschte Verhalten, das der Regler "um die 50% herum arbeitet", macht genau die Kombination. Der I-Anteil lernt, dass 50% genau dem aktuellen Wärme-Verlust unter Berücksichtigung der Vorlauftemperatur entsprechen (und das ohne beides zu kennen. Genial, oder?). Und der P-Anteil kümmert sich um die schnellen Schwankungen, z.B. aus einer Soll-Wert Verschiebung.

                => Bevor Du nun einen D-Anteil reinprogrammierst, verstehe bitte erst mal die Grundlagen. Sonst wird es bei Dir im Chaos enden!
                TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

                Kommentar


                  #38
                  Zitat von Chris M. Beitrag anzeigen
                  Nein, Du bist nicht verwirrt, Du hast nur nicht verstanden, was ein PI-Regler ist und wie der funktioniert!
                  Ich glaube, daß ich schon verstanden habe. Das ist genau das was Gaston beschreibt:

                  Zitat von Gaston Beitrag anzeigen
                  Am Samstag kanns Du von Glück reden dass Du ein sehr gut gedämtes Haus hast denn da fällst Du in ein Phänomen das viele Regler am Markt haben und eine "Windmühle" gegen die Ich seit Jahren vergebens kämpfe.

                  Ich spreche hier von dem Sprung der Ventilstellung von 100% auf 0% beim Erreichen der Solltemperatur. Bei einem normal gut gedämmten Haus führt das zu einem Abfall der IST-Temperatur und u.U. auch bei Dir zu einem "Kältegefühl".

                  Dieser Spung tritt bei diesen Reglern immer dann auf wenn die Solltemperatur mit einer Ventilposition von 100% erreicht wird. Der Effekt wird noch dadurch verstärkt dass alle Regler Ihren Arbeitspunkt bei 0% Ventilstellung definieren. Dies ist zwar Regelungstechnisch falsch aber auch bei herkömlichen Reglern üblich, wobei es bei KNX besser machbar wäre. Diese Wahl des Arbeitspunktes führt dazu dass der PI-Regler dem oben erwähnten Sprung nicht einmal entgegenwirken kann bis das die IST-Temperatur fällt, zudem ist bei kleiner Temperaturdifferenz auch das entgegenwirken sehr langsam.
                  Also Soll = Ist sollte im Proportionalteil nicht 0% sein, sondern 50% (am Besten über einen Faktor angegeben). Dann muss der Integralteil nicht gegen diesen Fehler arbeiten.

                  Mit dem Differentialteil gebe ich dir vollkommen Recht, davon habe ich bisher noch keine Ahnung. Dafür muss ich aber Gastons Erklärungen noch im Detail verstehen.
                  So eine grobe Vorstellung der Sinnhaftigkeit habe ich aber schon, um beurteilen zu können, daß es für eine möglichst geringe Soll/Ist Abweichung nötig ist.

                  Überzeugt?

                  Gruß
                  Sascha

                  Kommentar


                    #39
                    Zitat von haegar80 Beitrag anzeigen
                    Überzeugt?
                    Nein.

                    Der Multi-RTR springt nicht von 100% auf 0% wenn Ist>Soll. Der macht genau das, was man von einem klassischen PI-Regler erwartet (die einzige Verbesserung gegenüber einem dummen PI ist, dass der I-Anteil nicht dumm weiterwächst, also ein Anti-Windup. Ist in der Literatur aber hinreichend bekannt).

                    Nochmal: Deine Kommentare zeigen nicht, dass Du die Hintergründe verstanden hast. Ist ja auch nicht weiter schlimm, ist ja eher normal - aber bitte probiere dann nicht mit Halbwissen Verbesserungen (hier: die 50%) zu fordern, die so einfach keinen Sinn machen.
                    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

                    Kommentar


                      #40
                      Okay, dann hab ich den Code tatsächlich nicht komplett durchdrungen. Ich werd den Multi-PI Regler jetzt mal statt dem TS2+ verwenden. Mal schaun wie die Soll/Ist Abweichung ausfällt.

                      Trotzdem Danke, daß du dich mit meinen Fragen rumgeschlagen hast.
                      Sascha

                      Kommentar


                        #41
                        Das (P|I|D) ist ein relativ erschöpfendes Thema für sich (da kommen dummerweise noch 50 andere Parameter zur Theorie hinzu..)
                        Ich habe mich im Kern bei dem Vorläufer (PI-Regler) an dem orientiert was Gaston da des öfteren mal dazu geschrieben hat und Chris mir dann erklärt hat..
                        Tipp vom Küken: Auch wenn es nicht alles verständlich war, es funktioniert praktisch doch gut; bevor ich da das nächste mal was zum PI-Regler schreibe würde ich mich ehrlichgesagt verschämt 3 Tage in Klausur begeben

                        Makki
                        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                        -> Bitte KEINE PNs!

                        Kommentar


                          #42
                          Interessant finde ich allerdings den sehr geringen Unterschied des PI-Reglers im Vergleich zu einem simplen Standard-RTR mit thermischer Rückführung.
                          Dieser erfüllt seinen Zweck wesentlich besser als ich angenommen habe.

                          Ich hatte meine FBH erst mal klassich verkabeln lassen (RTR u. thermischer Stellantrieb) und stelle jetzt schrittweise alle Räume auf Busbetrieb um. Die Ist-Temperaturen logge ich aber schon von Anfang an mit und sehe keinen großen Unterschied im Regelverhalten.
                          Der wirkliche Vorteil liegt meiner Meinung nach in der Berücksichtgung der Anwesenheit, unterschiedlichen Schaltzeiten für Werktags/Wochenende und verschiedene Betriebsmodi (Nacht, Standby, Komfort, Frostschutz, Ventilschutz). Für mein System habe ich das Plugin entsprechend etwas erweitert.

                          Gruß
                          Carsten

                          Kommentar


                            #43
                            Hi Chris,

                            ich hätte eine Frage zu einem (für mich) unerwarteten Verhalten:
                            Ich habe einen Temperatur-Sollwert (SetPointInit) und eine Sollwert-GA (SetPointGA) definiert. Ohne vorheriges Code-Studium war meine Idee: wenn kein Wert über die GA zur Verfügung gestellt wird, dann wird der Init-Wert benutzt. ABER, das Plugin hat stattdessen den Init-Wert genommen und auf den Bus geblasen.

                            Ist das so gewollt, z.B. um den eibd-Cache zu initialisieren? Ich hätte erwartet, dass ein Lesetelegramm gesendet wird und falls keine Antwort kommt der Init-Wert verwendet wird.

                            Ggf. würde ich einen solchen Default-Wert auf meine Feature-Liste setzen. Oder spricht etwas dagegen?

                            Grüße
                            Christian

                            Kommentar


                              #44
                              Hallo zusammen,

                              ich habe das Plugin um ein Objekt "Maximaler Stellwert" und "Heizanforderung bei max. Stellwert über Schwellwert" erweitert.

                              Hat da noch jemand Interesse dran? Wenn ja: Chris, soll ich das ins Multi-RTR committen oder extra?

                              Gruss,

                              der Jan
                              KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                              Kommentar


                                #45
                                Zitat von chriss1980 Beitrag anzeigen
                                ich hätte eine Frage zu einem (für mich) unerwarteten Verhalten:
                                Ich habe einen Temperatur-Sollwert (SetPointInit) und eine Sollwert-GA (SetPointGA) definiert. Ohne vorheriges Code-Studium war meine Idee: wenn kein Wert über die GA zur Verfügung gestellt wird, dann wird der Init-Wert benutzt. ABER, das Plugin hat stattdessen den Init-Wert genommen und auf den Bus geblasen.

                                Ist das so gewollt, z.B. um den eibd-Cache zu initialisieren? Ich hätte erwartet, dass ein Lesetelegramm gesendet wird und falls keine Antwort kommt der Init-Wert verwendet wird.
                                Das Plugin ist der "Aktor" für den Sollwert. Du brauchst für jeden Zustand am Bus genau eine Quelle die dafür zuständig ist. Z.B. beim Schaltaktor der aktuelle Schalt-Zustand. Und hier dieses Plugin.

                                Ob das Plugin beim Init und beim Reset den Wert senden soll, oder nicht, lässt sich sicherlich diskutieren.
                                Für mich ist das quasi ein Setzen des Wertes und der geht ja normalerweise über den Bus - also soll es hier auch nicht vorenthalten werden.
                                Zitat von JNK Beitrag anzeigen
                                ich habe das Plugin um ein Objekt "Maximaler Stellwert" und "Heizanforderung bei max. Stellwert über Schwellwert" erweitert.
                                Was ist der Hintergrund dieser Erweiterung? Was soll das lösen?
                                TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

                                Kommentar

                                Lädt...
                                X