Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter pid (pid-Regler) V1.0.x

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Test Adapter pid (pid-Regler) V1.0.x

Geplant Angeheftet Gesperrt Verschoben Tester
314 Beiträge 16 Kommentatoren 64.8k Aufrufe 14 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Ben1983B Ben1983

    @mcm57 Soweit alles gut,
    ich habe nur bei etwas spielen folgendes bemerkt:
    wenn man den Regler mit hold = true stoppe und dann einen
    Rest mit rst = true mache, dann springt y nicht auf 0, sondern auf den neu berechneten Wert.
    => Wenn man den Regler eine gewisse Zeit angehalten hat und dann RST betätigt, springt er in die maximale Begrenzung (und man kann ihn somit im Zustand Hold nicht auf 0 zurück setzen.
    (Wie kann man eigentlich den einzelnen I Anteil resetten?)
    => Das wird bei manchen Anwendungenbenötigt... ok, sind Zeitkritische, die wird man sicher nicht mit ioBroker Lösen. Von daher denke ich nicht so wichtig.

    Aber könnte man beim Reset nicht das delta der Zeit auf 0 setzen, sodass der Regler wirklich bei 0 beginnt? (Wie im ersten Zyklus). Und eben wenn er auf hold = true ist auch nicht den P-Anteil ausgibt?
    das Delta bzw. die Zeit würde ich während hold = true nicht weiter laufen lassen

    mcm1957M Online
    mcm1957M Online
    mcm1957
    schrieb am zuletzt editiert von mcm1957
    #167

    @ben1983 said in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

    wenn man den Regler mit hold = true stoppe und dann einen
    Rest mit rst = true mache, dann springt y nicht auf 0, sondern auf den neu berechneten Wert.

    RST resetted (nur) den I Anteil. Damit sollte der Adapter auf jenen Wert springen, den er ganz zu Beginn einer Berechnung hat, d.h. auf diff * kp.

    => Wenn man den Regler eine gewisse Zeit angehalten hat und dann RST betätigt, springt er in die maximale Begrenzung (und man kann ihn somit im Zustand Hold nicht auf 0 zurück setzen.

    Ob der Regler angehalten ist oder nicht sollte hier eigentlich keine Rolle spielen. Bei RST sollte der Regler auf diff*kp "springen". Das kann durchaus in der Begrenzung liegen. RST resetted den I Anteil. Will man y auf null zwingen kann man MAN / MAN_INP verwenden. Beim ersten Rechenzyklus wird y aber jedenfalls auf y=(set-act)*kp + off springen.

    Wir hatten ganz am Anfang schon die Diskussion dass RST eben NICHT alles auf null setzen soll, weil dann der Regler jedesmal auf 0 springt und dann sofort wieder auf den Regelwert zurück. Das ist nicht sinnvoll war die einhellige Meinung.

    (Wie kann man eigentlich den einzelnen I Anteil resetten?)
    => Das wird bei manchen Anwendungenbenötigt... ok, sind Zeitkritische, die wird man sicher nicht mit ioBroker Lösen. Von daher denke ich nicht so wichtig.

    Genau das macht RST. (außer es funktioniert nicht :-)
    Das kannst du kontrollieren indem nach RST y=(act-set)*kp + off sein sollte.

    Aber könnte man beim Reset nicht das delta der Zeit auf 0 setzen, sodass der Regler wirklich bei 0 beginnt? (Wie im ersten Zyklus). Und eben wenn er auf hold = true ist auch nicht den P-Anteil ausgibt?

    Das Delta wird beim Start auf null gesetzt damit sich kein astronomischer I Anteil (bei langer Pause) ergibt.

    das Delta bzw. die Zeit würde ich während hold = true nicht weiter laufen lassen

    Da die Systemzeit nicht angehalten werden kann :-) bewirkt das Rücksetzen der Zeitdifferenz beim starten (hold geht auf false) genau das. Im Ersten Berchnungszyklus nach hold bleibt der integralanteil unverändert und der differentialanteil wird ausgeblendet. Ein theoretisch mögliche genaue Zeitberechnung (Intervall ist 10s, nach 3 sekunden wird wird pausiert, daher integral miot 3s berechnen) ist den Aufwand meiner Ansichtnach nicht Wert. Nach dem Anhalten einer Regelung muss jedenfalls mit Regeloperationen gerechnet werden und hold/run sollte ja auch nicht der Normalzustand sein.

    McM

    Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
    Support Repositoryverwaltung.

    Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

    LESEN - gute Forenbeitrage

    Ben1983B 1 Antwort Letzte Antwort
    0
    • mcm1957M mcm1957

      @ben1983 said in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

      wenn man den Regler mit hold = true stoppe und dann einen
      Rest mit rst = true mache, dann springt y nicht auf 0, sondern auf den neu berechneten Wert.

      RST resetted (nur) den I Anteil. Damit sollte der Adapter auf jenen Wert springen, den er ganz zu Beginn einer Berechnung hat, d.h. auf diff * kp.

      => Wenn man den Regler eine gewisse Zeit angehalten hat und dann RST betätigt, springt er in die maximale Begrenzung (und man kann ihn somit im Zustand Hold nicht auf 0 zurück setzen.

      Ob der Regler angehalten ist oder nicht sollte hier eigentlich keine Rolle spielen. Bei RST sollte der Regler auf diff*kp "springen". Das kann durchaus in der Begrenzung liegen. RST resetted den I Anteil. Will man y auf null zwingen kann man MAN / MAN_INP verwenden. Beim ersten Rechenzyklus wird y aber jedenfalls auf y=(set-act)*kp + off springen.

      Wir hatten ganz am Anfang schon die Diskussion dass RST eben NICHT alles auf null setzen soll, weil dann der Regler jedesmal auf 0 springt und dann sofort wieder auf den Regelwert zurück. Das ist nicht sinnvoll war die einhellige Meinung.

      (Wie kann man eigentlich den einzelnen I Anteil resetten?)
      => Das wird bei manchen Anwendungenbenötigt... ok, sind Zeitkritische, die wird man sicher nicht mit ioBroker Lösen. Von daher denke ich nicht so wichtig.

      Genau das macht RST. (außer es funktioniert nicht :-)
      Das kannst du kontrollieren indem nach RST y=(act-set)*kp + off sein sollte.

      Aber könnte man beim Reset nicht das delta der Zeit auf 0 setzen, sodass der Regler wirklich bei 0 beginnt? (Wie im ersten Zyklus). Und eben wenn er auf hold = true ist auch nicht den P-Anteil ausgibt?

      Das Delta wird beim Start auf null gesetzt damit sich kein astronomischer I Anteil (bei langer Pause) ergibt.

      das Delta bzw. die Zeit würde ich während hold = true nicht weiter laufen lassen

      Da die Systemzeit nicht angehalten werden kann :-) bewirkt das Rücksetzen der Zeitdifferenz beim starten (hold geht auf false) genau das. Im Ersten Berchnungszyklus nach hold bleibt der integralanteil unverändert und der differentialanteil wird ausgeblendet. Ein theoretisch mögliche genaue Zeitberechnung (Intervall ist 10s, nach 3 sekunden wird wird pausiert, daher integral miot 3s berechnen) ist den Aufwand meiner Ansichtnach nicht Wert. Nach dem Anhalten einer Regelung muss jedenfalls mit Regeloperationen gerechnet werden und hold/run sollte ja auch nicht der Normalzustand sein.

      McM

      Ben1983B Offline
      Ben1983B Offline
      Ben1983
      schrieb am zuletzt editiert von
      #168

      @mcm57 Also wenn ich hold auf true setze, dann rst auf true,
      dann bekomme ich
      nach 10s rst = true den doppelten Wert wie nach 5s rst = true.
      Daraus schließe ich, dass dort nicht y=(act-set)*kp + off gerechnet wird, sondern noch das Tn mit rein spielt.

      das Weiteren:
      Wenn ich die hysterese (supr) auf 5 (oder sonst einen Wert setze). Worauf bezieht diese sich denn? Ich dachte auf die regelabweichung, dies ist anscheinend nicht der Fall. oder?
      Sonst wäre ja hier diff nicht 0.
      ce8f9a05-80f0-4add-b386-5756796dd0bc-image.png
      ich würde es wie schon mal geschrieben nicht auf eine Änderung beziehen, sondern wirklich auf die Regelabweichung, denn:

      Wenn die Differenz dauerhaft sagen wir +1/2*Hysterese ist, dann kann der Stellwert und damit der Regler langsam weglaufen.
      Wenn die Hysterrese sich auf die Regelabweichung bezieht, kann dies nicht passieren, da spätestens nach dem 2. zyklus die volle hysterrese erreicht wurde und die regelung wieder greift-

      fu_zhouF mcm1957M 3 Antworten Letzte Antwort
      0
      • fu_zhouF Offline
        fu_zhouF Offline
        fu_zhou
        schrieb am zuletzt editiert von
        #169

        @mcm57 wenn ich Tn bei laufendem Regler verändere, z.B. von 10s auf 2s macht y einen riesen Sprung, z.B. von 4 auf 20, also ca. um den Faktor, um den ich Tn reduziert habe. Umgedreht genauso: von 2s auf 10s kommt ein Sprung von 30 auf 6. Ist das richtig? Ich hätte eher erwartet, dass y entsprechend schneller (10s -> 2s) oder langsamer (2s -> 10s) verändert wird, aber ausgehend vom aktuellen Wert (kein Sprung).

        Synology DS920+ VM, S7-315 PN mit ET200S

        mcm1957M 1 Antwort Letzte Antwort
        0
        • Ben1983B Ben1983

          @mcm57 Also wenn ich hold auf true setze, dann rst auf true,
          dann bekomme ich
          nach 10s rst = true den doppelten Wert wie nach 5s rst = true.
          Daraus schließe ich, dass dort nicht y=(act-set)*kp + off gerechnet wird, sondern noch das Tn mit rein spielt.

          das Weiteren:
          Wenn ich die hysterese (supr) auf 5 (oder sonst einen Wert setze). Worauf bezieht diese sich denn? Ich dachte auf die regelabweichung, dies ist anscheinend nicht der Fall. oder?
          Sonst wäre ja hier diff nicht 0.
          ce8f9a05-80f0-4add-b386-5756796dd0bc-image.png
          ich würde es wie schon mal geschrieben nicht auf eine Änderung beziehen, sondern wirklich auf die Regelabweichung, denn:

          Wenn die Differenz dauerhaft sagen wir +1/2*Hysterese ist, dann kann der Stellwert und damit der Regler langsam weglaufen.
          Wenn die Hysterrese sich auf die Regelabweichung bezieht, kann dies nicht passieren, da spätestens nach dem 2. zyklus die volle hysterrese erreicht wurde und die regelung wieder greift-

          fu_zhouF Offline
          fu_zhouF Offline
          fu_zhou
          schrieb am zuletzt editiert von fu_zhou
          #170

          @ben1983

          @ben1983 sagte in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

          Wenn ich die hysterese (supr) auf 5 (oder sonst einen Wert setze). Worauf bezieht diese sich denn? Ich dachte auf die regelabweichung, dies ist anscheinend nicht der Fall. oder?
          Sonst wäre ja hier diff nicht 0.

          Das Verhalten stimmt doch: Dein set = 50, dein act = 49,43, damit ist die Regelabweichung < 5 (dein sup), damit wird diff = 0 und supr = true

          Synology DS920+ VM, S7-315 PN mit ET200S

          Ben1983B mcm1957M 2 Antworten Letzte Antwort
          0
          • Ben1983B Ben1983

            @mcm57 Also wenn ich hold auf true setze, dann rst auf true,
            dann bekomme ich
            nach 10s rst = true den doppelten Wert wie nach 5s rst = true.
            Daraus schließe ich, dass dort nicht y=(act-set)*kp + off gerechnet wird, sondern noch das Tn mit rein spielt.

            das Weiteren:
            Wenn ich die hysterese (supr) auf 5 (oder sonst einen Wert setze). Worauf bezieht diese sich denn? Ich dachte auf die regelabweichung, dies ist anscheinend nicht der Fall. oder?
            Sonst wäre ja hier diff nicht 0.
            ce8f9a05-80f0-4add-b386-5756796dd0bc-image.png
            ich würde es wie schon mal geschrieben nicht auf eine Änderung beziehen, sondern wirklich auf die Regelabweichung, denn:

            Wenn die Differenz dauerhaft sagen wir +1/2*Hysterese ist, dann kann der Stellwert und damit der Regler langsam weglaufen.
            Wenn die Hysterrese sich auf die Regelabweichung bezieht, kann dies nicht passieren, da spätestens nach dem 2. zyklus die volle hysterrese erreicht wurde und die regelung wieder greift-

            mcm1957M Online
            mcm1957M Online
            mcm1957
            schrieb am zuletzt editiert von mcm1957
            #171

            @ben1983 said in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

            @mcm57 Also wenn ich hold auf true setze, dann rst auf true,
            dann bekomme ich
            nach 10s rst = true den doppelten Wert wie nach 5s rst = true.
            Daraus schließe ich, dass dort nicht y=(act-set)*kp + off gerechnet wird, sondern noch das Tn mit rein spielt.

            OK, muss ich mir ansehen
            Danke f.d. genaue Beschreibugn was du tust

            Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
            Support Repositoryverwaltung.

            Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

            LESEN - gute Forenbeitrage

            1 Antwort Letzte Antwort
            0
            • fu_zhouF fu_zhou

              @mcm57 wenn ich Tn bei laufendem Regler verändere, z.B. von 10s auf 2s macht y einen riesen Sprung, z.B. von 4 auf 20, also ca. um den Faktor, um den ich Tn reduziert habe. Umgedreht genauso: von 2s auf 10s kommt ein Sprung von 30 auf 6. Ist das richtig? Ich hätte eher erwartet, dass y entsprechend schneller (10s -> 2s) oder langsamer (2s -> 10s) verändert wird, aber ausgehend vom aktuellen Wert (kein Sprung).

              mcm1957M Online
              mcm1957M Online
              mcm1957
              schrieb am zuletzt editiert von
              #172

              @fu_zhou
              Da sich der Integralwert nicht ändert ist das lt. angegebener Formel das implementierte und zu erwartende Verhalten. Es wird der Fehlerwert integriert und geht mit dem angegebenen Faktor in das Ergebnis ein.

              Ich kann deine Erwartung im Prinzip verstehen. Anderseits wird ein Ändern von kp auch einen Sprung auslösen und nicht "irgendwie gleitend" auf den neuen Wert gehen.

              Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
              Support Repositoryverwaltung.

              Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

              LESEN - gute Forenbeitrage

              Ben1983B fu_zhouF 2 Antworten Letzte Antwort
              0
              • fu_zhouF fu_zhou

                @ben1983

                @ben1983 sagte in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

                Wenn ich die hysterese (supr) auf 5 (oder sonst einen Wert setze). Worauf bezieht diese sich denn? Ich dachte auf die regelabweichung, dies ist anscheinend nicht der Fall. oder?
                Sonst wäre ja hier diff nicht 0.

                Das Verhalten stimmt doch: Dein set = 50, dein act = 49,43, damit ist die Regelabweichung < 5 (dein sup), damit wird diff = 0 und supr = true

                Ben1983B Offline
                Ben1983B Offline
                Ben1983
                schrieb am zuletzt editiert von
                #173

                @fu_zhou Du hast Recht. Da war ich wohl eben etwas durcheinander und habe es selber nicht gemerkt, dass die Regelabweichung < 5 ist.
                @mcm57 ich denke was mich hier verwirrt hat ist, dass Diff als 0 angezeigt wir und die Regelabweichung ja nicht 0 ist, oder was zeigst Du als Diff an?

                1 Antwort Letzte Antwort
                0
                • fu_zhouF fu_zhou

                  @ben1983

                  @ben1983 sagte in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

                  Wenn ich die hysterese (supr) auf 5 (oder sonst einen Wert setze). Worauf bezieht diese sich denn? Ich dachte auf die regelabweichung, dies ist anscheinend nicht der Fall. oder?
                  Sonst wäre ja hier diff nicht 0.

                  Das Verhalten stimmt doch: Dein set = 50, dein act = 49,43, damit ist die Regelabweichung < 5 (dein sup), damit wird diff = 0 und supr = true

                  mcm1957M Online
                  mcm1957M Online
                  mcm1957
                  schrieb am zuletzt editiert von mcm1957
                  #174

                  @fu_zhou said in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

                  @ben1983

                  @ben1983 sagte in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

                  Wenn ich die hysterese (supr) auf 5 (oder sonst einen Wert setze). Worauf bezieht diese sich denn? Ich dachte auf die regelabweichung, dies ist anscheinend nicht der Fall. oder?
                  Sonst wäre ja hier diff nicht 0.

                  Das Verhalten stimmt doch: Dein set = 50, dein act = 49,43, damit ist die Regelabweichung < 5 (dein sup), damit wird diff = 0 und supr = true

                  ja
                  der State diff zeigt die für die Berechnung BENUTZTE Differenz an. Schlägt sup zu ist diese 0 um eben keine weitere Regelung zu bewirken. Dass sup aktiv ist wird im State supr angezeigt.

                  Falls es stimmiger erscheint, könnte ich auch die echte differenz ausgeben. Wär wahrscheinlich sogar sinnvoller da es ja nun den State supr gibt der die Situation supression aktiv anzeigt. (Der State kam erst später dazu). Ich werde das noch ändern.
                  (https://github.com/iobroker-community-adapters/ioBroker.pid/issues/53)

                  Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                  Support Repositoryverwaltung.

                  Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                  LESEN - gute Forenbeitrage

                  1 Antwort Letzte Antwort
                  0
                  • mcm1957M mcm1957

                    @fu_zhou
                    Da sich der Integralwert nicht ändert ist das lt. angegebener Formel das implementierte und zu erwartende Verhalten. Es wird der Fehlerwert integriert und geht mit dem angegebenen Faktor in das Ergebnis ein.

                    Ich kann deine Erwartung im Prinzip verstehen. Anderseits wird ein Ändern von kp auch einen Sprung auslösen und nicht "irgendwie gleitend" auf den neuen Wert gehen.

                    Ben1983B Offline
                    Ben1983B Offline
                    Ben1983
                    schrieb am zuletzt editiert von
                    #175

                    @mcm57 ich kann auch @fu_zhou verstehen.
                    Aber auch deinen Einwand mit Kp.
                    Generell hätte man die Berechnung auch geteilt aufbauen können in den P den I und den D Anteil.
                    Somit hätte man bspw. Den I Anteil zwar auch mit Kp *(delta/Tn) berechnen können, aber eben immer nur für den aktuellen Zyklus….
                    Eben IAnteil = IAnteil + Kp *(delta/Tn)
                    Somit wäre kein Sprung drin.

                    Fällt natürlich nur bei Änderungen während des Laufens auf.

                    mcm1957M 1 Antwort Letzte Antwort
                    0
                    • Ben1983B Ben1983

                      @mcm57 ich kann auch @fu_zhou verstehen.
                      Aber auch deinen Einwand mit Kp.
                      Generell hätte man die Berechnung auch geteilt aufbauen können in den P den I und den D Anteil.
                      Somit hätte man bspw. Den I Anteil zwar auch mit Kp *(delta/Tn) berechnen können, aber eben immer nur für den aktuellen Zyklus….
                      Eben IAnteil = IAnteil + Kp *(delta/Tn)
                      Somit wäre kein Sprung drin.

                      Fällt natürlich nur bei Änderungen während des Laufens auf.

                      mcm1957M Online
                      mcm1957M Online
                      mcm1957
                      schrieb am zuletzt editiert von mcm1957
                      #176

                      @ben1983 said in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

                      @mcm57 ich kann auch @fu_zhou verstehen.
                      Aber auch deinen Einwand mit Kp.
                      Generell hätte man die Berechnung auch geteilt aufbauen können in den P den I und den D Anteil.
                      Somit hätte man bspw. Den I Anteil zwar auch mit Kp *(delta/Tn) berechnen können, aber eben immer nur für den aktuellen Zyklus….
                      Eben IAnteil = IAnteil + Kp *(delta/Tn)
                      Somit wäre kein Sprung drin.

                      Fällt natürlich nur bei Änderungen während des Laufens auf.

                      Ja schon klar:
                      Man derzeit wird INTEGRAL(diff) / Tn gerechnet. Im Prinzip könnte man auch INTEGRAL (diff/Tn) rechnen. Solange Tn konstant ist muss da dasselbe rauskommen. Bei Änderungen von Tn wirkt es sich aus.

                      Werd mal drüber nachdenken. Falls wer eine "offizielle" Doku kennt wo das Verhalten dokumentiert ist bitte um Link. Im Prinzip scheint es mir aber eher so zu sein, dass das Ändern der Regelparamater bei laufendem System eher ein "unspecified" Bereich ist.

                      https://github.com/iobroker-community-adapters/ioBroker.pid/issues/54

                      McM

                      Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                      Support Repositoryverwaltung.

                      Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                      LESEN - gute Forenbeitrage

                      fu_zhouF 1 Antwort Letzte Antwort
                      0
                      • mcm1957M mcm1957

                        @fu_zhou
                        Da sich der Integralwert nicht ändert ist das lt. angegebener Formel das implementierte und zu erwartende Verhalten. Es wird der Fehlerwert integriert und geht mit dem angegebenen Faktor in das Ergebnis ein.

                        Ich kann deine Erwartung im Prinzip verstehen. Anderseits wird ein Ändern von kp auch einen Sprung auslösen und nicht "irgendwie gleitend" auf den neuen Wert gehen.

                        fu_zhouF Offline
                        fu_zhouF Offline
                        fu_zhou
                        schrieb am zuletzt editiert von
                        #177

                        @mcm57

                        @mcm57 sagte in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

                        Ich kann deine Erwartung im Prinzip verstehen. Anderseits wird ein Ändern von kp auch einen Sprung auslösen und nicht "irgendwie gleitend" auf den neuen Wert gehen.

                        Bei Kp würde ich einen Sprung erwarten wg. (act-set)*Kp. Ich habe das gerade mal mit dem Regler in der S7 getestet. Da "beschleunigt" oder "bremst" der Regler die Änderung von "y" bei Veränderung von Tn ausgehend vom aktuellen Wert, ohne Sprung. Mit Sprung wird es auch schwierig, Tn durch Probieren einzustellen oder die Schritte sind so klein, dass die Sprünge vernachlässigbar sind. Ich weiß nicht wie aufwändig es wäre, das entsprechend anzupassen bzw. wie störend das aktuelle Verhalten dann in der ioBroker-Praxis ist...

                        Synology DS920+ VM, S7-315 PN mit ET200S

                        mcm1957M 1 Antwort Letzte Antwort
                        0
                        • fu_zhouF fu_zhou

                          @mcm57

                          @mcm57 sagte in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

                          Ich kann deine Erwartung im Prinzip verstehen. Anderseits wird ein Ändern von kp auch einen Sprung auslösen und nicht "irgendwie gleitend" auf den neuen Wert gehen.

                          Bei Kp würde ich einen Sprung erwarten wg. (act-set)*Kp. Ich habe das gerade mal mit dem Regler in der S7 getestet. Da "beschleunigt" oder "bremst" der Regler die Änderung von "y" bei Veränderung von Tn ausgehend vom aktuellen Wert, ohne Sprung. Mit Sprung wird es auch schwierig, Tn durch Probieren einzustellen oder die Schritte sind so klein, dass die Sprünge vernachlässigbar sind. Ich weiß nicht wie aufwändig es wäre, das entsprechend anzupassen bzw. wie störend das aktuelle Verhalten dann in der ioBroker-Praxis ist...

                          mcm1957M Online
                          mcm1957M Online
                          mcm1957
                          schrieb am zuletzt editiert von
                          #178

                          @fu_zhou

                          Ich schaus mir an
                          https://github.com/iobroker-community-adapters/ioBroker.pid/issues/54

                          Ich werd nur ein paar Tage warten ob massive Probleme auftreten. Insbesondere das von Ben gemeldete Verhaklten von RST und HOLD muss ich mir ansehen. Das ist nicht rational erklärbar - im Moment

                          Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                          Support Repositoryverwaltung.

                          Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                          LESEN - gute Forenbeitrage

                          fu_zhouF 1 Antwort Letzte Antwort
                          0
                          • mcm1957M mcm1957

                            @fu_zhou

                            Ich schaus mir an
                            https://github.com/iobroker-community-adapters/ioBroker.pid/issues/54

                            Ich werd nur ein paar Tage warten ob massive Probleme auftreten. Insbesondere das von Ben gemeldete Verhaklten von RST und HOLD muss ich mir ansehen. Das ist nicht rational erklärbar - im Moment

                            fu_zhouF Offline
                            fu_zhouF Offline
                            fu_zhou
                            schrieb am zuletzt editiert von
                            #179

                            @mcm57 Super, vielen Dank für deine Geduld und Arbeit!

                            Synology DS920+ VM, S7-315 PN mit ET200S

                            1 Antwort Letzte Antwort
                            0
                            • Ben1983B Ben1983

                              @mcm57 Also wenn ich hold auf true setze, dann rst auf true,
                              dann bekomme ich
                              nach 10s rst = true den doppelten Wert wie nach 5s rst = true.
                              Daraus schließe ich, dass dort nicht y=(act-set)*kp + off gerechnet wird, sondern noch das Tn mit rein spielt.

                              das Weiteren:
                              Wenn ich die hysterese (supr) auf 5 (oder sonst einen Wert setze). Worauf bezieht diese sich denn? Ich dachte auf die regelabweichung, dies ist anscheinend nicht der Fall. oder?
                              Sonst wäre ja hier diff nicht 0.
                              ce8f9a05-80f0-4add-b386-5756796dd0bc-image.png
                              ich würde es wie schon mal geschrieben nicht auf eine Änderung beziehen, sondern wirklich auf die Regelabweichung, denn:

                              Wenn die Differenz dauerhaft sagen wir +1/2*Hysterese ist, dann kann der Stellwert und damit der Regler langsam weglaufen.
                              Wenn die Hysterrese sich auf die Regelabweichung bezieht, kann dies nicht passieren, da spätestens nach dem 2. zyklus die volle hysterrese erreicht wurde und die regelung wieder greift-

                              mcm1957M Online
                              mcm1957M Online
                              mcm1957
                              schrieb am zuletzt editiert von
                              #180

                              @ben1983 said in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

                              @mcm57 Also wenn ich hold auf true setze, dann rst auf true,
                              dann bekomme ich
                              nach 10s rst = true den doppelten Wert wie nach 5s rst = true.
                              Daraus schließe ich, dass dort nicht y=(act-set)*kp + off gerechnet wird, sondern noch das Tn mit rein spielt.

                              Sorry, du hast wieder mal recht. Da ist noch ein Wurm dirnnen.
                              RST sollte KEINE Neuberechnung auslösen wenn der Adapter im "fixed Intervall" Mode arbeitet oder on hold ist.

                              https://github.com/iobroker-community-adapters/ioBroker.pid/issues/55

                              Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                              Support Repositoryverwaltung.

                              Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                              LESEN - gute Forenbeitrage

                              mcm1957M 1 Antwort Letzte Antwort
                              0
                              • mcm1957M mcm1957

                                @ben1983 said in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

                                @mcm57 Also wenn ich hold auf true setze, dann rst auf true,
                                dann bekomme ich
                                nach 10s rst = true den doppelten Wert wie nach 5s rst = true.
                                Daraus schließe ich, dass dort nicht y=(act-set)*kp + off gerechnet wird, sondern noch das Tn mit rein spielt.

                                Sorry, du hast wieder mal recht. Da ist noch ein Wurm dirnnen.
                                RST sollte KEINE Neuberechnung auslösen wenn der Adapter im "fixed Intervall" Mode arbeitet oder on hold ist.

                                https://github.com/iobroker-community-adapters/ioBroker.pid/issues/55

                                mcm1957M Online
                                mcm1957M Online
                                mcm1957
                                schrieb am zuletzt editiert von mcm1957
                                #181

                                Ich dachte eigentlich, dass ich nur mal schnell den node-pid code in einen Adapter integriere.
                                So kann man sich täuschen :-)

                                Sorry für die immer noch vorhandenen Fehler. Und DANKE für euren Testaufwand. Ohne den würde der Adapter wohl noch viel länger fehlerhaft bleiben.

                                McM

                                P.S: Für heute bin ich zu müde um mal schnell was rauszuschießen. Wird wohl morgen od. ev. Freitag werden für die nächste Version

                                Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                                Support Repositoryverwaltung.

                                Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                                LESEN - gute Forenbeitrage

                                Ben1983B fu_zhouF 2 Antworten Letzte Antwort
                                0
                                • mcm1957M mcm1957

                                  Ich dachte eigentlich, dass ich nur mal schnell den node-pid code in einen Adapter integriere.
                                  So kann man sich täuschen :-)

                                  Sorry für die immer noch vorhandenen Fehler. Und DANKE für euren Testaufwand. Ohne den würde der Adapter wohl noch viel länger fehlerhaft bleiben.

                                  McM

                                  P.S: Für heute bin ich zu müde um mal schnell was rauszuschießen. Wird wohl morgen od. ev. Freitag werden für die nächste Version

                                  Ben1983B Offline
                                  Ben1983B Offline
                                  Ben1983
                                  schrieb am zuletzt editiert von
                                  #182

                                  @mcm57 alles gut. Top Entwicklung des Adapters.
                                  Mit dem integralanteil wäre es echt cool, wenn der immer nur den letzten Teil mit dem aktuellen Tn auf den alten Wert packt.
                                  Das ist beim einstellen schon wesentlich besser zum Testen.

                                  1 Antwort Letzte Antwort
                                  0
                                  • mcm1957M mcm1957

                                    @ben1983 said in Test neuer Adapter pid (pid-Regler) V0.0.3-alpha.x:

                                    @mcm57 ich kann auch @fu_zhou verstehen.
                                    Aber auch deinen Einwand mit Kp.
                                    Generell hätte man die Berechnung auch geteilt aufbauen können in den P den I und den D Anteil.
                                    Somit hätte man bspw. Den I Anteil zwar auch mit Kp *(delta/Tn) berechnen können, aber eben immer nur für den aktuellen Zyklus….
                                    Eben IAnteil = IAnteil + Kp *(delta/Tn)
                                    Somit wäre kein Sprung drin.

                                    Fällt natürlich nur bei Änderungen während des Laufens auf.

                                    Ja schon klar:
                                    Man derzeit wird INTEGRAL(diff) / Tn gerechnet. Im Prinzip könnte man auch INTEGRAL (diff/Tn) rechnen. Solange Tn konstant ist muss da dasselbe rauskommen. Bei Änderungen von Tn wirkt es sich aus.

                                    Werd mal drüber nachdenken. Falls wer eine "offizielle" Doku kennt wo das Verhalten dokumentiert ist bitte um Link. Im Prinzip scheint es mir aber eher so zu sein, dass das Ändern der Regelparamater bei laufendem System eher ein "unspecified" Bereich ist.

                                    https://github.com/iobroker-community-adapters/ioBroker.pid/issues/54

                                    McM

                                    fu_zhouF Offline
                                    fu_zhouF Offline
                                    fu_zhou
                                    schrieb am zuletzt editiert von fu_zhou
                                    #183

                                    @mcm57 hier ein Ausschnitt aus dem Quellcode vom S7-PID = der P-I-Teil, der sieht wie folgt aus:

                                    (* read last cycle time in Microseconds *)
                                    tx := T_PLC_US();
                                    tc := DWORD_TO_REAL(tx - t_last);
                                    t_last := tx;
                                    
                                    (* calculate proportional part *)
                                    p := KP * IN;
                                    
                                    (* run integrator *)
                                    i := (IN + in_last) * 5.0E-7 * KI * tc + i;
                                    in_last := IN;
                                    
                                    (* calculate output Y *)
                                    Y := p + i;
                                    

                                    Das sieht so aus, wie @Ben1983 oben schreibt: aufgeteilte Berechnung, und daher kein Sprung bei Verändern von Tn im laufenden Betrieb, oder?

                                    Synology DS920+ VM, S7-315 PN mit ET200S

                                    mcm1957M 2 Antworten Letzte Antwort
                                    0
                                    • fu_zhouF fu_zhou

                                      @mcm57 hier ein Ausschnitt aus dem Quellcode vom S7-PID = der P-I-Teil, der sieht wie folgt aus:

                                      (* read last cycle time in Microseconds *)
                                      tx := T_PLC_US();
                                      tc := DWORD_TO_REAL(tx - t_last);
                                      t_last := tx;
                                      
                                      (* calculate proportional part *)
                                      p := KP * IN;
                                      
                                      (* run integrator *)
                                      i := (IN + in_last) * 5.0E-7 * KI * tc + i;
                                      in_last := IN;
                                      
                                      (* calculate output Y *)
                                      Y := p + i;
                                      

                                      Das sieht so aus, wie @Ben1983 oben schreibt: aufgeteilte Berechnung, und daher kein Sprung bei Verändern von Tn im laufenden Betrieb, oder?

                                      mcm1957M Online
                                      mcm1957M Online
                                      mcm1957
                                      schrieb am zuletzt editiert von
                                      #184

                                      @fu_zhou

                                      Danke f.d. Beispiel. Im Prinzip hab ich es so umgesetzt.
                                      In deinem Codebeispiel wird nur anscheinen der Mittelwert (?) der Fehlerwerte integriert - anders kann ich mir lastIn nicht erklären. Ich integriere "nur" den Fehlerwert. Glaube aber nicht, dass dies viel Unterschied im Verhalten macht, zumindest sicher nicht wenn der Fehlerwert nicht groß herumspringt.

                                      Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                                      Support Repositoryverwaltung.

                                      Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                                      LESEN - gute Forenbeitrage

                                      fu_zhouF 1 Antwort Letzte Antwort
                                      0
                                      • fu_zhouF fu_zhou

                                        @mcm57 hier ein Ausschnitt aus dem Quellcode vom S7-PID = der P-I-Teil, der sieht wie folgt aus:

                                        (* read last cycle time in Microseconds *)
                                        tx := T_PLC_US();
                                        tc := DWORD_TO_REAL(tx - t_last);
                                        t_last := tx;
                                        
                                        (* calculate proportional part *)
                                        p := KP * IN;
                                        
                                        (* run integrator *)
                                        i := (IN + in_last) * 5.0E-7 * KI * tc + i;
                                        in_last := IN;
                                        
                                        (* calculate output Y *)
                                        Y := p + i;
                                        

                                        Das sieht so aus, wie @Ben1983 oben schreibt: aufgeteilte Berechnung, und daher kein Sprung bei Verändern von Tn im laufenden Betrieb, oder?

                                        mcm1957M Online
                                        mcm1957M Online
                                        mcm1957
                                        schrieb am zuletzt editiert von
                                        #185

                                        @fu_zhou @Ben1983

                                        Release 0.0.3-alpha.1 ist da

                                        • geändert: Einstellung rst Zustand löst keine Neuberechnung mehr aus
                                        • geändert: State diff zeigt nun den Fehlerwert, auch wenn sup aktiv ist
                                        • geändert: Die Berechnung des I-Teils wurde geändert; Änderungen a, Paramater Tn wirken nur mehr auf zuküftige Anteile",

                                        Offen ist noch die Anpassung der Formel im GUI

                                        Schaut bitte mal ob das jetzt besser passt.

                                        Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                                        Support Repositoryverwaltung.

                                        Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                                        LESEN - gute Forenbeitrage

                                        fu_zhouF 1 Antwort Letzte Antwort
                                        0
                                        • mcm1957M mcm1957

                                          @fu_zhou

                                          Danke f.d. Beispiel. Im Prinzip hab ich es so umgesetzt.
                                          In deinem Codebeispiel wird nur anscheinen der Mittelwert (?) der Fehlerwerte integriert - anders kann ich mir lastIn nicht erklären. Ich integriere "nur" den Fehlerwert. Glaube aber nicht, dass dies viel Unterschied im Verhalten macht, zumindest sicher nicht wenn der Fehlerwert nicht groß herumspringt.

                                          fu_zhouF Offline
                                          fu_zhouF Offline
                                          fu_zhou
                                          schrieb am zuletzt editiert von
                                          #186

                                          @mcm57 Der ganze PID-Algorithmus in der S7 ist eine Kombination aus Funktions-Aufrufen. Ist es hilfreich, wenn ich das alles mal zusammensuche? Ich glaube eher nicht, dazu sind wir hier schon weit genug, würde ich sagen.

                                          Synology DS920+ VM, S7-315 PN mit ET200S

                                          mcm1957M 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          650

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe