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.4k

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

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

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

Geplant Angeheftet Gesperrt Verschoben Tester
314 Beiträge 16 Kommentatoren 65.0k 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.
  • mcm1957M mcm1957
    Aktuelle Test Version 1.0.0
    Veröffentlichungsdatum 11.3.2024
    Github Link https://github.com/iobroker-community-adapters/ioBroker.pid

    Adapter Beschreibung, Changelog

    [INFO]

    Die aus der ersten Diskussionrunde resultierenden Änderungen wurden umgesetzt.

    Zur aktuellen Diskussion gehts hier: https://forum.iobroker.net/topic/64250/test-neuer-adapter-pid-pid-regler-v0-0-x/206

    Dieser Adapter stellt einen konfigurierbaren pid Regler zur Verfügung.

    Je Instanz können beliebig viele Regler konfiguriert werden. Im Einstellungsmenu stehen die wichtigsten Reglerparamater (P, I, D Anteil, Zykluszeit sowie Minimum und Maximumwerte zur Verfügung. Aktuelle Werte werden via Zuständen übergeben.

    Zusätzlich kann der Regler angehalten (Zustand 'run ') und resetted (Zustand 'rst') werden.

    Weiters kann der Regler via manuellem Eingabewert (Zustände 'man' und 'man_inp') übersteuert werden, falls dies in einer Anwendung benötigt wird.

    Eine Beschreibung findet sich hier:

    https://github.com/iobroker-community-adapters/ioBroker.pid/blob/master/docs/de/pid_de.md

    https://github.com/iobroker-community-adapters/ioBroker.pid/blob/master/docs/en/pid.md

    Changelog

    1.0.0

    • BREAKING: Adapter benötigt nun node.js 18 oder neuer
    • BREAKING: Adapter erfordert jetzt js-controller 5.x.x und admin 6.x.x oder neuer
    • Offset war nicht funktionsfähig. Das Problem wurde behoben. (#105)
    • Die falsche Fehlermeldung, wenn keine Controller fehlerhaft sind, wurde entfernt. (#68)
    • State-Roles wurden überprüft und angepasst. (#88)
    • Abhängigkeiten wurden aktualisiert.",

    0.0.7

    • geändert: Die Zykluszeit muss nun mindestens 100ms betragen
    • geändert: Neuberechnungen werden nur mehr durch den Taktgeber gesteuert, es werden keine zusätzlichen Updates durchgeführt (#62)
    • geändert: Abhängigkeiten wurden aktualisiert

    0.0.6

    • behoben: Die fehlerhafte Berechnung bei Erreichen der max/min Limits wurde korrigiert

    0.0.5

    • Adapter ist nun via npm verfügbar

    0.0.4

    • Zustand last_upd_str wurde entfernt
    • Diverse Roles wurden angepasst

    0.0.3.alpha.0

    • neu: Eine optionale Ordnerstruktur für Zustände wurde implementiert.
    • geändert: Timer wird bei Neustart nach Pausierung nun resetted.
    • geändert: Werte für act und set werden nun gespeichert und beim Starten des Adapters verwendet
    • geändert: Zustandsänderungen mit ack=true werden gelogged
    • geändert: Falsche Updates beim Schreiben des act Zustands werden nun verhindert
    • geändert: Funktionsfehler des Invert-Flags wurden behoben
    • geändert: Die Fehleranzeige beim Erreichen der Limits wurde entfernt.
    • geändert: q-Flag-Handling wurde korrigiert
    • geändert: Unerwartetes Verhalten des sup-Parameters wurde behoben
    • geändert: Der Eingabe-Zustand 'run' wurde auf 'hold' umbenannt."

    0.0.2.alpha.2

    • geändert: die Werte von kp, xp und sup werden nun auch überprüft falls diese mittels Zuständen verändert werden
    • geändert: Werte von min und max werden nun auch überprüftfalls diese mittels Zuständen verändert werden
    • geändert: Aktivierung von man atzualisiert nun y mit aktuellem Wert von man_inp
    • geändert: min Wert wird nun beim Neustart der Instanz nicht neu initialisiert
    • geändert: Umrechnung zwischen kp und xp wurde an mehreren Stellen korrigiert
    • geändert: kp oder xp werden jetzt gemäß Modeauswahl schreibgeschützt"

    0.0.2-alpha.1

    • (McM19157) zweite Testversion nach Diskussionsrunde

    zur aktuellen Diskussion gehts hier: https://forum.iobroker.net/topic/64250/test-neuer-adapter-pid-pid-regler-v0-0-1-alpha-x/63

    0.0.1-alpha.x
    (McM19157) erste Testversion

    Bitte Probleme / Fragen hier im Forum deponieren oder auch als Issues direkt im Adapter repository anlegen:
    https://github.com/iobroker-community-adapters/ioBroker.envertech-pv/issues

    Danke für eure Zeit beim Testen und für jedes Feedback / Kritik / Anregung.

    McM57

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #23

    @mcm57
    Du berechnest nach der theoretischen Methode (auf die Regelabweichung bezogen)

    this.y = this.data.off + this.k_p * this.err + this.k_i * this.sumErr + this.k_d * this.diffErr;
    

    Das wird in der Praxis selten angewendet. Man arbeitet mit Xp (Proportionalband), Tn (Nachstellzeit) und Tv (Vorhaltezeit).

    y = diff * (max - min) / Xp * (1 + Summe(dt / Tn) + Tv/dt) + offset
    

    Habe ich es nur nicht gefunden oder ist eine Umkehr der Regelrichtung (Stichwort: Heizen/Kühlen) nicht vorgesehen?

    Den selten gebrauchten D-Anteil sollte man nur auf den Istwert anwenden, da der Sollwert meist große Sprünge macht.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    mcm1957M 1 Antwort Letzte Antwort
    0
    • paul53P paul53

      @mcm57
      Du berechnest nach der theoretischen Methode (auf die Regelabweichung bezogen)

      this.y = this.data.off + this.k_p * this.err + this.k_i * this.sumErr + this.k_d * this.diffErr;
      

      Das wird in der Praxis selten angewendet. Man arbeitet mit Xp (Proportionalband), Tn (Nachstellzeit) und Tv (Vorhaltezeit).

      y = diff * (max - min) / Xp * (1 + Summe(dt / Tn) + Tv/dt) + offset
      

      Habe ich es nur nicht gefunden oder ist eine Umkehr der Regelrichtung (Stichwort: Heizen/Kühlen) nicht vorgesehen?

      Den selten gebrauchten D-Anteil sollte man nur auf den Istwert anwenden, da der Sollwert meist große Sprünge macht.

      mcm1957M Offline
      mcm1957M Offline
      mcm1957
      schrieb am zuletzt editiert von mcm1957
      #24

      @paul53
      Ja das hast du richtig erkennt. Ich habe die Funktion ident zum hier an anderer Stelle schon erwähnten node-pid-controller (https://github.com/Philmod/node-pid-controller) umgesetzt. Da wird die D Komponente auch auch den Error angewendet. Deine Anregung bezüglich Sprungverhalten versteh ich aber.

      Eine Invertierung des Ausgangs hab ich nicht vorgesehen. Diese wäre leicht außerhalb machbar, kann ich aber auch im Regler vorsehen wenn Bedarf besteht (wär ja trivial :-) ). Bitte ggF. Feature Request einstellen.

      Im Prinzip ist es aber trivial auch eine andere Funktion umzusetzen, d.h. auf Nachstellzeit / Vorhaltezeit zu wechseln. Nur beide Optionen will ich nicht anbieten :-).

      BITTE UM EURE MEINUNG: Soll ich auf tn/tv umstellen gemäß obiger Formel? Oder das Verhalten analog zu node-pid-controller beibehalten???

      Wobei ich bei einer Umstellung noch Nachhilfe bei der Formel brauch. (Will meine Scripten aus den 80ern nicht im Keller suchen gehen). Summe(dt/Tn) ist irgendwie nicht stimmig im I Anteil muss doch die Summe der Fehler auftreten.

      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

      paul53P 1 Antwort Letzte Antwort
      0
      • mcm1957M mcm1957

        @paul53
        Ja das hast du richtig erkennt. Ich habe die Funktion ident zum hier an anderer Stelle schon erwähnten node-pid-controller (https://github.com/Philmod/node-pid-controller) umgesetzt. Da wird die D Komponente auch auch den Error angewendet. Deine Anregung bezüglich Sprungverhalten versteh ich aber.

        Eine Invertierung des Ausgangs hab ich nicht vorgesehen. Diese wäre leicht außerhalb machbar, kann ich aber auch im Regler vorsehen wenn Bedarf besteht (wär ja trivial :-) ). Bitte ggF. Feature Request einstellen.

        Im Prinzip ist es aber trivial auch eine andere Funktion umzusetzen, d.h. auf Nachstellzeit / Vorhaltezeit zu wechseln. Nur beide Optionen will ich nicht anbieten :-).

        BITTE UM EURE MEINUNG: Soll ich auf tn/tv umstellen gemäß obiger Formel? Oder das Verhalten analog zu node-pid-controller beibehalten???

        Wobei ich bei einer Umstellung noch Nachhilfe bei der Formel brauch. (Will meine Scripten aus den 80ern nicht im Keller suchen gehen). Summe(dt/Tn) ist irgendwie nicht stimmig im I Anteil muss doch die Summe der Fehler auftreten.

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #25

        @mcm57 sagte: Summe(dt/Tn) ist irgendwie nicht stimmig im I Anteil muss doch die Summe der Fehler auftreten.

        Ja natürlich, ist eine vereinfachte Darstellung. Es ist bezüglich Deiner Berechnung nur zu beachten, dass kp als Multiplikator in alle 3 Komponenten (PID) eingeht: Tn und Tv sind auf den Ausgang bezogen. Tn ist die Zeit, um die sich der Ausgang nochmal um den gleichen Betrag ändert wie durch den P-Anteil.

        Formel:

        PID-Formel.JPG

        mit

        Kp = (MaxOut - MinOut) / Xp
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        mcm1957M 2 Antworten Letzte Antwort
        0
        • paul53P paul53

          @mcm57 sagte: Summe(dt/Tn) ist irgendwie nicht stimmig im I Anteil muss doch die Summe der Fehler auftreten.

          Ja natürlich, ist eine vereinfachte Darstellung. Es ist bezüglich Deiner Berechnung nur zu beachten, dass kp als Multiplikator in alle 3 Komponenten (PID) eingeht: Tn und Tv sind auf den Ausgang bezogen. Tn ist die Zeit, um die sich der Ausgang nochmal um den gleichen Betrag ändert wie durch den P-Anteil.

          Formel:

          PID-Formel.JPG

          mit

          Kp = (MaxOut - MinOut) / Xp
          
          mcm1957M Offline
          mcm1957M Offline
          mcm1957
          schrieb am zuletzt editiert von mcm1957
          #26

          @paul53
          OK, dann wart ich mal ab ob / was zu dem Thema noch kommt. In github hat fu-zhou auch einigen Input / Anregungen gegeben. Möchte gerne warten was er schreibt (außer du bist eh fu-zhou - forum / github / telegram = multiple Persönlichkeiten :-) )

          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

          paul53P 1 Antwort Letzte Antwort
          0
          • mcm1957M mcm1957

            @paul53
            OK, dann wart ich mal ab ob / was zu dem Thema noch kommt. In github hat fu-zhou auch einigen Input / Anregungen gegeben. Möchte gerne warten was er schreibt (außer du bist eh fu-zhou - forum / github / telegram = multiple Persönlichkeiten :-) )

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #27

            @mcm57 sagte: außer du bist eh fu-zhou

            Nein, das von fu-zhou erwähnte NPM-Modul "pi-controller" stammt von mir.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @mcm57 sagte: Summe(dt/Tn) ist irgendwie nicht stimmig im I Anteil muss doch die Summe der Fehler auftreten.

              Ja natürlich, ist eine vereinfachte Darstellung. Es ist bezüglich Deiner Berechnung nur zu beachten, dass kp als Multiplikator in alle 3 Komponenten (PID) eingeht: Tn und Tv sind auf den Ausgang bezogen. Tn ist die Zeit, um die sich der Ausgang nochmal um den gleichen Betrag ändert wie durch den P-Anteil.

              Formel:

              PID-Formel.JPG

              mit

              Kp = (MaxOut - MinOut) / Xp
              
              mcm1957M Offline
              mcm1957M Offline
              mcm1957
              schrieb am zuletzt editiert von mcm1957
              #28

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

              @mcm57 sagte: Summe(dt/Tn) ist irgendwie nicht stimmig im I Anteil muss doch die Summe der Fehler auftreten.

              Ja natürlich, ist eine vereinfachte Darstellung. Es ist bezüglich Deiner Berechnung nur zu beachten, dass kp als Multiplikator in alle 3 Komponenten (PID) eingeht: Tn und Tv sind auf den Ausgang bezogen. Tn ist die Zeit, um die sich der Ausgang nochmal um den gleichen Betrag ändert wie durch den P-Anteil.

              Formel:

              PID-Formel.JPG

              mit

              Kp = (MaxOut - MinOut) / Xp
              

              Das bedeutet also:
              MaxOut und MinOut Werte werden obligatorisch.

              Kp = (MaxOut-MinOut) / Xp
              e = act - set  
              (Integral e) ... e + e[t-1] + e[t-2] .... Summe aller Differenzen, sumErr derzeit
              de = e - e[t-1]
              
              Input
              act ... aktueller IST Wert (Input)
              set ... aktueller SOLL Wert (Input)
              
              Parameter
              Xp ... Parameter für Verstärkung (und damit auch Proportionalanteil)
              Tn ... Nachlaufzeit (ms) - Parameter für Integralanteil
              Tv ... Vorhaltezeit (ms) - Parameter für Differentialanteil
              dt ... Zeitdifferenz zu letzter Berechnung (ms), ca Zykluszeit od Zeit zw 2 manuellen Triggern
              
              Output
              u ... output, derzeit y
              

              Den Sinn des Max-Min Terms versteh ich nur bedingt. Die Begrenzung des Ausgangswertes auf Max bzw. Min erspart das jedenfalls nicht. Die Differenz zwischen Act und Set kann ja "beliebig" sein. Ergo könnte man max und min ja auch in Xp berücksichtigen. Da brauch ich noch ne Erklärung.

              Offset wird in jedem Fall noch dazu gerechnet.

              Und Invertierung wäre ja einfache Invertieren des Ausgangswerte ( y = -y). Oder überseh ich da was?

              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

              paul53P 1 Antwort Letzte Antwort
              0
              • mcm1957M mcm1957

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

                @mcm57 sagte: Summe(dt/Tn) ist irgendwie nicht stimmig im I Anteil muss doch die Summe der Fehler auftreten.

                Ja natürlich, ist eine vereinfachte Darstellung. Es ist bezüglich Deiner Berechnung nur zu beachten, dass kp als Multiplikator in alle 3 Komponenten (PID) eingeht: Tn und Tv sind auf den Ausgang bezogen. Tn ist die Zeit, um die sich der Ausgang nochmal um den gleichen Betrag ändert wie durch den P-Anteil.

                Formel:

                PID-Formel.JPG

                mit

                Kp = (MaxOut - MinOut) / Xp
                

                Das bedeutet also:
                MaxOut und MinOut Werte werden obligatorisch.

                Kp = (MaxOut-MinOut) / Xp
                e = act - set  
                (Integral e) ... e + e[t-1] + e[t-2] .... Summe aller Differenzen, sumErr derzeit
                de = e - e[t-1]
                
                Input
                act ... aktueller IST Wert (Input)
                set ... aktueller SOLL Wert (Input)
                
                Parameter
                Xp ... Parameter für Verstärkung (und damit auch Proportionalanteil)
                Tn ... Nachlaufzeit (ms) - Parameter für Integralanteil
                Tv ... Vorhaltezeit (ms) - Parameter für Differentialanteil
                dt ... Zeitdifferenz zu letzter Berechnung (ms), ca Zykluszeit od Zeit zw 2 manuellen Triggern
                
                Output
                u ... output, derzeit y
                

                Den Sinn des Max-Min Terms versteh ich nur bedingt. Die Begrenzung des Ausgangswertes auf Max bzw. Min erspart das jedenfalls nicht. Die Differenz zwischen Act und Set kann ja "beliebig" sein. Ergo könnte man max und min ja auch in Xp berücksichtigen. Da brauch ich noch ne Erklärung.

                Offset wird in jedem Fall noch dazu gerechnet.

                Und Invertierung wäre ja einfache Invertieren des Ausgangswerte ( y = -y). Oder überseh ich da was?

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #29

                @mcm57 sagte: Die Begrenzung des Ausgangswertes auf Max bzw. Min erspart das jedenfalls nicht.

                Das ist die Begrenzung des Ausgangswertes. Stellglieder haben einen begrenzten Stellbereich, meist 0 ... 100 %. Darauf bezieht sich das Proportionalband Xp.
                Beispiel für P-Anteil: Xp = 4; Offset = 50 = (Max + Min) / 2; e = -1 --> y = 25 %

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

                Und Invertierung wäre ja einfache Invertieren des Ausgangswerte ( y = -y).

                Invertierung von Kp oder e.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                fu_zhouF mcm1957M 2 Antworten Letzte Antwort
                0
                • paul53P paul53

                  @mcm57 sagte: Die Begrenzung des Ausgangswertes auf Max bzw. Min erspart das jedenfalls nicht.

                  Das ist die Begrenzung des Ausgangswertes. Stellglieder haben einen begrenzten Stellbereich, meist 0 ... 100 %. Darauf bezieht sich das Proportionalband Xp.
                  Beispiel für P-Anteil: Xp = 4; Offset = 50 = (Max + Min) / 2; e = -1 --> y = 25 %

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

                  Und Invertierung wäre ja einfache Invertieren des Ausgangswerte ( y = -y).

                  Invertierung von Kp oder e.

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

                  Boah, jetzt geht's ja ganz schön ab hier, sehr schön! Hier mal mein Input:

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

                  @mcm57
                  Du berechnest nach der theoretischen Methode (auf die Regelabweichung bezogen)

                  this.y = this.data.off + this.k_p * this.err + this.k_i * this.sumErr + this.k_d * this.diffErr;
                  

                  Das wird in der Praxis selten angewendet. Man arbeitet mit Xp (Proportionalband), Tn (Nachstellzeit) und Tv (Vorhaltezeit).

                  y = diff * (max - min) / Xp * (1 + Summe(dt / Tn) + Tv/dt) + offset
                  

                  Habe ich es nur nicht gefunden oder ist eine Umkehr der Regelrichtung (Stichwort: Heizen/Kühlen) nicht vorgesehen?

                  Den selten gebrauchten D-Anteil sollte man nur auf den Istwert anwenden, da der Sollwert meist große Sprünge macht.

                  Ich gebe paul53 da Recht, auch wenn ich nur Regler-Anwender, nicht Regler-Programmierer bin. Bei der Optimierung eines Regelkreises, z.B. nach Ziegler-Nichols, berechnet man über die Formel tatsächlich die Nachstellzeit Tn und (wo notwendig) die Vorhaltezeit Tv in Sekunden, was ich auch irgendwie greifbarer finde - weil ich das halt kenne.

                  Zum Heizen/Kühlen: Das ist eine Split-Range-Regelung, lässt sich über MIN MAX out (LL, LH) realisieren, z.B. MIN = -100%, MAX = 100%. Der Regler startet bei 0% (=kein Energieverbrauch), bei positiver Regelabweichung (w-x > 0) schiebt der Regler den Ausgang Richtung 100%, also wird mit 0-100% ein Heizventil angesteuert und bei negativer Regelabweichung schiebt der Regler Richtung -100% und damit wird dann ein Kühlventil angesteuert. Habe ich nur ein Stellglied, in meinem Fall wieder die Wallbox, die 1,4 - 11 kW kann, ist MIN 0 und MAX 11, wobei ich MAX mit Blockly bestimme: Nachts, wenn die Hausbatterie leer ist, darf die Wallbox mit 11 kW laden, tagsüber max. mit dem PV-Überschuss. Das hilft, den Regler entsprechend schnell zu begrenzen, wenn eine Wolke drüber zieht, der Regler muss dann nicht mit den eingestellten Parametern zurückregeln.

                  Synology DS920+ VM, S7-315 PN mit ET200S

                  mcm1957M 1 Antwort Letzte Antwort
                  0
                  • fu_zhouF fu_zhou

                    Boah, jetzt geht's ja ganz schön ab hier, sehr schön! Hier mal mein Input:

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

                    @mcm57
                    Du berechnest nach der theoretischen Methode (auf die Regelabweichung bezogen)

                    this.y = this.data.off + this.k_p * this.err + this.k_i * this.sumErr + this.k_d * this.diffErr;
                    

                    Das wird in der Praxis selten angewendet. Man arbeitet mit Xp (Proportionalband), Tn (Nachstellzeit) und Tv (Vorhaltezeit).

                    y = diff * (max - min) / Xp * (1 + Summe(dt / Tn) + Tv/dt) + offset
                    

                    Habe ich es nur nicht gefunden oder ist eine Umkehr der Regelrichtung (Stichwort: Heizen/Kühlen) nicht vorgesehen?

                    Den selten gebrauchten D-Anteil sollte man nur auf den Istwert anwenden, da der Sollwert meist große Sprünge macht.

                    Ich gebe paul53 da Recht, auch wenn ich nur Regler-Anwender, nicht Regler-Programmierer bin. Bei der Optimierung eines Regelkreises, z.B. nach Ziegler-Nichols, berechnet man über die Formel tatsächlich die Nachstellzeit Tn und (wo notwendig) die Vorhaltezeit Tv in Sekunden, was ich auch irgendwie greifbarer finde - weil ich das halt kenne.

                    Zum Heizen/Kühlen: Das ist eine Split-Range-Regelung, lässt sich über MIN MAX out (LL, LH) realisieren, z.B. MIN = -100%, MAX = 100%. Der Regler startet bei 0% (=kein Energieverbrauch), bei positiver Regelabweichung (w-x > 0) schiebt der Regler den Ausgang Richtung 100%, also wird mit 0-100% ein Heizventil angesteuert und bei negativer Regelabweichung schiebt der Regler Richtung -100% und damit wird dann ein Kühlventil angesteuert. Habe ich nur ein Stellglied, in meinem Fall wieder die Wallbox, die 1,4 - 11 kW kann, ist MIN 0 und MAX 11, wobei ich MAX mit Blockly bestimme: Nachts, wenn die Hausbatterie leer ist, darf die Wallbox mit 11 kW laden, tagsüber max. mit dem PV-Überschuss. Das hilft, den Regler entsprechend schnell zu begrenzen, wenn eine Wolke drüber zieht, der Regler muss dann nicht mit den eingestellten Parametern zurückregeln.

                    mcm1957M Offline
                    mcm1957M Offline
                    mcm1957
                    schrieb am zuletzt editiert von
                    #31

                    OK, das es n unmehr 3:0 steht treffe ich die Entscheidung

                    Es wird auf Tn/Tv umgestellt

                    (aber nicht mehr heute :-))

                    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
                    • paul53P paul53

                      @mcm57 sagte: Die Begrenzung des Ausgangswertes auf Max bzw. Min erspart das jedenfalls nicht.

                      Das ist die Begrenzung des Ausgangswertes. Stellglieder haben einen begrenzten Stellbereich, meist 0 ... 100 %. Darauf bezieht sich das Proportionalband Xp.
                      Beispiel für P-Anteil: Xp = 4; Offset = 50 = (Max + Min) / 2; e = -1 --> y = 25 %

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

                      Und Invertierung wäre ja einfache Invertieren des Ausgangswerte ( y = -y).

                      Invertierung von Kp oder e.

                      mcm1957M Offline
                      mcm1957M Offline
                      mcm1957
                      schrieb am zuletzt editiert von mcm1957
                      #32

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

                      @mcm57 sagte: Die Begrenzung des Ausgangswertes auf Max bzw. Min erspart das jedenfalls nicht.

                      Das ist die Begrenzung des Ausgangswertes. Stellglieder haben einen begrenzten Stellbereich, meist 0 ... 100 %. Darauf bezieht sich das Proportionalband Xp.
                      Beispiel für P-Anteil: Xp = 4; Offset = 50 = (Max + Min) / 2; e = -1 --> y = 25 %

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

                      Und Invertierung wäre ja einfache Invertieren des Ausgangswerte ( y = -y).

                      Invertierung von Kp oder e.

                      OK nur die Formal an sich begrenzt da noch nicht.
                      act=0
                      soll=500
                      min=0
                      max=100
                      Xp=50

                      Kp = (Max-Min)/Xp = (100-0)/50 = 2
                      e=act-soll = 500-0 = 500
                      u=Kp * e (bei I und D Anteil disabled) + offset = 500*2 + 50 = 1050.
                      Ergo muss da der Code noch auf 100 limitieren.

                      Oder versteh ich das falsch?

                      Bei Xp 50 wäre eine maximale Differenz
                      von 25 im Regelbereich
                      u = Kp * e + offset = 25*2 +50 = 100

                      Zusatzfrage(n):
                      Eine explizite Invertierungsmöglichkeit braucht man dann ja doch nicht. ein negativer Xp würde das ja dann auch tun wie du schreibst.

                      Braucht dann noch wer den expliziten Parameter Offset? Ich meine ja, da ansonsten bei Abweichung 0 fix (Max-Min)/2 am Ausgang anstünde. Aber ev. will man da ja auch Min (z.B. 0) anliegen haben. Beispiel: Temperaturregler - bei passender Temperatur soll nicht geheizt werden.)

                      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 paul53P 3 Antworten Letzte Antwort
                      0
                      • mcm1957M mcm1957

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

                        @mcm57 sagte: Die Begrenzung des Ausgangswertes auf Max bzw. Min erspart das jedenfalls nicht.

                        Das ist die Begrenzung des Ausgangswertes. Stellglieder haben einen begrenzten Stellbereich, meist 0 ... 100 %. Darauf bezieht sich das Proportionalband Xp.
                        Beispiel für P-Anteil: Xp = 4; Offset = 50 = (Max + Min) / 2; e = -1 --> y = 25 %

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

                        Und Invertierung wäre ja einfache Invertieren des Ausgangswerte ( y = -y).

                        Invertierung von Kp oder e.

                        OK nur die Formal an sich begrenzt da noch nicht.
                        act=0
                        soll=500
                        min=0
                        max=100
                        Xp=50

                        Kp = (Max-Min)/Xp = (100-0)/50 = 2
                        e=act-soll = 500-0 = 500
                        u=Kp * e (bei I und D Anteil disabled) + offset = 500*2 + 50 = 1050.
                        Ergo muss da der Code noch auf 100 limitieren.

                        Oder versteh ich das falsch?

                        Bei Xp 50 wäre eine maximale Differenz
                        von 25 im Regelbereich
                        u = Kp * e + offset = 25*2 +50 = 100

                        Zusatzfrage(n):
                        Eine explizite Invertierungsmöglichkeit braucht man dann ja doch nicht. ein negativer Xp würde das ja dann auch tun wie du schreibst.

                        Braucht dann noch wer den expliziten Parameter Offset? Ich meine ja, da ansonsten bei Abweichung 0 fix (Max-Min)/2 am Ausgang anstünde. Aber ev. will man da ja auch Min (z.B. 0) anliegen haben. Beispiel: Temperaturregler - bei passender Temperatur soll nicht geheizt werden.)

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

                        @mcm57 Ich bräuchte den Offset - wieder bei der Wallbox. Die legt erst ab 1.4 kW los (230V, 6A) und der Regler steuert direkt die Leistung der Wallbox über Stromstärke und Anzahl Phasen an. Bei mir ist also der Offset 1.3 kW, weil der Regler soll nicht erst mal von 0 hochlaufen bis 1.4 kW erreicht sind, das lässt sich über den Offset machen. Ich könnte natürlich den Regler auch 0-100% ausgeben lassen, ohne Offset, müsste dann aber an anderer Stelle (z.B. Blockly) über eine Kennlinie normieren; 0% =1.3 kW, 100%=11 kW.
                        Und wenn man den Offset am Reglerausgang nicht braucht, lässt man den halt bei 0.

                        Synology DS920+ VM, S7-315 PN mit ET200S

                        1 Antwort Letzte Antwort
                        0
                        • mcm1957M mcm1957

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

                          @mcm57 sagte: Die Begrenzung des Ausgangswertes auf Max bzw. Min erspart das jedenfalls nicht.

                          Das ist die Begrenzung des Ausgangswertes. Stellglieder haben einen begrenzten Stellbereich, meist 0 ... 100 %. Darauf bezieht sich das Proportionalband Xp.
                          Beispiel für P-Anteil: Xp = 4; Offset = 50 = (Max + Min) / 2; e = -1 --> y = 25 %

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

                          Und Invertierung wäre ja einfache Invertieren des Ausgangswerte ( y = -y).

                          Invertierung von Kp oder e.

                          OK nur die Formal an sich begrenzt da noch nicht.
                          act=0
                          soll=500
                          min=0
                          max=100
                          Xp=50

                          Kp = (Max-Min)/Xp = (100-0)/50 = 2
                          e=act-soll = 500-0 = 500
                          u=Kp * e (bei I und D Anteil disabled) + offset = 500*2 + 50 = 1050.
                          Ergo muss da der Code noch auf 100 limitieren.

                          Oder versteh ich das falsch?

                          Bei Xp 50 wäre eine maximale Differenz
                          von 25 im Regelbereich
                          u = Kp * e + offset = 25*2 +50 = 100

                          Zusatzfrage(n):
                          Eine explizite Invertierungsmöglichkeit braucht man dann ja doch nicht. ein negativer Xp würde das ja dann auch tun wie du schreibst.

                          Braucht dann noch wer den expliziten Parameter Offset? Ich meine ja, da ansonsten bei Abweichung 0 fix (Max-Min)/2 am Ausgang anstünde. Aber ev. will man da ja auch Min (z.B. 0) anliegen haben. Beispiel: Temperaturregler - bei passender Temperatur soll nicht geheizt werden.)

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

                          Vielleicht an der Stelle nochmal der Hinweis auf den OSCAT-Regler (steht ja schon im Github):

                          Es gibt eine freie SPS-Bibliothek "OSCAT". Hier ist auch ein PID-Regler dabei, der eigentlich alles kann, was man so braucht und ein bisschen mehr ;-)
                          Hier der Link zu Dokumentation der gesamten Bibliothek (ist ein PDF), der PID Regler ist auf S. 395 - 397 beschrieben (23.8. CTRL_PID)
                          http://www.oscat.de/de/component/jdownloads/summary/2-oscat-basic/7-oscat-basic333-de.html

                          Wind-Up ist hier auf S. 387/388 gut beschrieben.

                          Synology DS920+ VM, S7-315 PN mit ET200S

                          1 Antwort Letzte Antwort
                          0
                          • mcm1957M mcm1957

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

                            @mcm57 sagte: Die Begrenzung des Ausgangswertes auf Max bzw. Min erspart das jedenfalls nicht.

                            Das ist die Begrenzung des Ausgangswertes. Stellglieder haben einen begrenzten Stellbereich, meist 0 ... 100 %. Darauf bezieht sich das Proportionalband Xp.
                            Beispiel für P-Anteil: Xp = 4; Offset = 50 = (Max + Min) / 2; e = -1 --> y = 25 %

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

                            Und Invertierung wäre ja einfache Invertieren des Ausgangswerte ( y = -y).

                            Invertierung von Kp oder e.

                            OK nur die Formal an sich begrenzt da noch nicht.
                            act=0
                            soll=500
                            min=0
                            max=100
                            Xp=50

                            Kp = (Max-Min)/Xp = (100-0)/50 = 2
                            e=act-soll = 500-0 = 500
                            u=Kp * e (bei I und D Anteil disabled) + offset = 500*2 + 50 = 1050.
                            Ergo muss da der Code noch auf 100 limitieren.

                            Oder versteh ich das falsch?

                            Bei Xp 50 wäre eine maximale Differenz
                            von 25 im Regelbereich
                            u = Kp * e + offset = 25*2 +50 = 100

                            Zusatzfrage(n):
                            Eine explizite Invertierungsmöglichkeit braucht man dann ja doch nicht. ein negativer Xp würde das ja dann auch tun wie du schreibst.

                            Braucht dann noch wer den expliziten Parameter Offset? Ich meine ja, da ansonsten bei Abweichung 0 fix (Max-Min)/2 am Ausgang anstünde. Aber ev. will man da ja auch Min (z.B. 0) anliegen haben. Beispiel: Temperaturregler - bei passender Temperatur soll nicht geheizt werden.)

                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von paul53
                            #35

                            @mcm57 sagte: ein negativer Xp würde das ja dann auch tun

                            Richtig, ist aber unüblich. Ebenso kann man Ist- und Sollwert vertauschen (außer, wenn der D-Anteil nur auf den Istwert wirken soll). Aber das soll sicherlich für Leute handhabbar sein, die sich nicht oder kaum mit Regelungstechnik auskennen?

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

                            Bei Xp 50 wäre eine maximale Differenz von 25 im Regelbereich

                            Ja, +/- 25.

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

                            Braucht dann noch wer den expliziten Parameter Offset?

                            In praktischen Reglern gibt es ihn nicht.

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            fu_zhouF 1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @mcm57 sagte: ein negativer Xp würde das ja dann auch tun

                              Richtig, ist aber unüblich. Ebenso kann man Ist- und Sollwert vertauschen (außer, wenn der D-Anteil nur auf den Istwert wirken soll). Aber das soll sicherlich für Leute handhabbar sein, die sich nicht oder kaum mit Regelungstechnik auskennen?

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

                              Bei Xp 50 wäre eine maximale Differenz von 25 im Regelbereich

                              Ja, +/- 25.

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

                              Braucht dann noch wer den expliziten Parameter Offset?

                              In praktischen Reglern gibt es ihn nicht.

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

                              @paul53 ich würde eher zu einem negativen Xp greifen, als Ist- und Sollwert zu vertauschen, das macht man aus dem von dir angeführten Grund ja lieber nicht. Ich kenne die Möglichkeit des Offsets auf den Reglerausgang eigentlich durchgängig aus der SPS-Welt - s. z.B. auch die OSCAT-PID Beschreibung oben im Link.

                              Synology DS920+ VM, S7-315 PN mit ET200S

                              paul53P 1 Antwort Letzte Antwort
                              0
                              • fu_zhouF fu_zhou

                                @paul53 ich würde eher zu einem negativen Xp greifen, als Ist- und Sollwert zu vertauschen, das macht man aus dem von dir angeführten Grund ja lieber nicht. Ich kenne die Möglichkeit des Offsets auf den Reglerausgang eigentlich durchgängig aus der SPS-Welt - s. z.B. auch die OSCAT-PID Beschreibung oben im Link.

                                paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von
                                #37

                                @fu_zhou sagte: aus der SPS-Welt

                                Ich komme aus der DDC-Welt.

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                mcm1957M 1 Antwort Letzte Antwort
                                0
                                • paul53P paul53

                                  @fu_zhou sagte: aus der SPS-Welt

                                  Ich komme aus der DDC-Welt.

                                  mcm1957M Offline
                                  mcm1957M Offline
                                  mcm1957
                                  schrieb am zuletzt editiert von
                                  #38

                                  @paul53 @fu_zhou

                                  OK, dann mach ich Folgendes:
                                  -) expliziter Schalter "invert" (und Limit Xp > 0)
                                  -) expliziter Offset (muss ja nicht benutzt werden)

                                  P.S. Ich hab zwar Regelungstechnik studiert - aber einerseits ist das 40 Jahre her (wobei der PID Regler damals auch schon erfunden war) und andrerseits wisst ihr Eh dass Praxis ein Studium schlägt. Und die Praxis hatte ich von Anfang an im Programmieren (Assembler Intel 8080/8087 für Messgeräte über Pascal auf VMS (Digital Equipment, dann Compaq und HP) bis zuletzt C, Perl, Linux für online Transaktionssysteme)

                                  DANKE euch allen für euren wertvollen Input.

                                  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 2 Antworten Letzte Antwort
                                  0
                                  • mcm1957M mcm1957

                                    @paul53 @fu_zhou

                                    OK, dann mach ich Folgendes:
                                    -) expliziter Schalter "invert" (und Limit Xp > 0)
                                    -) expliziter Offset (muss ja nicht benutzt werden)

                                    P.S. Ich hab zwar Regelungstechnik studiert - aber einerseits ist das 40 Jahre her (wobei der PID Regler damals auch schon erfunden war) und andrerseits wisst ihr Eh dass Praxis ein Studium schlägt. Und die Praxis hatte ich von Anfang an im Programmieren (Assembler Intel 8080/8087 für Messgeräte über Pascal auf VMS (Digital Equipment, dann Compaq und HP) bis zuletzt C, Perl, Linux für online Transaktionssysteme)

                                    DANKE euch allen für euren wertvollen Input.

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

                                    @mcm57 eine Vorbelegung sämtlicher Werte wäre sinnvoll, so dass kein "Null" im Objekt steht, z.B.:
                                    Kp= 1
                                    Tn= 60 (Sekunden)
                                    Tv= 0 (D-Anteil deaktiviert => zunächst nur PI-Regler)
                                    LL: 0
                                    LH: 100
                                    ...

                                    Synology DS920+ VM, S7-315 PN mit ET200S

                                    1 Antwort Letzte Antwort
                                    0
                                    • mcm1957M mcm1957

                                      @paul53 @fu_zhou

                                      OK, dann mach ich Folgendes:
                                      -) expliziter Schalter "invert" (und Limit Xp > 0)
                                      -) expliziter Offset (muss ja nicht benutzt werden)

                                      P.S. Ich hab zwar Regelungstechnik studiert - aber einerseits ist das 40 Jahre her (wobei der PID Regler damals auch schon erfunden war) und andrerseits wisst ihr Eh dass Praxis ein Studium schlägt. Und die Praxis hatte ich von Anfang an im Programmieren (Assembler Intel 8080/8087 für Messgeräte über Pascal auf VMS (Digital Equipment, dann Compaq und HP) bis zuletzt C, Perl, Linux für online Transaktionssysteme)

                                      DANKE euch allen für euren wertvollen Input.

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

                                      @mcm57

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

                                      -) expliziter Schalter "invert" (und Limit Xp > 0)

                                      Das ist eine gute Lösung finde ich, vielleicht auch als Bool Objekt? Dann könnte man z.B. ein Stellglied, das heizen und kühlen kann, in die entsprechende Betriebsart bringen (z.B. über Temperaturdifferenz innen - außen) - auch wenn das wahrscheinlich eher wenig genutzt werden wird, weil das die Geräte selbständig tun, z.B. Lüftung Sommer- vs. Winter-Betrieb: Im Winter möchte ich die Wärmerückgewinnung nutzen, um die kalte Außenluft mit der warmen Abluft vorzuwärmen und im Sommer möchte ich die warme Außenluft mit der kühleren Abluft vorkühlen.

                                      Synology DS920+ VM, S7-315 PN mit ET200S

                                      fu_zhouF 1 Antwort Letzte Antwort
                                      0
                                      • fu_zhouF fu_zhou

                                        @mcm57

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

                                        -) expliziter Schalter "invert" (und Limit Xp > 0)

                                        Das ist eine gute Lösung finde ich, vielleicht auch als Bool Objekt? Dann könnte man z.B. ein Stellglied, das heizen und kühlen kann, in die entsprechende Betriebsart bringen (z.B. über Temperaturdifferenz innen - außen) - auch wenn das wahrscheinlich eher wenig genutzt werden wird, weil das die Geräte selbständig tun, z.B. Lüftung Sommer- vs. Winter-Betrieb: Im Winter möchte ich die Wärmerückgewinnung nutzen, um die kalte Außenluft mit der warmen Abluft vorzuwärmen und im Sommer möchte ich die warme Außenluft mit der kühleren Abluft vorkühlen.

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

                                        @paul53 @mcm57
                                        Zum Thema Begrenzung nochmal ein Gedanke:

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

                                        Kp = (Max-Min)/Xp = (100-0)/50 = 2
                                        e=act-soll = 500-0 = 500
                                        u=Kp * e (bei I und D Anteil disabled) + offset = 500*2 + 50 = 1050.

                                        Heißt dass, dass sich der Reglerausgang (Stellwert) halbiert, wenn ich Max halbiere, z.B. durch ein Skript, auch ohne dass sich Soll oder Ist verändert? Wenn ich mir die Formeln anschaue, dann schon, weil der Regler ja zyklisch läuft. Das wäre aber kontraproduktiv, weil ich will ja nicht den Reglerausgang verändern, nur weil ich Max verändere. Daher sollte aus meiner Sicht neben Tn und Tv auch Kp angegeben werden und Kp nicht wie oben zyklisch berechnet werden. Habe das grade mal mit der S7 und dem CTRL_PID ausprobiert - da ist es so: Der Reglerausgang verändert sich nur bei Regelabweichung, nicht bei Veränderung von Min oder Max (LL und LH beim CTRL_PID). Außer Max < aktueller Reglerausgang, dann wird der Reglerausgang auf Max gesetzt.

                                        Das ist aktuell auch mein Problem mit dem npm pi-controller: hier muss Xp angegeben werden und Kp wird wie oben berechnet. D.h. Wenn ich hier MaxOut verändere (mit pi.setOutputMax(m);) verändert sich der Reglerausgang y, selbst wenn aktuell ein stabiler Zustand erreicht ist und sich weder Soll noch Ist verändert.

                                        Synology DS920+ VM, S7-315 PN mit ET200S

                                        mcm1957M paul53P 2 Antworten Letzte Antwort
                                        0
                                        • fu_zhouF fu_zhou

                                          @paul53 @mcm57
                                          Zum Thema Begrenzung nochmal ein Gedanke:

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

                                          Kp = (Max-Min)/Xp = (100-0)/50 = 2
                                          e=act-soll = 500-0 = 500
                                          u=Kp * e (bei I und D Anteil disabled) + offset = 500*2 + 50 = 1050.

                                          Heißt dass, dass sich der Reglerausgang (Stellwert) halbiert, wenn ich Max halbiere, z.B. durch ein Skript, auch ohne dass sich Soll oder Ist verändert? Wenn ich mir die Formeln anschaue, dann schon, weil der Regler ja zyklisch läuft. Das wäre aber kontraproduktiv, weil ich will ja nicht den Reglerausgang verändern, nur weil ich Max verändere. Daher sollte aus meiner Sicht neben Tn und Tv auch Kp angegeben werden und Kp nicht wie oben zyklisch berechnet werden. Habe das grade mal mit der S7 und dem CTRL_PID ausprobiert - da ist es so: Der Reglerausgang verändert sich nur bei Regelabweichung, nicht bei Veränderung von Min oder Max (LL und LH beim CTRL_PID). Außer Max < aktueller Reglerausgang, dann wird der Reglerausgang auf Max gesetzt.

                                          Das ist aktuell auch mein Problem mit dem npm pi-controller: hier muss Xp angegeben werden und Kp wird wie oben berechnet. D.h. Wenn ich hier MaxOut verändere (mit pi.setOutputMax(m);) verändert sich der Reglerausgang y, selbst wenn aktuell ein stabiler Zustand erreicht ist und sich weder Soll noch Ist verändert.

                                          mcm1957M Offline
                                          mcm1957M Offline
                                          mcm1957
                                          schrieb am zuletzt editiert von mcm1957
                                          #42

                                          @fu_zhou
                                          Ja damit stell ich die Frage an Runde was denn nun als Parameter "üblich(er)" ist?

                                          Xp oder Kp ?

                                          xp = (max - min) * xp

                                          xp geht in die Regelfunktion ein. D.h. gibt man xp an, dann Ändert min/max nichts am Ausgangssignal. Gibt man xp an, dann hat max/min direkten Einfluß auf das Ausgangssignal.

                                          Im Prinzip würde ich eigentlich auch kp als logioscher betrachten. Aber ich bin kein Praktiker in Regelungstechnik.

                                          Und im Prinzip bin ich wertfrei - nur beides gleichzeitig wird schwer :-)
                                          Bitte daher um eure Meinungen, insbesondere @paul53

                                          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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          243

                                          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