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

      @hanss sagte: Hast du einmal untersucht, wie die Parameter Xp und Tn sich auswirken?

      Ich weiß, wie sich die Parameter auswirken. Welche Parameter hast Du gewählt?

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

        @paul53
        Das ist schön, wenn du es weist.
        Wieso schreibst du sie nicht auf?
        Ich habe für alles mögliche versucht, von xp 0-10 und Tn 1-500

        paul53 1 Reply Last reply Reply Quote 0
        • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            899
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            39
                                            4626
                                            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