Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Konfiguration: Zusätzliche NPM-Module ?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Konfiguration: Zusätzliche NPM-Module ?

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @hanss last edited by paul53

      @hanss sagte: Wieso schreibst du sie nicht auf?

      Was soll ich aufschreiben?
      Die vorgegebenen Parameter Xp = 4 K und Tn = 600 s passen i.d.R. zur Raumtemperatur-Regelung.
      Mit Istwert 19°C und Sollwert 20°C durchläuft dann der I-Anteil den Ausgang zwischen 0 und OutputMax in 40 Minuten:
      dt = Xp / dT * Tn

      hanss 1 Reply Last reply Reply Quote 0
      • hanss
        hanss @paul53 last edited by

        @paul53
        Also: Das Beispiel oben ergibt bei Ist=19, Soll=20, Xp=4, Tn=600:

        13:00:43.728	info	javascript.0 (3743) script.js.test.PI_Regler: Stellwert: 0.8
        13:03:13.729	info	javascript.0 (3743) script.js.test.PI_Regler: Stellwert: 0.9
        13:05:43.730	info	javascript.0 (3743) script.js.test.PI_Regler: Stellwert: 0.9
        13:08:13.730	info	javascript.0 (3743) script.js.test.PI_Regler: Stellwert: 1.0
        
        paul53 2 Replies Last reply Reply Quote 0
        • paul53
          paul53 @hanss last edited by

          @hanss
          Welchen Wert hat OutputMax?

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @hanss last edited by

            @hanss
            Bei mir mit OutputMax = 100 und sonst identischen Werten:

            13:22:38.893	info	javascript.1 (3896) script.js.common.PI_Regler: 82.0
            13:25:08.894	info	javascript.1 (3896) script.js.common.PI_Regler: 88.2
            13:27:38.896	info	javascript.1 (3896) script.js.common.PI_Regler: 94.5
            

            also 25 % in 10 Minuten, so wie zu erwarten.

            hanss 1 Reply Last reply Reply Quote 0
            • hanss
              hanss @paul53 last edited by hanss

              @paul53
              Ist das nich das selbe Ergebnis?
              OutputMax 1: 0.8, 0,9 ...
              OutputMax 100: 80, 90

              Du meintest aber: Ausgang zwischen 0 und OutputMax in 40 Minuten

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @hanss last edited by

                @hanss sagte: Ausgang zwischen 0 und OutputMax in 40 Minuten

                Ja, wenn das Stellsignal bei 0 startet, benötigt es 40 Minuten bis OutputMax, wenn sich zwischendurch Ist- und Sollwert nicht ändern.

                hanss 1 Reply Last reply Reply Quote 0
                • hanss
                  hanss @paul53 last edited by

                  @paul53
                  Irgendwie habe ich den Eindruck, du verstehst nicht, was ich meine:
                  Das Beispiel oben ergibt bei Ist=19, Soll=20, Xp=4, Tn=600:
                  Das Stellsignal startet eben nicht bei 0 sondern bei 80% von OutputMax

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @hanss last edited by

                    @hanss sagte: Das Stellsignal startet eben nicht bei 0 sondern bei 80% von OutputMax

                    Das ist bedingt durch den P-Anteil: Der liefert 75 % von OutputMax bei diesen Werten.

                    hanss 1 Reply Last reply Reply Quote 0
                    • hanss
                      hanss @paul53 last edited by

                      @paul53
                      Jetzt kommen wir der Sache näher.
                      Wie kommen die 75% zustande und was muß ich einstellen, damit das Stellsignal bei 0 beginnt?

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @hanss last edited by

                        @hanss sagte: was muß ich einstellen, damit das Stellsignal bei 0 beginnt?

                        Das wirst Du nicht schaffen, denn der P-Anteil verhindert es. Es ist eben ein PI-Regler und kein I-Regler.

                        hanss 1 Reply Last reply Reply Quote 0
                        • hanss
                          hanss @paul53 last edited by

                          @paul53
                          wie ist denn dann die Einstellung für minimalsten P-Anteil?

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @hanss last edited by paul53

                            @hanss sagte: wie ist denn dann die Einstellung für minimalsten P-Anteil?

                            Um einem I-Regler nahe zu kommen, muss Xp sehr groß und Tn sehr klein sein. Aber der Regler fängt dann nach Skriptstart immer bei 50% an.

                            hanss 1 Reply Last reply Reply Quote 0
                            • hanss
                              hanss @paul53 last edited by

                              @paul53
                              Wo steht denn das?
                              Ich glaube ich mache es mir selbst mit:

                              e = Soll-Ist
                              esum = esum + e
                              y = Kp * e + Ki * Ta * esum

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @hanss last edited by

                                @hanss sagte: y = Kp * e + Ki * Ta * esum

                                Das ist die theoretische Formel für einen PI-Regler, die in der regelungstechnischen Praxis keine Bedeutung hat.

                                hanss 2 Replies Last reply Reply Quote 0
                                • hanss
                                  hanss @paul53 last edited by

                                  @paul53
                                  Damit weiß ich wenigstens wie die Stellgröße zustande kommt und kann darauf einwirken,
                                  ist immer noch besser als ein Regler bei dem ich die Stellgröße erraten muß.

                                  hanss 1 Reply Last reply Reply Quote 0
                                  • hanss
                                    hanss @hanss last edited by

                                    @hanss

                                    Ich habe mir schon einen I-Regler gebaut, heißt hier Stepper.
                                    Ist ein wenig "experimental", funktioniert aber genauso wie er soll.
                                    Versuche nun, den ein wenig übersichtlicher zu machen.

                                    // ###########################  Stepper ###############################################
                                    function Stepper(){       
                                        const maxUp   = 15      // VL steigt mit max. 15K/h
                                        const maxDown = -10     // VL fällt  mit max. 10K/h
                                        let Heizung_Ein = (getState('javascript.0.haus.keller.Weishaupt_WCM-COM.Heiz_Ein').val == '1')   // WCM Heizbetrieb
                                        let WMZ_RLtemp = getState('mqtt.0.haus.keller.WMZ.RLTemp').val
                                        let WCM_LastStellung = parseFloat(getState("javascript.0.haus.keller.Weishaupt_WCM-COM.Laststellung").val)
                                        let WCM_VLsoll = parseFloat(getState("javascript.0.haus.keller.Weishaupt_WCM-COM.Vorlauf_Soll").val)
                                        let WCM_VList  = parseFloat(getState("javascript.0.haus.keller.Weishaupt_WCM-COM.Vorlauf_Ist").val)
                                        let RTdiff = getState(Out_Root+'Kessel.RTdiff').val                      // Differenz Temp. alle Räume 
                                        let RTStepSum = getState(Out_Root+"Kessel.RTStepSum").val                // wegen Programm Neustart
                                    
                                        if (RTdiff<=0 && !unterNull){           // Verhindert weiteres Absinken der VL Temperatur
                                            unterNull = true
                                        }
                                        if (RTdiff>0 && unterNull){
                                            unterNull = false
                                        }
                                    
                                        if (!Thermostat) {
                                            if ( (RTStepSum < -RTdiff)  && ((WCM_VLsoll-WCM_VList) < 3) && (Heizung_Ein) && unterNull)  {                    
                                                if ( (WMZ_RLtemp < 30) || (WCM_LastStellung < 70) ) {       // Rücklauf Temp. Begrenzer 30°
                                                    RTStepSum +=  maxUp/RTVLFakt/60;                        // heizen
                                                    // log('heizen: '+ RTStepSum)  
                                                }
                                            } else {
                                                // if ( (RTStepSum > -RTdiff) {                                  // Thermostat Funktion
                                                if ( (RTStepSum > -RTdiff) && ((WCM_VList-WCM_VLsoll) < 3) && !unterNull) {   // Thermostat Funktion verhindern, konstant Heizen
                                                    RTStepSum += maxDown/RTVLFakt/60;                        // kühlen 
                                                    // log('kühlen: '+RTStepSum)
                                                }
                                            }
                                        } // !Thermostat
                                    
                                        if ( ((RTdiff > 0.7) || ((WCM_VList-WCM_VLsoll) > 4) ) && !Thermostat && ((Date.now()-ThTimerAus) > 10*60*1000 ) ) {  // 5 Min timeout
                                            RTStepSum = -(ThermoTemp+1)       // Thermostat ein  (darf nicht unter Absenk-Temperatur) 
                                            Thermostat = true
                                            ThTimerEin = Date.now();
                                            log("******* Thermostat EIN RTdiff: "+RTdiff+' VLi: '+WCM_VList+' VLs: '+WCM_VLsoll)
                                        }
                                        if ( (RTdiff < 0.2) && Thermostat  && ((Date.now()-ThTimerEin) > 10*60*1000 )    )   {            // 10 Min timeout -0.1
                                            RTStepSum = 0.1                                                     // Thermostat aus
                                            Thermostat = false
                                            THein = true
                                            ThTimerAus = Date.now()
                                            log("******* Thermostat AUS RTdiff: "+RTdiff+' VLi: '+WCM_VList+' VLs: '+WCM_VLsoll)
                                        }
                                    
                                        // log("RTStepSum: "+RTStepSum)
                                        if (WCM_Stoerung || EvoHome_Stoerung) RTStepSum = 0
                                        setState(Out_Root+"Kessel.RTStepSum",RTStepSum)
                                    return RTStepSum;
                                    }
                                    // ###########################  Stepper ###############################################
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • hanss
                                      hanss @paul53 last edited by

                                      @paul53
                                      Hast Du dich schon mit einer Heizungsregelung befasst?
                                      Würde Dich mein Problem interessieren? Wenn nicht ist es auch nicht schlimm.

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @hanss last edited by

                                        @hanss sagte: Hast Du dich schon mit einer Heizungsregelung befasst?

                                        Ja.

                                        @hanss sagte in [gelöst] Konfiguration: Zusätzliche NPM-Module ?:

                                        Würde Dich mein Problem interessieren?

                                        Was ist Dein Problem?

                                        hanss 1 Reply Last reply Reply Quote 0
                                        • hanss
                                          hanss @paul53 last edited by hanss

                                          @paul53

                                          Es wäre sehr interessant für mich, wie Du an die Sache herangehen würdest:

                                          ioBroker Eingangssignale
                                          Einzelraumregelung: Soll- u. Ist Temperaturen aller 8 Räume
                                          Therme: Soll- und Ist-Vorlauftemperatur, Rücklauftemperatur, Volumenstrom, Laststellung, Außentemperatur

                                          ioBroker Ausgangssignal:
                                          Therme: Soll-Raumtemperatur (Ist-Raumtemperatur kann nur über die Heizung-Fernbedienung verstellt werden
                                          und ist bei 21°C fest eingestellt).
                                          Die Thermen-Raumtemperaturen dienen nur zur Steuerung, bitte nicht mit den
                                          tatsächlichen Raumtemperaturen der EZR verwechseln.

                                          Die Therme steuert die Vorlauftemperatur anhand der Außentemperatur, Steilheit und Differenz der
                                          Thermen Raum-Soll u. Raum-Ist Temperatur. Der P-Anteil ist einstellbar.

                                          Besonderheiten:
                                          Wenn der Vorlauf-Ist um 7K größer ist als der Vorlauf-Soll, dann schaltet die Therme ab (Takten)
                                          Wenn die Thermen Raum-Ist um 3K größer ist als der Thermen Raum-Soll, dann schaltet die Therme ab (Thermostat), schaltet erst wieder ein, wenn die Thermen Raum-Ist kleiner ist als Thermen Raum-Soll.

                                          Über die Einzelraumregelung erfolgt eine Nachtabsenkung auf 18°C.
                                          Morgens werden die Räume zu unterschiedlichen Zeiten hochgefahren und sollen möglichst schnell aufheizen.

                                          So sieht das jetzt aus:
                                          RTdiff:
                                          Es wird die (Soll-Ist) Differenz jedes einzelnen Raumes ermittelt.
                                          RTdiff ist der Durchschnitt dieser 8 Raum-Differenz Temperaturen.
                                          Besonderheit:
                                          Ist ein Raum mehr als 0,6K zu kalt, dann wird als RTdiff die Differenztemperatur des kältesten Raumes
                                          verwendet und nicht der Durchschnitt.

                                          a2d42f94-fc65-4265-ad30-290112917ca2-grafik.png

                                          paul53 1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @hanss last edited by paul53

                                            @hanss sagte: ioBroker Ausgangssignal:

                                            Therme: Soll-Raumtemperatur

                                            Das ist die einzige Größe, die sich steuern lässt und sie bewirkt eine Parallelverschiebung der Heizkurve?
                                            Dann würde ich sie in Abhängigkeit von der maximalen Ventilstellung aller ERR verändern.

                                            @hanss sagte in [gelöst] Konfiguration: Zusätzliche NPM-Module ?:

                                            Über die Einzelraumregelung erfolgt eine Nachtabsenkung auf 18°C.

                                            In den Räumen oder an der Therme?

                                            @hanss sagte in [gelöst] Konfiguration: Zusätzliche NPM-Module ?:

                                            Wenn die Thermen Raum-Ist um 3K größer ist als der Thermen Raum-Soll, dann schaltet die Therme ab (Thermostat), schaltet erst wieder ein, wenn die Thermen Raum-Ist kleiner ist als Thermen Raum-Soll.

                                            Es gibt einen Referenzraum, mit 2-Punkt-Regler (Uhrenthermostat), der die Therme steuert? Gibt es in diesem Raum zusätzlich ERR (Thermostatventile) ?

                                            hanss 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            752
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            39
                                            4625
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo