Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter pid (pid-Regler) V1.0.x

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

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

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

      @quorle
      Der Offset findet sich nicht im DP "off" wieder. Der Rest sieht gut aus. Damit müsste sich y, beginnend bei 58 % (P-Anteil) langsam erhöhen.
      Startwert = Offset + (act - set) * (max - min) / Xp

      Etwas irritiert bin ich, dass diff = set - act ist.

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

        @paul53
        Ev mal die option zum loggen der berechnungen aktivieren. Da sollte dann im log stehen was bei jedem zyklus gerechnetvwurde.

        Aber bitte nicht zykluszeit 100ms 🙂

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

          @mcm57 sagte: Ev mal die option zum loggen der berechnungen aktivieren.

          Ich teste den Adapter nicht. Das macht @quorle.

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

            @paul53 @mcm57

            Hab den DP "off" mal mit 50 befeuert. Aber der PID steht weiterhin bei y = 0.
            Sobald man in den DP "off" etwas einträgt, regelt der PID bis auf null herunter, anstatt rauf auf 100.

            Auszug aus dem LOG:

            pid.1
            2023-07-14 18:14:50.610	info	[C-PV-Heizstab] update() - {"ts":1689351290610,"act":2448,"set":0,"diff":-2448,"off":50,"err":-2448,"y":0,"lim":true,"dt":2001,"differr":null,"sumerr":-7552,"supr":false}
            
            pid.1
            2023-07-14 18:14:48.609	info	[C-PV-Heizstab] update() - {"ts":1689351288609,"act":2448,"set":0,"diff":-2448,"off":50,"err":-2448,"y":0,"lim":true,"dt":2001,"differr":null,"sumerr":-7552,"supr":false}
            
            pid.1
            2023-07-14 18:14:46.608	info	[C-PV-Heizstab] update() - {"ts":1689351286608,"act":2448,"set":0,"diff":-2448,"off":50,"err":-2448,"y":0,"lim":true,"dt":2000,"differr":null,"sumerr":-7552,"supr":false}
            
            pid.1
            2023-07-14 18:14:44.608	info	[C-PV-Heizstab] update() - {"ts":1689351284608,"act":2531,"set":0,"diff":-2531,"off":50,"err":-2531,"y":0,"lim":true,"dt":2001,"differr":null,"sumerr":-7469,"supr":false}
            
            pid.1
            2023-07-14 18:14:42.607	info	[C-PV-Heizstab] update() - {"ts":1689351282607,"act":2531,"set":0,"diff":-2531,"off":50,"err":-2531,"y":0,"lim":true,"dt":2001,"differr":null,"sumerr":-7469,"supr":false}
            
            pid.1
            2023-07-14 18:14:40.606	info	[C-PV-Heizstab] update() - {"ts":1689351280606,"act":2531,"set":0,"diff":-2531,"off":50,"err":-2531,"y":0,"lim":true,"dt":2001,"differr":null,"sumerr":-7469,"supr":false}
            
            pid.1
            2023-07-14 18:14:38.605	info	[C-PV-Heizstab] update() - {"ts":1689351278605,"act":2531,"set":0,"diff":-2531,"off":50,"err":-2531,"y":0.5439999999999969,"lim":false,"dt":2000,"differr":null,"sumerr":-7360.200000000001,"supr":false}
            
            pid.1
            2023-07-14 18:14:36.605	info	[C-PV-Heizstab] update() - {"ts":1689351276605,"act":2531,"set":0,"diff":-2531,"off":50,"err":-2531,"y":1.8094999999999928,"lim":false,"dt":2000,"differr":null,"sumerr":-7107.1,"supr":false}
            
            pid.1
            2023-07-14 18:14:34.605	info	[C-PV-Heizstab] update() - {"ts":1689351274605,"act":3146,"set":0,"diff":-3146,"off":50,"err":-3146,"y":0,"lim":true,"dt":2001,"differr":null,"sumerr":-6854,"supr":false}
            
            pid.1
            2023-07-14 18:14:32.604	info	[C-PV-Heizstab] update() - {"ts":1689351272604,"act":3146,"set":0,"diff":-3146,"off":50,"err":-3146,"y":0,"lim":true,"dt":2001,"differr":null,"sumerr":-6854,"supr":false}
            
            pid.1
            2023-07-14 18:14:30.603	info	[C-PV-Heizstab] update() - {"ts":1689351270603,"act":3146,"set":0,"diff":-3146,"off":50,"err":-3146,"y":0,"lim":true,"dt":2001,"differr":null,"sumerr":-6854,"supr":false}
            

            @mcm57
            Wenn man in den Adaptereinstellungen bei "Offset" einen Wert einträgt, wird dieser nicht im Datenpunkt "offset Value" übernommen. Zudem wenn man bei einer Adapter-Instanz das Logging einstellt, wird dies auf allen Adapterinstanzen angewandt.

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

              @quorle sagte: Negativ = Netzbezug, positiv = Überschusseinspeisung

              Muss dann der Regler nicht invertieren (y sinkt wenn act steigt)?

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

                @paul53
                Ja da gebe ich dir Recht, aber der Regler regelt im Netzbezug dann auf 100 und bei Netzeinspeisung sinkt der Wert nicht mehr. Habe ich gerade ausprobiert mit invertieren.

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

                  @quorle
                  Bitte für das offs problem um ein issue

                  Das logging ist global für eine instanz. Ich nehme an du meinst das logging witd für alle controller einer instanz übernommen. Das ist so gedacht.

                  Dass zwischen adapterinstanzen eine wechselwirkung existiert wäre überraschend.

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

                    @quorle sagte: Regler regelt im Netzbezug dann auf 100

                    Die Richtung würde schon mal stimmen: Bei Netzbezug soll der WR mehr Leistung liefern. Setze mal den I-Anteil zurück (macht das der Button "reset controller"?).

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

                      Zu den xalc teaces
                      Drr regler ist voll am Anschlag.
                      Beispiel
                      Set 0
                      Act 2800
                      Y bei k = 1 wäre -2800. Da nutzt der offset nix mehr.
                      Ich ver mute dass der proportionalanteil zu gross ist. Und invertieren müsste nan auch ( oder nan invertuert act gleich extern)

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

                        Ich wütd auch den integrallanteil mal welassen bis der prop anteil mal halbwegs passt

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

                          @paul53
                          Ja reset resettet den p anteil

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

                            @quorle
                            Mit schwankenden Werten die generelle Funktion zu testen, ist schwierig. Übergebe mal an "actual value" einen konstanten Wert von 1000 (= 1000 W Überschuss). Das richtige Verhalten von "output value" nach einem Reset wäre dann der Start mit 57,5 % und alle 2 s Erhöhung um 0,5 %.

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

                              @mcm57 sagte: Drr regler ist voll am Anschlag.

                              Durch den I-Anteil. kp ist 0,005.

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

                                @mcm57 sagte: resettet den p anteil

                                Du meinst den I-Anteil?

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

                                Ich wütd auch den integrallanteil mal welassen

                                Tn = 0 deaktiviert den I-Anteil?

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

                                  @paul53

                                  Also irgendwie komme ich damit nicht klar. Der Regler macht was er will, egal was ich einstelle. Hab es auch mit einem festen Wert von 1000 am "set" versucht. Aber wenn er regelt, regelt er nur auf 100%, dann wieder runter und wieder hoch.
                                  Hat irgendeiner den Adapter schon anderweitig im Einsatz, außer Temperaturen zu regeln? Um den Heizstab zur PV-Einspeiseleistung regeln zu können, sollte der PID schnell reagieren, ohne sehr große Sprünge zu machen

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

                                    @quorle sagte: Der Regler macht was er will

                                    Habe gestern mal den Regler getestet und festgestellt, dass sich der Ausgang nicht wie erwartet verhält.

                                    @quorle sagte in Test neuer Adapter pid (pid-Regler) V0.0.x:

                                    sollte der PID schnell reagieren

                                    @quorle sagte in Test neuer Adapter pid (pid-Regler) V0.0.x:

                                    Der Modbus Adapter holt alle 10 Sekunden die Werte aus dem Wechselrichter.

                                    Die Reaktionsgeschwindigkeit ist durch den Abfragezyklus von Modbus begrenzt. Kann man den verkürzen?

                                    Der folgende Regler verwendet als Zykluszeit den Modbus-Abfragezyklus. Tn = 20 s bezieht sich auf einen Abfragezyklus von 10 s. Verringert man den Abfragezyklus, kann man auch Tn entsprechend verringern.

                                    Blockly_temp.JPG

                                    Ich habe den Regler mit einem Datenpunkt "EVU-Einspeisung", der alle 10 s auf 1000 gesetzt wird, getestet.

                                    11:14:27.406	info	javascript.1 (2139) script.js.blockly.Test3_Blockly: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                    11:14:30.007	info	javascript.1 (2139) script.js.blockly.Test3_Blockly: 57.49825
                                    11:14:40.004	info	javascript.1 (2139) script.js.blockly.Test3_Blockly: 59.998
                                    11:14:50.011	info	javascript.1 (2139) script.js.blockly.Test3_Blockly: 62.4995
                                    11:15:00.011	info	javascript.1 (2139) script.js.blockly.Test3_Blockly: 64.9985
                                    11:15:10.005	info	javascript.1 (2139) script.js.blockly.Test3_Blockly: 67.498
                                    
                                    Q 1 Reply Last reply Reply Quote 0
                                    • Q
                                      quorle @paul53 last edited by quorle

                                      @paul53

                                      Habe dir mal zwei Bilder aus Grafana angehängt.
                                      Entweder regeln beide ( Script und Adapter) nur auf 100% und bleiben dann dort stehen, oder sie machen einfach nichts.
                                      Liegt wahrscheinlich nur an den Einstellungen?
                                      Ich wollte eigentlich den Adapter für mehrere Zwecke einsetzen.
                                      Habe auch die Einstellungen von Nutzern weiter oben im Beitrag genutzt, jedoch regelt hier auch nichts.
                                      Mit dem Scripteinstellungen habe ich auch etwas gespielt, bringt mich auch nicht weiter.

                                      Ich meine, wenn ich jetzt 1600 W am Eingang anliegen habe, sollte der Regler ja auf 80% Reglen (bei 2000W max = Heizstab) und nicht auf 100% Reglen und stehen bleiben. Und wenn es weniger Leistung am Eingang wird, sollte der Regler entsprechend herunter Regeln, dann bei Mehrleistung am Eingang wieder Hochregeln. Oder verstehe ich das Falsch?

                                      @mcm57 Gibt es schon Anwendungsfälle, die Dokumentiert sind?

                                      Scriptauswertung:

                                      script.PNG

                                      Adapterauswertung:

                                      Adapter.PNG

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

                                        @quorle sagte: auf 100% und bleiben dann dort stehen

                                        Wenn der Ausgang nicht auf den Heizstab wirkt, läuft der Ausgang nach Skriptstart auf 100 % (I-Anteil) und verharrt dort. Er verringert sich erst wieder, wenn der Eingang negativ wird (Bezug).

                                        EDIT: Einen PI-Regler kann man nicht sinnvoll ohne geschlossenen Regelkreis (Verbraucher Heizstab) testen.

                                        Hier habe ich die Aktualisierungsrate auf 1 s verringert und Tn auf 2 s eingestellt. Der Regler verhält sich genau so wie erwartet:

                                        12:50:14.726	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                        12:50:15.013	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 57.5
                                        12:50:16.002	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 60
                                        12:50:17.006	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 62.5
                                        12:50:18.003	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 65
                                        12:50:19.002	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 67.5
                                        12:50:20.003	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 70
                                        12:50:21.006	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 72.5
                                        12:50:22.004	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 75
                                        12:50:23.002	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 77.5
                                        12:50:24.014	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 80
                                        12:50:25.003	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 82.5
                                        12:50:26.003	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 85
                                        12:50:27.012	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 87.5
                                        12:50:28.003	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 90
                                        12:50:29.006	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 92.5
                                        12:50:30.003	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 95
                                        12:50:31.004	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 97.5
                                        12:50:32.003	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 100
                                        12:50:33.004	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 100
                                        12:50:34.002	info	javascript.1 (2174) script.js.blockly.Test3_Blockly: 100
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @quorle last edited by paul53

                                          @quorle sagte: Adapterauswertung:

                                          Habe den Adapter getestet mit Invertierung und nachträglicher Eingabe des Offset (wurde nicht aus der Konfiguration übernommen). Nun verhält er sich wie erwartet:

                                          PID_Nulleinspeisung.JPG

                                          Hier die History von "output value" nachdem um 13:05:13 Uhr "reset controller" auf true gesetzt wurde.

                                          PID_Nulleinspeisung_History.JPG

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

                                            @mcm57 Hallo mal wieder, habe gestern Nacht oder eher heute früh mal ein Issue in Github eröffnet, wollte das Thema aber auch hier noch platzieren:

                                            Kurz zusammen gefasst: es wäre Klasse, wenn "inv" beschreibbar wäre (true/false), wenn man "Zustände für die Konfiguration verwenden" aktiviert.

                                            Ich habe den nächsten Einsatz für den Regler: Wärme-/ Kälterückgewinnung über die Drehzahl der Wärmeräder in der Lüftung. Dazu muss ich den inv mit true oder false aus einem Skript beschreiben können, das geht aktuell nicht. Alternativ könnte ich kp und tn auf einen negativen Wert setzen, der Adapter lässt aber nur positive Werte zu. Bei tn, tv, xp lassen sich negative Werte setzen.

                                            Hintergrund: wenn die Außenluft kälter ist, als die Raumluft, kann ich über die Erhöhung der Drehzahl die Zuluft mit der Abluft erwärmen. Im Sommer ist die Außenluft wärmer, als die Raumluft, d.h. ich kann über die Erhöhung der Drehzahl die Zuluft mit der Abluft kühlen. D.h. wenn Temperatur Außenluft < Raumluft, dann inv = 0 und wenn Temperatur Außenluft > Raumluft, dann inv = 1 . Kannst du inv beschreibbar machen? Dann kannst du auch bei tn, tv, xp nur pos. Werte zulassen.

                                            Danke vorab!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            461
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

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