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.
    • 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
                                          • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            908
                                            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