Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  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.1k

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

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

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

Scheduled Pinned Locked Moved Tester
314 Posts 16 Posters 64.5k Views 14 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • fu_zhouF fu_zhou

    Mal ein kurzes Fazit von der PV-Überschussladung: Echt super, mit dem Regler!

    Ich verwende folgende Parameter:

    • Istwert: aktuelle Netzleistung (- = Einspeisung, + = Bezug)
    • Sollwert: 0,1 kW Netzeinspeisung (= -0,1 kW), wobei ich den verschieben kann, z.B. auf +3,0 kW, um auf jeden Fall zu laden (dann halt nicht PV-Überschuss)
    • Kp=0,1, Tn=10s, Tv=0s (bisher nur PI-Regler)
    • sup: 0,2 kW: damit werden Schwankungen im Haus (hier ne Lampe an, da startet der Kühlschrank) gut weggefiltert, ebenso wird damit die Situation verhindert, dass der Regler die Wallbox als Sprungantwort ständig zwischen 2 Stromstärken hin- und herschaltet (z.B. 7A - 8A -7A, die Wallbox goE HomeFix arbeitet nur mit ganzen Ampere)
    • min: die Wallbox startet bei 230V, 6A (= ca.1,4 kW), d.h. mein min ist fix auf 1.3 kW eingestellt => der Regler braucht nicht die gesamte Totzone von 0 bis 1.4 kW hochreglen, bis die Ladung freigegeben wird
    • max: berechne ich dynamisch aus verfügbarer PV-Leistung minus 0,5 kW Grundlast plus Sollwert Netzbezug. Wenn eine Wolke drüber zieht und die PV-Leistung einbricht, muss der Regler nicht erst runterregeln, sondern reduziert die Ladeleistung sehr schnell. Ich nutze daher Kp, nicht Xp, weil die Veränderung von max keinen Einfluss auf y haben darf (außer y > neues max).
    • hold: setze ich auf true, wenn die Anzahl der Phasen (1 nach 3, 3 nach 1) aufgrund der angeforderten Ladeleistung umgeschaltet wird. Die Wallbox pausiert hier kurz den Ladevorgang, was dazu führt, dass die vorherige Ladeleistung schlagartig ins Netz gegeben wird und der Regler mit einem Sprung antworten würde, was dazu führt, dass die Phasen ständig hin- und herschalten und gar nicht mehr geladen wird (durch die Ladepause bei der Phasenumschaltung). hold setze ich wieder auf false, wenn die Phasenumschaltung abgeschlossen ist und die Wallbox mit der neuen Anzahl Phasen weiterlädt

    Ich muss mal sehen, ob ich noch eine Tv ermittle und in wie weit Kp, Tn und sup noch weiter optimiert werden können. Bisher bin ich aber schon sehr zufrieden!

    mcm1957M Online
    mcm1957M Online
    mcm1957
    wrote on last edited by
    #209

    @fu_zhou
    Danke für das ausführliche Feedback incl Anwendungsbericht.

    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 Reply Last reply
    0
    • O Offline
      O Offline
      oxident
      wrote on last edited by
      #210

      Bitte steinigt mich nicht wegen der vielleicht blöden Frage, aber wäre dieser Adapter prinzipiell auch dafür geeignet, die Lade-/Entladeleistung eines PV-Akkus zu berechnen um eine "Nulleinspeisung" zu erreichen?

      Derzeit steuere ich mein Victron-System mehr oder weniger "klassisch", d. h., ich regele jede Sekunde nach in der Hoffnung, am Zähler 0kW zu erreichen...

      PID ist für mich Neuland ... klingt aber spannend 😄

      paul53P fu_zhouF 2 Replies Last reply
      0
      • O oxident

        Bitte steinigt mich nicht wegen der vielleicht blöden Frage, aber wäre dieser Adapter prinzipiell auch dafür geeignet, die Lade-/Entladeleistung eines PV-Akkus zu berechnen um eine "Nulleinspeisung" zu erreichen?

        Derzeit steuere ich mein Victron-System mehr oder weniger "klassisch", d. h., ich regele jede Sekunde nach in der Hoffnung, am Zähler 0kW zu erreichen...

        PID ist für mich Neuland ... klingt aber spannend 😄

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #211

        @oxident sagte: geeignet ... um eine "Nulleinspeisung" zu erreichen?

        Ja.

        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 Reply Last reply
        1
        • O oxident

          Bitte steinigt mich nicht wegen der vielleicht blöden Frage, aber wäre dieser Adapter prinzipiell auch dafür geeignet, die Lade-/Entladeleistung eines PV-Akkus zu berechnen um eine "Nulleinspeisung" zu erreichen?

          Derzeit steuere ich mein Victron-System mehr oder weniger "klassisch", d. h., ich regele jede Sekunde nach in der Hoffnung, am Zähler 0kW zu erreichen...

          PID ist für mich Neuland ... klingt aber spannend 😄

          fu_zhouF Offline
          fu_zhouF Offline
          fu_zhou
          wrote on last edited by
          #212

          @oxident Du hast aus meiner Sicht genau so einen Anwendungsfall, für den der PID-Adapter gedacht ist.

          Wie "regelst" du denn jetzt nach? Wie gibst du dem Victron-System die Lade-/ Entladeleistung vor?

          Synology DS920+ VM, S7-315 PN mit ET200S

          O 1 Reply Last reply
          0
          • fu_zhouF fu_zhou

            @oxident Du hast aus meiner Sicht genau so einen Anwendungsfall, für den der PID-Adapter gedacht ist.

            Wie "regelst" du denn jetzt nach? Wie gibst du dem Victron-System die Lade-/ Entladeleistung vor?

            O Offline
            O Offline
            oxident
            wrote on last edited by
            #213

            @fu_zhou Ich prüfe jede Sekunde, wie die Bilanz am Stromzähler ist und addiere dieses Wert zum derzeitigen Setpoint des Victron Multiplus:

            Setpoint-Neu += (Setpoint-Alt + Netzbezug)

            Da dies aber schnell zu krassen Schwingungen geführt hat habe ich die Formel ein wenig verändert:

            Setpoint-Neu += (Setpoint-Alt + Netzbezug) * 0.6

            Außerdem führe ich die Änderung nur aus, wenn der Netzbezug < -100 oder > 100 ist da ich dummerweise noch einen weiteren, nicht steuerbaren Akku hab.

            fu_zhouF 1 Reply Last reply
            0
            • O oxident

              @fu_zhou Ich prüfe jede Sekunde, wie die Bilanz am Stromzähler ist und addiere dieses Wert zum derzeitigen Setpoint des Victron Multiplus:

              Setpoint-Neu += (Setpoint-Alt + Netzbezug)

              Da dies aber schnell zu krassen Schwingungen geführt hat habe ich die Formel ein wenig verändert:

              Setpoint-Neu += (Setpoint-Alt + Netzbezug) * 0.6

              Außerdem führe ich die Änderung nur aus, wenn der Netzbezug < -100 oder > 100 ist da ich dummerweise noch einen weiteren, nicht steuerbaren Akku hab.

              fu_zhouF Offline
              fu_zhouF Offline
              fu_zhou
              wrote on last edited by fu_zhou
              #214

              @oxident da hast du im Prinzip einen P-Regler gebaut mit Kp = 0,6, sup = 100 und Zykluszeit 1 Sekunde. Die Eigenschaft eines P-Reglers ist, dass es bei einer bleibenden Regelabweichung bleibt, diese wird erst durch einen I-Anteil abgebaut. Ist eine Nachstellzeit Tn parametriert, bekommst du einen PI-Regler, parametrierst du noch eine Vorhaltezeit Tv, bekommst du einen PID-Regler, der noch schneller reagiert, als ein PI-Regler.
              Wenn du dein System zu gleichmäßigen Schwingungen bringen kannst, kannst du z.B. über Ziegler-Nichols oder Chien, Hrones und Reswick Kp, Tn und Tv ermitteln, siehe: https://de.wikipedia.org/wiki/Faustformelverfahren_(Automatisierungstechnik)
              Du musst dabei aber immer bedenken, dass dein System die durch den Regler ausgegebenen Änderungen der Stellgröße = bei dir die Ansteuerung der Lade- und Entladeleistung des Akkus dauerhaft verkraften muss. Es nützt dir ja nichts, wenn du die Nulleinspeisung mit optimalen Reglerparametern hinbekommst, aber nach einem halben Jahr die Elektronik oder der ganze Akku kaputt ist, weil die Bauteile mechanisch/elektronisch nicht für eine stetige Regelung ausgelegt und geeignet sind.

              Synology DS920+ VM, S7-315 PN mit ET200S

              O mcm1957M 2 Replies Last reply
              2
              • fu_zhouF fu_zhou

                @oxident da hast du im Prinzip einen P-Regler gebaut mit Kp = 0,6, sup = 100 und Zykluszeit 1 Sekunde. Die Eigenschaft eines P-Reglers ist, dass es bei einer bleibenden Regelabweichung bleibt, diese wird erst durch einen I-Anteil abgebaut. Ist eine Nachstellzeit Tn parametriert, bekommst du einen PI-Regler, parametrierst du noch eine Vorhaltezeit Tv, bekommst du einen PID-Regler, der noch schneller reagiert, als ein PI-Regler.
                Wenn du dein System zu gleichmäßigen Schwingungen bringen kannst, kannst du z.B. über Ziegler-Nichols oder Chien, Hrones und Reswick Kp, Tn und Tv ermitteln, siehe: https://de.wikipedia.org/wiki/Faustformelverfahren_(Automatisierungstechnik)
                Du musst dabei aber immer bedenken, dass dein System die durch den Regler ausgegebenen Änderungen der Stellgröße = bei dir die Ansteuerung der Lade- und Entladeleistung des Akkus dauerhaft verkraften muss. Es nützt dir ja nichts, wenn du die Nulleinspeisung mit optimalen Reglerparametern hinbekommst, aber nach einem halben Jahr die Elektronik oder der ganze Akku kaputt ist, weil die Bauteile mechanisch/elektronisch nicht für eine stetige Regelung ausgelegt und geeignet sind.

                O Offline
                O Offline
                oxident
                wrote on last edited by oxident
                #215

                @fu_zhou Wow, danke Dir. Dann hab ich genug Lesestoff für das Wochenende 😉

                Über die Grenzen des Akkus muss ich mir zum Glück keine Gedanken machen. Da bremst mich das BMS notfalls. Ubd mehr als 400W/s wird eh nicht geändert. Diese Rampenzeit wird vom Ladegerät forciert.

                1 Reply Last reply
                0
                • fu_zhouF fu_zhou

                  @oxident da hast du im Prinzip einen P-Regler gebaut mit Kp = 0,6, sup = 100 und Zykluszeit 1 Sekunde. Die Eigenschaft eines P-Reglers ist, dass es bei einer bleibenden Regelabweichung bleibt, diese wird erst durch einen I-Anteil abgebaut. Ist eine Nachstellzeit Tn parametriert, bekommst du einen PI-Regler, parametrierst du noch eine Vorhaltezeit Tv, bekommst du einen PID-Regler, der noch schneller reagiert, als ein PI-Regler.
                  Wenn du dein System zu gleichmäßigen Schwingungen bringen kannst, kannst du z.B. über Ziegler-Nichols oder Chien, Hrones und Reswick Kp, Tn und Tv ermitteln, siehe: https://de.wikipedia.org/wiki/Faustformelverfahren_(Automatisierungstechnik)
                  Du musst dabei aber immer bedenken, dass dein System die durch den Regler ausgegebenen Änderungen der Stellgröße = bei dir die Ansteuerung der Lade- und Entladeleistung des Akkus dauerhaft verkraften muss. Es nützt dir ja nichts, wenn du die Nulleinspeisung mit optimalen Reglerparametern hinbekommst, aber nach einem halben Jahr die Elektronik oder der ganze Akku kaputt ist, weil die Bauteile mechanisch/elektronisch nicht für eine stetige Regelung ausgelegt und geeignet sind.

                  mcm1957M Online
                  mcm1957M Online
                  mcm1957
                  wrote on last edited by
                  #216

                  @fu_zhou
                  DANKE für seinen Support in Regelungstechnik.
                  Bei Softwareproblemen kann ich ja helfen - in Regelungstechnik bin ich allerdings eher wenig informiert.

                  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 Reply Last reply
                  0
                  • fu_zhouF fu_zhou

                    Mal ein kurzes Fazit von der PV-Überschussladung: Echt super, mit dem Regler!

                    Ich verwende folgende Parameter:

                    • Istwert: aktuelle Netzleistung (- = Einspeisung, + = Bezug)
                    • Sollwert: 0,1 kW Netzeinspeisung (= -0,1 kW), wobei ich den verschieben kann, z.B. auf +3,0 kW, um auf jeden Fall zu laden (dann halt nicht PV-Überschuss)
                    • Kp=0,1, Tn=10s, Tv=0s (bisher nur PI-Regler)
                    • sup: 0,2 kW: damit werden Schwankungen im Haus (hier ne Lampe an, da startet der Kühlschrank) gut weggefiltert, ebenso wird damit die Situation verhindert, dass der Regler die Wallbox als Sprungantwort ständig zwischen 2 Stromstärken hin- und herschaltet (z.B. 7A - 8A -7A, die Wallbox goE HomeFix arbeitet nur mit ganzen Ampere)
                    • min: die Wallbox startet bei 230V, 6A (= ca.1,4 kW), d.h. mein min ist fix auf 1.3 kW eingestellt => der Regler braucht nicht die gesamte Totzone von 0 bis 1.4 kW hochreglen, bis die Ladung freigegeben wird
                    • max: berechne ich dynamisch aus verfügbarer PV-Leistung minus 0,5 kW Grundlast plus Sollwert Netzbezug. Wenn eine Wolke drüber zieht und die PV-Leistung einbricht, muss der Regler nicht erst runterregeln, sondern reduziert die Ladeleistung sehr schnell. Ich nutze daher Kp, nicht Xp, weil die Veränderung von max keinen Einfluss auf y haben darf (außer y > neues max).
                    • hold: setze ich auf true, wenn die Anzahl der Phasen (1 nach 3, 3 nach 1) aufgrund der angeforderten Ladeleistung umgeschaltet wird. Die Wallbox pausiert hier kurz den Ladevorgang, was dazu führt, dass die vorherige Ladeleistung schlagartig ins Netz gegeben wird und der Regler mit einem Sprung antworten würde, was dazu führt, dass die Phasen ständig hin- und herschalten und gar nicht mehr geladen wird (durch die Ladepause bei der Phasenumschaltung). hold setze ich wieder auf false, wenn die Phasenumschaltung abgeschlossen ist und die Wallbox mit der neuen Anzahl Phasen weiterlädt

                    Ich muss mal sehen, ob ich noch eine Tv ermittle und in wie weit Kp, Tn und sup noch weiter optimiert werden können. Bisher bin ich aber schon sehr zufrieden!

                    lobomauL Offline
                    lobomauL Offline
                    lobomau
                    wrote on last edited by lobomau
                    #217

                    @fu_zhou das ist ein interessanter Anwendungsfall, den sicher einige hier übernehmen können. Vielleicht würde sich hier anbieten einen eigenen thread hierzu anzulegen, oder?
                    Also.. ich versuche es grad nachzubauen. Bisher war ich eigentlich ganz zufrieden mit meinem eigenen SCript dazu, aber besser geht immer 😉
                    Bisher habe ich immer die Ampere-Zahl geregelt. Wenn ich es richtig sehe nutzt du den unteren DP, der aus Watt die Ampere macht, richtig?

                    go-e.1.energy.adjustAmpLevelInWatts
                    

                    Und wenn ich es richtig verstehe muss ich da irgendwie in der selben Einheit bleiben... also alles in kW?
                    Ich habe erstmal ganz plump angefangen. Ein Script setzt den actual value auf die aktuelle Netzleistung vom smartmeter, also wie bei dir (- = Einspeisung, + = Bezug). Der Wert kommt in Watt rein, deswegen teile ich den Wert durch 1000 um auf kW zu kommen:

                    9db54a1a-86dc-47cb-bb46-52905a92d70e-image.png

                    Den Teil von dir für die max Berechnung habe ich noch nicht implementiert. Ich habe hier erstmal nur die Zahl 3,7 für 3,7 kW eingesetzt und 1,4 kW für min.
                    So lasse ich erstmal laufen ohne das dieses Script wirklich eingreift.... sprich der y-Wert wirkt noch nicht aktiv. Set habe ich auf 0 gesetzt.

                    Das Ganze scheint schon mal so zu reagieren wie erwartet:
                    y wird geregelt zwischen 1,4 und 3,7 kW. Bei Bezug wird es kleiner Richtung 1,4 und bei Einspeisung wird es größer Richtung 3,7.
                    Ich werde das mal beobachten und dann mal scharf ausprobieren.

                    Mein altes SCript hat bisher immer in 1 A-Schritten geregelt. Interessant wäre es ob das jetzt auch mit größeren Sprüngen funktionieren könnte.

                    Host: NUC8i3 mit Proxmox:

                    • ioBroker CT Debian 13, npm 10.9.3, nodejs 22.20.0
                    • Slave: Pi4
                    mcm1957M fu_zhouF 2 Replies Last reply
                    0
                    • lobomauL lobomau

                      @fu_zhou das ist ein interessanter Anwendungsfall, den sicher einige hier übernehmen können. Vielleicht würde sich hier anbieten einen eigenen thread hierzu anzulegen, oder?
                      Also.. ich versuche es grad nachzubauen. Bisher war ich eigentlich ganz zufrieden mit meinem eigenen SCript dazu, aber besser geht immer 😉
                      Bisher habe ich immer die Ampere-Zahl geregelt. Wenn ich es richtig sehe nutzt du den unteren DP, der aus Watt die Ampere macht, richtig?

                      go-e.1.energy.adjustAmpLevelInWatts
                      

                      Und wenn ich es richtig verstehe muss ich da irgendwie in der selben Einheit bleiben... also alles in kW?
                      Ich habe erstmal ganz plump angefangen. Ein Script setzt den actual value auf die aktuelle Netzleistung vom smartmeter, also wie bei dir (- = Einspeisung, + = Bezug). Der Wert kommt in Watt rein, deswegen teile ich den Wert durch 1000 um auf kW zu kommen:

                      9db54a1a-86dc-47cb-bb46-52905a92d70e-image.png

                      Den Teil von dir für die max Berechnung habe ich noch nicht implementiert. Ich habe hier erstmal nur die Zahl 3,7 für 3,7 kW eingesetzt und 1,4 kW für min.
                      So lasse ich erstmal laufen ohne das dieses Script wirklich eingreift.... sprich der y-Wert wirkt noch nicht aktiv. Set habe ich auf 0 gesetzt.

                      Das Ganze scheint schon mal so zu reagieren wie erwartet:
                      y wird geregelt zwischen 1,4 und 3,7 kW. Bei Bezug wird es kleiner Richtung 1,4 und bei Einspeisung wird es größer Richtung 3,7.
                      Ich werde das mal beobachten und dann mal scharf ausprobieren.

                      Mein altes SCript hat bisher immer in 1 A-Schritten geregelt. Interessant wäre es ob das jetzt auch mit größeren Sprüngen funktionieren könnte.

                      mcm1957M Online
                      mcm1957M Online
                      mcm1957
                      wrote on last edited by
                      #218

                      @fu_zhou
                      @paul53

                      Ein neuer Thread zum Support der regelungstechnischen Fragen (im Gegensatz zu Fragen die die Softwareimplemntierung, Abstürze, Features, ... betreffen, würde wahrscheinölich Sinn machen.
                      ABER wie schon geschrieben, ich bin zu wenig Regelungstechniker um hier seriös unterstützen zu können.

                      Falls also wer von euch hier bereit ist zu supporten, bitte gern einen Extra Thread aufmachen (oder mir sagen, dann mach ichs). Es kann auch gerne das Wiki (https://github.com/iobroker-community-adapters/ioBroker.pid/wiki) benutzt werden falls das sinnvoll erscheint und jemand z.B. Artikel zum Einsatz mit einer konkreten Aufgabenstellung ablegen will.

                      Größter Nachteil diese Threads ist dass ich nicht weiß ob "nicht-tester" hier posten können. Ansonsten stört es mich auch nicht, wenn hier diskutiert wird solange es mit dem pid Adapter im Zusammenhang steht.

                      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 Reply Last reply
                      0
                      • lobomauL lobomau

                        @fu_zhou das ist ein interessanter Anwendungsfall, den sicher einige hier übernehmen können. Vielleicht würde sich hier anbieten einen eigenen thread hierzu anzulegen, oder?
                        Also.. ich versuche es grad nachzubauen. Bisher war ich eigentlich ganz zufrieden mit meinem eigenen SCript dazu, aber besser geht immer 😉
                        Bisher habe ich immer die Ampere-Zahl geregelt. Wenn ich es richtig sehe nutzt du den unteren DP, der aus Watt die Ampere macht, richtig?

                        go-e.1.energy.adjustAmpLevelInWatts
                        

                        Und wenn ich es richtig verstehe muss ich da irgendwie in der selben Einheit bleiben... also alles in kW?
                        Ich habe erstmal ganz plump angefangen. Ein Script setzt den actual value auf die aktuelle Netzleistung vom smartmeter, also wie bei dir (- = Einspeisung, + = Bezug). Der Wert kommt in Watt rein, deswegen teile ich den Wert durch 1000 um auf kW zu kommen:

                        9db54a1a-86dc-47cb-bb46-52905a92d70e-image.png

                        Den Teil von dir für die max Berechnung habe ich noch nicht implementiert. Ich habe hier erstmal nur die Zahl 3,7 für 3,7 kW eingesetzt und 1,4 kW für min.
                        So lasse ich erstmal laufen ohne das dieses Script wirklich eingreift.... sprich der y-Wert wirkt noch nicht aktiv. Set habe ich auf 0 gesetzt.

                        Das Ganze scheint schon mal so zu reagieren wie erwartet:
                        y wird geregelt zwischen 1,4 und 3,7 kW. Bei Bezug wird es kleiner Richtung 1,4 und bei Einspeisung wird es größer Richtung 3,7.
                        Ich werde das mal beobachten und dann mal scharf ausprobieren.

                        Mein altes SCript hat bisher immer in 1 A-Schritten geregelt. Interessant wäre es ob das jetzt auch mit größeren Sprüngen funktionieren könnte.

                        fu_zhouF Offline
                        fu_zhouF Offline
                        fu_zhou
                        wrote on last edited by fu_zhou
                        #219

                        @lobomau mach doch mal ein Thread auf "PID-Adapter: Anwendungs-Ideen und -Möglichkeiten" oder so ähnlich.

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

                        Bisher habe ich immer die Ampere-Zahl geregelt. Wenn ich es richtig sehe nutzt du den unteren DP, der aus Watt die Ampere macht, richtig?

                        ich kenne den Datenpunkt so nicht, ich nutze MQTT und verwende da amp.set und versorge den state mit ganzen (Ampere-) Zahlen. Die Stromstärke berechne ich aus der vom Regler ermittelten Leistung in kW und runde auf ganze Zahlen ab. Den Code vom Blockly findest du unten - einfach in Blockly importieren und versuchen nachzuvollziehen 😉
                        Warum regle ich die Leistung und nicht die Stromstärke? Weil die Leistung von 1.4 bis 11 kW geht, bei ca. 4 kW aber der Sprung von 16 zurück auf 6 A kommt, während dann mit 3 und nicht mehr mit 1 Phase geladen wird. Wenn du mit max. 3.7 kW laden möchtest (=1-phasig) kannst du auch die Stromstärke von 6 - 16 A regeln.

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

                        Und wenn ich es richtig verstehe muss ich da irgendwie in der selben Einheit bleiben... also alles in kW?

                        Istwert und Sollwert müssen die gleiche Einheit haben, sonst lässt sich ja die Regelabweichung nicht vernünftig berechnen. Der Reglerausgang muss dann zum Stellglied passen, kann 0-100 (%) sein, kann 0-11 (kW) sein, 0-10 (V), 6-16 (A), -1400 - 1400 (U/min) sein usw. (wird ja durch min und max definiert).

                        <xml xmlns="https://developers.google.com/blockly/xml">
                          <block type="comment" id="6Fzyi%iFMuz;[gx6U^ur" x="-162" y="-462">
                            <field name="COMMENT">Objekte für Lademodi</field>
                            <next>
                              <block type="create" id="g=}k]T}C`/O@fN^KkL8,">
                                <field name="NAME">Wallbox.Laden_mit_3_Phasen</field>
                                <value name="VALUE">
                                  <block type="logic_boolean" id="Q#$fU7:LQ*wXH$Wmo?^;">
                                    <field name="BOOL">FALSE</field>
                                  </block>
                                </value>
                                <value name="COMMON">
                                  <block type="text" id="()hhu.BXzd@3B9LR{M5L">
                                    <field name="TEXT">{"type":"boolean"}</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="create" id="V2UMyXKwCwkVRQ7Q|H7p">
                                    <field name="NAME">Wallbox.Ladestrom</field>
                                    <value name="VALUE">
                                      <block type="math_number" id=")zxu/!0vjiL|6`/wTm?z">
                                        <field name="NUM">6</field>
                                      </block>
                                    </value>
                                    <value name="COMMON">
                                      <block type="text" id="IBU`2L$!ri*P0acDm[hq">
                                        <field name="TEXT">{"type":"number","unit":"A","min":6,"max":17}</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="create" id="3ZF*2X8UqK5D2Yrg.=Ja">
                                        <field name="NAME">Wallbox.Ladestrom_temp</field>
                                        <value name="VALUE">
                                          <block type="math_number" id="Os.Q{xlLrT9ukcU2.he:">
                                            <field name="NUM">6</field>
                                          </block>
                                        </value>
                                        <value name="COMMON">
                                          <block type="text" id="h|$`wDEX7VK:.vb#?+9~">
                                            <field name="TEXT">{"type":"number","unit":"A","min":6,"max":17}</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="comment" id="9(;?A=^Gm:J{1/0kx?D*">
                                            <field name="COMMENT">Ladefreigabe nur bei Anforderung &gt;1.4kW</field>
                                            <next>
                                              <block type="on" id="LI/DnJ,bhNV[GPDQd5x2" disabled="true">
                                                <field name="OID">javascript.0.Wallbox.Ladeleistung</field>
                                                <field name="CONDITION">ne</field>
                                                <field name="ACK_CONDITION"></field>
                                                <statement name="STATEMENT">
                                                  <block type="controls_if" id="]g-4ksVUc,L:R`,Sam{]">
                                                    <mutation else="1"></mutation>
                                                    <value name="IF0">
                                                      <block type="logic_compare" id="LR(_Lypo4Eh;q?jxiyWG">
                                                        <field name="OP">LT</field>
                                                        <value name="A">
                                                          <block type="on_source" id="5ICK=yd_RoC2xZ=2nuCd">
                                                            <field name="ATTR">state.val</field>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="math_number" id="z2XHw[s8?rAAc45}wfIg">
                                                            <field name="NUM">1.4</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO0">
                                                      <block type="comment" id="M%HTxJcO2Ix:=1Lvth^w">
                                                        <field name="COMMENT">Flatterschutz</field>
                                                        <next>
                                                          <block type="control" id="7)CJi@2G~T@ov|Nw^8Bk">
                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                            <field name="OID">mqtt.0.go-eCharger.frc.set</field>
                                                            <field name="WITH_DELAY">FALSE</field>
                                                            <value name="VALUE">
                                                              <block type="math_number" id="u3r[TM0$.O8x/1i[y_L#">
                                                                <field name="NUM">1</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </statement>
                                                    <statement name="ELSE">
                                                      <block type="control" id="}uF^S[.4}bpeEf|E.^/~">
                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                        <field name="OID">mqtt.0.go-eCharger.frc.set</field>
                                                        <field name="WITH_DELAY">FALSE</field>
                                                        <value name="VALUE">
                                                          <block type="math_number" id="4n~49KOkX/ZZAR)1wrfD">
                                                            <field name="NUM">0</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </statement>
                                                  </block>
                                                </statement>
                                                <next>
                                                  <block type="comment" id="*(ykd$e~x?uw_M6bq9=5">
                                                    <field name="COMMENT">Freigabe Regler nur bei aktiver Ladung</field>
                                                    <next>
                                                      <block type="on" id="(J,T/^Dj!W64nts%+Q~f">
                                                        <field name="OID">javascript.0.PV.Netzleistung</field>
                                                        <field name="CONDITION">ne</field>
                                                        <field name="ACK_CONDITION"></field>
                                                        <statement name="STATEMENT">
                                                          <block type="control" id="L+s}}3JbkdP9ird(}dD?">
                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                            <field name="OID">pid.0.C-Wallbox_Ladeleistung.in.act</field>
                                                            <field name="WITH_DELAY">FALSE</field>
                                                            <value name="VALUE">
                                                              <block type="on_source" id="BW+GhDj$_HcO%0A5`Uig">
                                                                <field name="ATTR">state.val</field>
                                                              </block>
                                                            </value>
                                                            <next>
                                                              <block type="comment" id="lT_D;o/aq/KP3g[/6[=X">
                                                                <field name="COMMENT">"- 0.5" = Grundlast</field>
                                                                <next>
                                                                  <block type="control" id="ui]E)FYnxhAtqjDiio_)">
                                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                    <field name="OID">pid.0.C-Wallbox_Ladeleistung.para.max</field>
                                                                    <field name="WITH_DELAY">FALSE</field>
                                                                    <value name="VALUE">
                                                                      <block type="math_constrain" id="~1f,$OZYDw3ka]UGHbrB">
                                                                        <value name="VALUE">
                                                                          <shadow type="math_number" id="^`IA.,ld+d0I)(kPy`9N">
                                                                            <field name="NUM">50</field>
                                                                          </shadow>
                                                                          <block type="math_arithmetic" id="rd@D|6a,_es.dd@R7Q.z">
                                                                            <field name="OP">MINUS</field>
                                                                            <value name="A">
                                                                              <shadow type="math_number" id="5Tfd4pORy!tC@3lXPp+*">
                                                                                <field name="NUM">1</field>
                                                                              </shadow>
                                                                              <block type="math_arithmetic" id="P=JTpM]BWMnggQ^0$;2o">
                                                                                <field name="OP">ADD</field>
                                                                                <value name="A">
                                                                                  <shadow type="math_number" id="jV=45_4GcvdMfevaias|">
                                                                                    <field name="NUM">1</field>
                                                                                  </shadow>
                                                                                  <block type="get_value" id="asCeq)lqPS^](|ZJ=~er">
                                                                                    <field name="ATTR">val</field>
                                                                                    <field name="OID">pid.0.C-Wallbox_Ladeleistung.in.set</field>
                                                                                  </block>
                                                                                </value>
                                                                                <value name="B">
                                                                                  <shadow type="math_number" id="yQ?:r`qozcbv_*^/!;MJ">
                                                                                    <field name="NUM">0.5</field>
                                                                                  </shadow>
                                                                                  <block type="get_value" id="cpWV!jBFH`w(r?EjIGi%">
                                                                                    <field name="ATTR">val</field>
                                                                                    <field name="OID">lg-ess-home.0.user.essinfo.home.statistics.pcs_pv_total_power</field>
                                                                                  </block>
                                                                                </value>
                                                                              </block>
                                                                            </value>
                                                                            <value name="B">
                                                                              <shadow type="math_number" id=")BI(2-KYpw={iuPJ2=!e">
                                                                                <field name="NUM">0.5</field>
                                                                              </shadow>
                                                                            </value>
                                                                          </block>
                                                                        </value>
                                                                        <value name="LOW">
                                                                          <shadow type="math_number" id="Pz3azW*5Kd,gx3~tI8wM">
                                                                            <field name="NUM">1.4</field>
                                                                          </shadow>
                                                                        </value>
                                                                        <value name="HIGH">
                                                                          <shadow type="math_number" id="?*r`h-cHu$XdQx+lY.*=">
                                                                            <field name="NUM">11.4</field>
                                                                          </shadow>
                                                                        </value>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </next>
                                                          </block>
                                                        </statement>
                                                        <next>
                                                          <block type="comment" id="R$%zd0jUahW`PPIGw_lZ">
                                                            <field name="COMMENT">PID-Adapter hat y (Ladeleistung) verändert</field>
                                                            <next>
                                                              <block type="comment" id="*|YXiB6@e=%~gJ-enB-{">
                                                                <field name="COMMENT">Berechnung von Strom und Anzahl Phasen</field>
                                                                <next>
                                                                  <block type="on" id="Lv1XVslI[XE21]$gixhv">
                                                                    <field name="OID">pid.0.C-Wallbox_Ladeleistung.out.y</field>
                                                                    <field name="CONDITION">ne</field>
                                                                    <field name="ACK_CONDITION"></field>
                                                                    <statement name="STATEMENT">
                                                                      <block type="controls_if" id="-94`Y!nA+O~2fKFScjGq">
                                                                        <mutation elseif="1"></mutation>
                                                                        <value name="IF0">
                                                                          <block type="logic_compare" id="knkQ5MNMDQSuAO%~TzWI">
                                                                            <field name="OP">GTE</field>
                                                                            <value name="A">
                                                                              <block type="on_source" id="];-|1rg~FCQeqrFcFT0!">
                                                                                <field name="ATTR">state.val</field>
                                                                              </block>
                                                                            </value>
                                                                            <value name="B">
                                                                              <block type="math_number" id="Ds%kkB$E0UIh6#9snq+c">
                                                                                <field name="NUM">4.3</field>
                                                                              </block>
                                                                            </value>
                                                                          </block>
                                                                        </value>
                                                                        <statement name="DO0">
                                                                          <block type="update" id="/0}^g)!y4{][e:rG8)V5">
                                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                            <field name="OID">javascript.0.Wallbox.Laden_mit_3_Phasen</field>
                                                                            <field name="WITH_DELAY">FALSE</field>
                                                                            <value name="VALUE">
                                                                              <block type="logic_boolean" id=".}pj*s316R_g{2~urmom">
                                                                                <field name="BOOL">TRUE</field>
                                                                              </block>
                                                                            </value>
                                                                            <next>
                                                                              <block type="update" id="2P=}qq.`fQQ04OAb_Q7(">
                                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                <field name="OID">javascript.0.Wallbox.Ladestrom_temp</field>
                                                                                <field name="WITH_DELAY">FALSE</field>
                                                                                <value name="VALUE">
                                                                                  <block type="math_arithmetic" id="]Fs)6Y24R=Id7@(Wc%Uv">
                                                                                    <field name="OP">DIVIDE</field>
                                                                                    <value name="A">
                                                                                      <shadow type="math_number" id="}6c;IG09uA}ji#f*}/u0">
                                                                                        <field name="NUM">1</field>
                                                                                      </shadow>
                                                                                      <block type="math_arithmetic" id="./*ky,qeu2Jly-#o:.NA">
                                                                                        <field name="OP">MULTIPLY</field>
                                                                                        <value name="A">
                                                                                          <shadow type="math_number" id="P}tikR,7o8zbZTw,kyiW">
                                                                                            <field name="NUM">400</field>
                                                                                          </shadow>
                                                                                          <block type="on_source" id="I^XZ^2Ny^jPI`*2O;c_X">
                                                                                            <field name="ATTR">state.val</field>
                                                                                          </block>
                                                                                        </value>
                                                                                        <value name="B">
                                                                                          <shadow type="math_number" id="HFR$IT_BfO1Fr=+W9n0y">
                                                                                            <field name="NUM">1000</field>
                                                                                          </shadow>
                                                                                        </value>
                                                                                      </block>
                                                                                    </value>
                                                                                    <value name="B">
                                                                                      <shadow type="math_number" id="=D~E~Voyz4-[!}*TtHg%">
                                                                                        <field name="NUM">1</field>
                                                                                      </shadow>
                                                                                      <block type="math_arithmetic" id="J5E4vPyUoz28Mv!Yxe=%">
                                                                                        <field name="OP">MULTIPLY</field>
                                                                                        <value name="A">
                                                                                          <shadow type="math_number" id="{kwtU*UGl5T1w_*XAMm}">
                                                                                            <field name="NUM">400</field>
                                                                                          </shadow>
                                                                                        </value>
                                                                                        <value name="B">
                                                                                          <shadow type="math_number" id="k=H55W)(6ME~]s52b6^y">
                                                                                            <field name="NUM">1</field>
                                                                                          </shadow>
                                                                                          <block type="math_single" id="/|J#~[u|cI)$^~3|vQA3">
                                                                                            <field name="OP">ROOT</field>
                                                                                            <value name="NUM">
                                                                                              <shadow type="math_number" id="]LN=L2`Z+4=uzwd}DKK*">
                                                                                                <field name="NUM">3</field>
                                                                                              </shadow>
                                                                                            </value>
                                                                                          </block>
                                                                                        </value>
                                                                                      </block>
                                                                                    </value>
                                                                                  </block>
                                                                                </value>
                                                                              </block>
                                                                            </next>
                                                                          </block>
                                                                        </statement>
                                                                        <value name="IF1">
                                                                          <block type="logic_compare" id="lhSTc~J%TR]tQnvBRk3J">
                                                                            <field name="OP">LTE</field>
                                                                            <value name="A">
                                                                              <block type="on_source" id="NuPp_$3eTiKW[F8EcSZr">
                                                                                <field name="ATTR">state.val</field>
                                                                              </block>
                                                                            </value>
                                                                            <value name="B">
                                                                              <block type="math_number" id="WZeW!mvt_8|Ji)a]O,R?">
                                                                                <field name="NUM">4.1</field>
                                                                              </block>
                                                                            </value>
                                                                          </block>
                                                                        </value>
                                                                        <statement name="DO1">
                                                                          <block type="update" id=".8`KTV|:H]f67+4KkwFY">
                                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                            <field name="OID">javascript.0.Wallbox.Laden_mit_3_Phasen</field>
                                                                            <field name="WITH_DELAY">FALSE</field>
                                                                            <value name="VALUE">
                                                                              <block type="logic_boolean" id="7tpYqM!BDOjQrWoD@)m~">
                                                                                <field name="BOOL">FALSE</field>
                                                                              </block>
                                                                            </value>
                                                                            <next>
                                                                              <block type="update" id="v-z)wQ!i}E3KPIoqnf;Q">
                                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                <field name="OID">javascript.0.Wallbox.Ladestrom_temp</field>
                                                                                <field name="WITH_DELAY">FALSE</field>
                                                                                <value name="VALUE">
                                                                                  <block type="math_arithmetic" id="#P7..Vx8z^mk`w0/op7$">
                                                                                    <field name="OP">DIVIDE</field>
                                                                                    <value name="A">
                                                                                      <shadow type="math_number" id="fEQ,#vO5*8c)z%KwM{a3">
                                                                                        <field name="NUM">1</field>
                                                                                      </shadow>
                                                                                      <block type="math_arithmetic" id="q=M1`]}3*XB,Y77`ZNw(">
                                                                                        <field name="OP">MULTIPLY</field>
                                                                                        <value name="A">
                                                                                          <shadow type="math_number" id="PCER@)4yE#7cF/]heqO]">
                                                                                            <field name="NUM">400</field>
                                                                                          </shadow>
                                                                                          <block type="on_source" id="H%kxy#Tea`Lbcuk^*jm%">
                                                                                            <field name="ATTR">state.val</field>
                                                                                          </block>
                                                                                        </value>
                                                                                        <value name="B">
                                                                                          <shadow type="math_number" id="_I;!W[$Rn+m/O+m(GZn`">
                                                                                            <field name="NUM">1000</field>
                                                                                          </shadow>
                                                                                        </value>
                                                                                      </block>
                                                                                    </value>
                                                                                    <value name="B">
                                                                                      <shadow type="math_number" id="b(U)LH@-Y#=Lxzy*G#5V">
                                                                                        <field name="NUM">230</field>
                                                                                      </shadow>
                                                                                    </value>
                                                                                  </block>
                                                                                </value>
                                                                              </block>
                                                                            </next>
                                                                          </block>
                                                                        </statement>
                                                                      </block>
                                                                    </statement>
                                                                    <next>
                                                                      <block type="comment" id="#xW+.d|2.Vtia9K#2I9A">
                                                                        <field name="COMMENT">Phasenumschaltung an Wallbox senden, Regler pausieren</field>
                                                                        <next>
                                                                          <block type="on" id="/q{y(D=]qK]yr0KwDQ*Q">
                                                                            <field name="OID">javascript.0.Wallbox.Laden_mit_3_Phasen</field>
                                                                            <field name="CONDITION">ne</field>
                                                                            <field name="ACK_CONDITION"></field>
                                                                            <statement name="STATEMENT">
                                                                              <block type="control" id="j}5$_.R^ys2qr?]3?DFP">
                                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                <field name="OID">pid.0.C-Wallbox_Ladeleistung.in.hold</field>
                                                                                <field name="WITH_DELAY">FALSE</field>
                                                                                <value name="VALUE">
                                                                                  <block type="logic_boolean" id="]1sVAD$]{P-;J2/=)GLt">
                                                                                    <field name="BOOL">TRUE</field>
                                                                                  </block>
                                                                                </value>
                                                                                <next>
                                                                                  <block type="controls_if" id="sCKj4U,.=qqK^sT[j9-R">
                                                                                    <mutation else="1"></mutation>
                                                                                    <value name="IF0">
                                                                                      <block type="on_source" id="JoZpjKCyF%VUV,gq~8*~">
                                                                                        <field name="ATTR">state.val</field>
                                                                                      </block>
                                                                                    </value>
                                                                                    <statement name="DO0">
                                                                                      <block type="control" id="#idta+mDk7An|9R9FSxE">
                                                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                                        <field name="OID">mqtt.0.go-eCharger.psm.set</field>
                                                                                        <field name="WITH_DELAY">TRUE</field>
                                                                                        <field name="DELAY_MS">5</field>
                                                                                        <field name="UNIT">sec</field>
                                                                                        <field name="CLEAR_RUNNING">TRUE</field>
                                                                                        <value name="VALUE">
                                                                                          <block type="math_number" id="[KoA|W-q-~_IK-~]bT~Y">
                                                                                            <field name="NUM">2</field>
                                                                                          </block>
                                                                                        </value>
                                                                                      </block>
                                                                                    </statement>
                                                                                    <statement name="ELSE">
                                                                                      <block type="control" id="^xyJKc0U/ntD/akG2fdi">
                                                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                                        <field name="OID">mqtt.0.go-eCharger.psm.set</field>
                                                                                        <field name="WITH_DELAY">TRUE</field>
                                                                                        <field name="DELAY_MS">5</field>
                                                                                        <field name="UNIT">sec</field>
                                                                                        <field name="CLEAR_RUNNING">TRUE</field>
                                                                                        <value name="VALUE">
                                                                                          <block type="math_number" id="1T`;KG`5.v+,cGi7U-gZ">
                                                                                            <field name="NUM">1</field>
                                                                                          </block>
                                                                                        </value>
                                                                                      </block>
                                                                                    </statement>
                                                                                  </block>
                                                                                </next>
                                                                              </block>
                                                                            </statement>
                                                                            <next>
                                                                              <block type="on" id="D=Z$+roFM-SNg72/,9b`">
                                                                                <field name="OID">mqtt.0.go-eCharger.modelStatus</field>
                                                                                <field name="CONDITION">ne</field>
                                                                                <field name="ACK_CONDITION"></field>
                                                                                <statement name="STATEMENT">
                                                                                  <block type="controls_if" id="~D;_*(4y7:7F95q|YE*v">
                                                                                    <value name="IF0">
                                                                                      <block type="logic_compare" id="ofUANLJu18F7)zOxwnKK">
                                                                                        <field name="OP">NEQ</field>
                                                                                        <value name="A">
                                                                                          <block type="on_source" id="1qySnM7=m`b@4K]I^A8F">
                                                                                            <field name="ATTR">state.val</field>
                                                                                          </block>
                                                                                        </value>
                                                                                        <value name="B">
                                                                                          <block type="math_number" id="X{om?Wpv,SD#?)Awr$72">
                                                                                            <field name="NUM">23</field>
                                                                                          </block>
                                                                                        </value>
                                                                                      </block>
                                                                                    </value>
                                                                                    <statement name="DO0">
                                                                                      <block type="control" id="9o3x0+NZi9FOv$%Jn],I">
                                                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                                        <field name="OID">pid.0.C-Wallbox_Ladeleistung.in.hold</field>
                                                                                        <field name="WITH_DELAY">TRUE</field>
                                                                                        <field name="DELAY_MS">5</field>
                                                                                        <field name="UNIT">sec</field>
                                                                                        <field name="CLEAR_RUNNING">TRUE</field>
                                                                                        <value name="VALUE">
                                                                                          <block type="logic_boolean" id="]rfM^IuodA02kP75,*w0">
                                                                                            <field name="BOOL">FALSE</field>
                                                                                          </block>
                                                                                        </value>
                                                                                      </block>
                                                                                    </statement>
                                                                                  </block>
                                                                                </statement>
                                                                                <next>
                                                                                  <block type="comment" id="4CFmsu+d62e8[O_1TJJ$">
                                                                                    <field name="COMMENT">Ladestrom in ganzen Ampere verzögert an Wallbox senden (Flatterschutz)</field>
                                                                                    <next>
                                                                                      <block type="on" id="}ee8Ww@51lY/sJH48da=">
                                                                                        <field name="OID">javascript.0.Wallbox.Ladestrom_temp</field>
                                                                                        <field name="CONDITION">ne</field>
                                                                                        <field name="ACK_CONDITION"></field>
                                                                                        <statement name="STATEMENT">
                                                                                          <block type="update" id="zshQaj)(D+w_TKTgRD:`">
                                                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                            <field name="OID">javascript.0.Wallbox.Ladestrom</field>
                                                                                            <field name="WITH_DELAY">FALSE</field>
                                                                                            <value name="VALUE">
                                                                                              <block type="math_constrain" id="wFmf`{^upWMB2OJdAb|G">
                                                                                                <value name="VALUE">
                                                                                                  <shadow type="math_number" id="OolIglBQ1NPR+!O4eGrf">
                                                                                                    <field name="NUM">50</field>
                                                                                                  </shadow>
                                                                                                  <block type="math_round" id="$m0s.BG/!^X?k^Afni8@">
                                                                                                    <field name="OP">ROUNDDOWN</field>
                                                                                                    <value name="NUM">
                                                                                                      <shadow type="math_number" id="`7oxcQI80-L-5|v6l{ZE">
                                                                                                        <field name="NUM">3.1</field>
                                                                                                      </shadow>
                                                                                                      <block type="on_source" id="%v#Z0Z$`8}+tD/BK.cC|">
                                                                                                        <field name="ATTR">state.val</field>
                                                                                                      </block>
                                                                                                    </value>
                                                                                                  </block>
                                                                                                </value>
                                                                                                <value name="LOW">
                                                                                                  <shadow type="math_number" id="*e`aXaysjQdx*v%uiLb9">
                                                                                                    <field name="NUM">6</field>
                                                                                                  </shadow>
                                                                                                </value>
                                                                                                <value name="HIGH">
                                                                                                  <shadow type="math_number" id="YaWi@k@syv0)}OtI#DEe">
                                                                                                    <field name="NUM">16</field>
                                                                                                  </shadow>
                                                                                                </value>
                                                                                              </block>
                                                                                            </value>
                                                                                          </block>
                                                                                        </statement>
                                                                                        <next>
                                                                                          <block type="on" id="5fjJvXZz9=9xHMmXqipC">
                                                                                            <field name="OID">javascript.0.Wallbox.Ladestrom</field>
                                                                                            <field name="CONDITION">ne</field>
                                                                                            <field name="ACK_CONDITION"></field>
                                                                                            <statement name="STATEMENT">
                                                                                              <block type="control" id="s$Nt!/B/Vr%PS,`~~{Dt">
                                                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                                                <field name="OID">mqtt.0.go-eCharger.amp.set</field>
                                                                                                <field name="WITH_DELAY">TRUE</field>
                                                                                                <field name="DELAY_MS">5</field>
                                                                                                <field name="UNIT">sec</field>
                                                                                                <field name="CLEAR_RUNNING">TRUE</field>
                                                                                                <value name="VALUE">
                                                                                                  <block type="on_source" id="G}rg6b4k{eWdw-W7?WZp">
                                                                                                    <field name="ATTR">state.val</field>
                                                                                                  </block>
                                                                                                </value>
                                                                                              </block>
                                                                                            </statement>
                                                                                          </block>
                                                                                        </next>
                                                                                      </block>
                                                                                    </next>
                                                                                  </block>
                                                                                </next>
                                                                              </block>
                                                                            </next>
                                                                          </block>
                                                                        </next>
                                                                      </block>
                                                                    </next>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </next>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </xml>
                        

                        Synology DS920+ VM, S7-315 PN mit ET200S

                        mcm1957M 1 Reply Last reply
                        1
                        • fu_zhouF fu_zhou

                          @lobomau mach doch mal ein Thread auf "PID-Adapter: Anwendungs-Ideen und -Möglichkeiten" oder so ähnlich.

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

                          Bisher habe ich immer die Ampere-Zahl geregelt. Wenn ich es richtig sehe nutzt du den unteren DP, der aus Watt die Ampere macht, richtig?

                          ich kenne den Datenpunkt so nicht, ich nutze MQTT und verwende da amp.set und versorge den state mit ganzen (Ampere-) Zahlen. Die Stromstärke berechne ich aus der vom Regler ermittelten Leistung in kW und runde auf ganze Zahlen ab. Den Code vom Blockly findest du unten - einfach in Blockly importieren und versuchen nachzuvollziehen 😉
                          Warum regle ich die Leistung und nicht die Stromstärke? Weil die Leistung von 1.4 bis 11 kW geht, bei ca. 4 kW aber der Sprung von 16 zurück auf 6 A kommt, während dann mit 3 und nicht mehr mit 1 Phase geladen wird. Wenn du mit max. 3.7 kW laden möchtest (=1-phasig) kannst du auch die Stromstärke von 6 - 16 A regeln.

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

                          Und wenn ich es richtig verstehe muss ich da irgendwie in der selben Einheit bleiben... also alles in kW?

                          Istwert und Sollwert müssen die gleiche Einheit haben, sonst lässt sich ja die Regelabweichung nicht vernünftig berechnen. Der Reglerausgang muss dann zum Stellglied passen, kann 0-100 (%) sein, kann 0-11 (kW) sein, 0-10 (V), 6-16 (A), -1400 - 1400 (U/min) sein usw. (wird ja durch min und max definiert).

                          <xml xmlns="https://developers.google.com/blockly/xml">
                            <block type="comment" id="6Fzyi%iFMuz;[gx6U^ur" x="-162" y="-462">
                              <field name="COMMENT">Objekte für Lademodi</field>
                              <next>
                                <block type="create" id="g=}k]T}C`/O@fN^KkL8,">
                                  <field name="NAME">Wallbox.Laden_mit_3_Phasen</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="Q#$fU7:LQ*wXH$Wmo?^;">
                                      <field name="BOOL">FALSE</field>
                                    </block>
                                  </value>
                                  <value name="COMMON">
                                    <block type="text" id="()hhu.BXzd@3B9LR{M5L">
                                      <field name="TEXT">{"type":"boolean"}</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="create" id="V2UMyXKwCwkVRQ7Q|H7p">
                                      <field name="NAME">Wallbox.Ladestrom</field>
                                      <value name="VALUE">
                                        <block type="math_number" id=")zxu/!0vjiL|6`/wTm?z">
                                          <field name="NUM">6</field>
                                        </block>
                                      </value>
                                      <value name="COMMON">
                                        <block type="text" id="IBU`2L$!ri*P0acDm[hq">
                                          <field name="TEXT">{"type":"number","unit":"A","min":6,"max":17}</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="create" id="3ZF*2X8UqK5D2Yrg.=Ja">
                                          <field name="NAME">Wallbox.Ladestrom_temp</field>
                                          <value name="VALUE">
                                            <block type="math_number" id="Os.Q{xlLrT9ukcU2.he:">
                                              <field name="NUM">6</field>
                                            </block>
                                          </value>
                                          <value name="COMMON">
                                            <block type="text" id="h|$`wDEX7VK:.vb#?+9~">
                                              <field name="TEXT">{"type":"number","unit":"A","min":6,"max":17}</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="comment" id="9(;?A=^Gm:J{1/0kx?D*">
                                              <field name="COMMENT">Ladefreigabe nur bei Anforderung &gt;1.4kW</field>
                                              <next>
                                                <block type="on" id="LI/DnJ,bhNV[GPDQd5x2" disabled="true">
                                                  <field name="OID">javascript.0.Wallbox.Ladeleistung</field>
                                                  <field name="CONDITION">ne</field>
                                                  <field name="ACK_CONDITION"></field>
                                                  <statement name="STATEMENT">
                                                    <block type="controls_if" id="]g-4ksVUc,L:R`,Sam{]">
                                                      <mutation else="1"></mutation>
                                                      <value name="IF0">
                                                        <block type="logic_compare" id="LR(_Lypo4Eh;q?jxiyWG">
                                                          <field name="OP">LT</field>
                                                          <value name="A">
                                                            <block type="on_source" id="5ICK=yd_RoC2xZ=2nuCd">
                                                              <field name="ATTR">state.val</field>
                                                            </block>
                                                          </value>
                                                          <value name="B">
                                                            <block type="math_number" id="z2XHw[s8?rAAc45}wfIg">
                                                              <field name="NUM">1.4</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                      <statement name="DO0">
                                                        <block type="comment" id="M%HTxJcO2Ix:=1Lvth^w">
                                                          <field name="COMMENT">Flatterschutz</field>
                                                          <next>
                                                            <block type="control" id="7)CJi@2G~T@ov|Nw^8Bk">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                              <field name="OID">mqtt.0.go-eCharger.frc.set</field>
                                                              <field name="WITH_DELAY">FALSE</field>
                                                              <value name="VALUE">
                                                                <block type="math_number" id="u3r[TM0$.O8x/1i[y_L#">
                                                                  <field name="NUM">1</field>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </next>
                                                        </block>
                                                      </statement>
                                                      <statement name="ELSE">
                                                        <block type="control" id="}uF^S[.4}bpeEf|E.^/~">
                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                          <field name="OID">mqtt.0.go-eCharger.frc.set</field>
                                                          <field name="WITH_DELAY">FALSE</field>
                                                          <value name="VALUE">
                                                            <block type="math_number" id="4n~49KOkX/ZZAR)1wrfD">
                                                              <field name="NUM">0</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </statement>
                                                    </block>
                                                  </statement>
                                                  <next>
                                                    <block type="comment" id="*(ykd$e~x?uw_M6bq9=5">
                                                      <field name="COMMENT">Freigabe Regler nur bei aktiver Ladung</field>
                                                      <next>
                                                        <block type="on" id="(J,T/^Dj!W64nts%+Q~f">
                                                          <field name="OID">javascript.0.PV.Netzleistung</field>
                                                          <field name="CONDITION">ne</field>
                                                          <field name="ACK_CONDITION"></field>
                                                          <statement name="STATEMENT">
                                                            <block type="control" id="L+s}}3JbkdP9ird(}dD?">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                              <field name="OID">pid.0.C-Wallbox_Ladeleistung.in.act</field>
                                                              <field name="WITH_DELAY">FALSE</field>
                                                              <value name="VALUE">
                                                                <block type="on_source" id="BW+GhDj$_HcO%0A5`Uig">
                                                                  <field name="ATTR">state.val</field>
                                                                </block>
                                                              </value>
                                                              <next>
                                                                <block type="comment" id="lT_D;o/aq/KP3g[/6[=X">
                                                                  <field name="COMMENT">"- 0.5" = Grundlast</field>
                                                                  <next>
                                                                    <block type="control" id="ui]E)FYnxhAtqjDiio_)">
                                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                      <field name="OID">pid.0.C-Wallbox_Ladeleistung.para.max</field>
                                                                      <field name="WITH_DELAY">FALSE</field>
                                                                      <value name="VALUE">
                                                                        <block type="math_constrain" id="~1f,$OZYDw3ka]UGHbrB">
                                                                          <value name="VALUE">
                                                                            <shadow type="math_number" id="^`IA.,ld+d0I)(kPy`9N">
                                                                              <field name="NUM">50</field>
                                                                            </shadow>
                                                                            <block type="math_arithmetic" id="rd@D|6a,_es.dd@R7Q.z">
                                                                              <field name="OP">MINUS</field>
                                                                              <value name="A">
                                                                                <shadow type="math_number" id="5Tfd4pORy!tC@3lXPp+*">
                                                                                  <field name="NUM">1</field>
                                                                                </shadow>
                                                                                <block type="math_arithmetic" id="P=JTpM]BWMnggQ^0$;2o">
                                                                                  <field name="OP">ADD</field>
                                                                                  <value name="A">
                                                                                    <shadow type="math_number" id="jV=45_4GcvdMfevaias|">
                                                                                      <field name="NUM">1</field>
                                                                                    </shadow>
                                                                                    <block type="get_value" id="asCeq)lqPS^](|ZJ=~er">
                                                                                      <field name="ATTR">val</field>
                                                                                      <field name="OID">pid.0.C-Wallbox_Ladeleistung.in.set</field>
                                                                                    </block>
                                                                                  </value>
                                                                                  <value name="B">
                                                                                    <shadow type="math_number" id="yQ?:r`qozcbv_*^/!;MJ">
                                                                                      <field name="NUM">0.5</field>
                                                                                    </shadow>
                                                                                    <block type="get_value" id="cpWV!jBFH`w(r?EjIGi%">
                                                                                      <field name="ATTR">val</field>
                                                                                      <field name="OID">lg-ess-home.0.user.essinfo.home.statistics.pcs_pv_total_power</field>
                                                                                    </block>
                                                                                  </value>
                                                                                </block>
                                                                              </value>
                                                                              <value name="B">
                                                                                <shadow type="math_number" id=")BI(2-KYpw={iuPJ2=!e">
                                                                                  <field name="NUM">0.5</field>
                                                                                </shadow>
                                                                              </value>
                                                                            </block>
                                                                          </value>
                                                                          <value name="LOW">
                                                                            <shadow type="math_number" id="Pz3azW*5Kd,gx3~tI8wM">
                                                                              <field name="NUM">1.4</field>
                                                                            </shadow>
                                                                          </value>
                                                                          <value name="HIGH">
                                                                            <shadow type="math_number" id="?*r`h-cHu$XdQx+lY.*=">
                                                                              <field name="NUM">11.4</field>
                                                                            </shadow>
                                                                          </value>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </next>
                                                                </block>
                                                              </next>
                                                            </block>
                                                          </statement>
                                                          <next>
                                                            <block type="comment" id="R$%zd0jUahW`PPIGw_lZ">
                                                              <field name="COMMENT">PID-Adapter hat y (Ladeleistung) verändert</field>
                                                              <next>
                                                                <block type="comment" id="*|YXiB6@e=%~gJ-enB-{">
                                                                  <field name="COMMENT">Berechnung von Strom und Anzahl Phasen</field>
                                                                  <next>
                                                                    <block type="on" id="Lv1XVslI[XE21]$gixhv">
                                                                      <field name="OID">pid.0.C-Wallbox_Ladeleistung.out.y</field>
                                                                      <field name="CONDITION">ne</field>
                                                                      <field name="ACK_CONDITION"></field>
                                                                      <statement name="STATEMENT">
                                                                        <block type="controls_if" id="-94`Y!nA+O~2fKFScjGq">
                                                                          <mutation elseif="1"></mutation>
                                                                          <value name="IF0">
                                                                            <block type="logic_compare" id="knkQ5MNMDQSuAO%~TzWI">
                                                                              <field name="OP">GTE</field>
                                                                              <value name="A">
                                                                                <block type="on_source" id="];-|1rg~FCQeqrFcFT0!">
                                                                                  <field name="ATTR">state.val</field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="B">
                                                                                <block type="math_number" id="Ds%kkB$E0UIh6#9snq+c">
                                                                                  <field name="NUM">4.3</field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </value>
                                                                          <statement name="DO0">
                                                                            <block type="update" id="/0}^g)!y4{][e:rG8)V5">
                                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                              <field name="OID">javascript.0.Wallbox.Laden_mit_3_Phasen</field>
                                                                              <field name="WITH_DELAY">FALSE</field>
                                                                              <value name="VALUE">
                                                                                <block type="logic_boolean" id=".}pj*s316R_g{2~urmom">
                                                                                  <field name="BOOL">TRUE</field>
                                                                                </block>
                                                                              </value>
                                                                              <next>
                                                                                <block type="update" id="2P=}qq.`fQQ04OAb_Q7(">
                                                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                  <field name="OID">javascript.0.Wallbox.Ladestrom_temp</field>
                                                                                  <field name="WITH_DELAY">FALSE</field>
                                                                                  <value name="VALUE">
                                                                                    <block type="math_arithmetic" id="]Fs)6Y24R=Id7@(Wc%Uv">
                                                                                      <field name="OP">DIVIDE</field>
                                                                                      <value name="A">
                                                                                        <shadow type="math_number" id="}6c;IG09uA}ji#f*}/u0">
                                                                                          <field name="NUM">1</field>
                                                                                        </shadow>
                                                                                        <block type="math_arithmetic" id="./*ky,qeu2Jly-#o:.NA">
                                                                                          <field name="OP">MULTIPLY</field>
                                                                                          <value name="A">
                                                                                            <shadow type="math_number" id="P}tikR,7o8zbZTw,kyiW">
                                                                                              <field name="NUM">400</field>
                                                                                            </shadow>
                                                                                            <block type="on_source" id="I^XZ^2Ny^jPI`*2O;c_X">
                                                                                              <field name="ATTR">state.val</field>
                                                                                            </block>
                                                                                          </value>
                                                                                          <value name="B">
                                                                                            <shadow type="math_number" id="HFR$IT_BfO1Fr=+W9n0y">
                                                                                              <field name="NUM">1000</field>
                                                                                            </shadow>
                                                                                          </value>
                                                                                        </block>
                                                                                      </value>
                                                                                      <value name="B">
                                                                                        <shadow type="math_number" id="=D~E~Voyz4-[!}*TtHg%">
                                                                                          <field name="NUM">1</field>
                                                                                        </shadow>
                                                                                        <block type="math_arithmetic" id="J5E4vPyUoz28Mv!Yxe=%">
                                                                                          <field name="OP">MULTIPLY</field>
                                                                                          <value name="A">
                                                                                            <shadow type="math_number" id="{kwtU*UGl5T1w_*XAMm}">
                                                                                              <field name="NUM">400</field>
                                                                                            </shadow>
                                                                                          </value>
                                                                                          <value name="B">
                                                                                            <shadow type="math_number" id="k=H55W)(6ME~]s52b6^y">
                                                                                              <field name="NUM">1</field>
                                                                                            </shadow>
                                                                                            <block type="math_single" id="/|J#~[u|cI)$^~3|vQA3">
                                                                                              <field name="OP">ROOT</field>
                                                                                              <value name="NUM">
                                                                                                <shadow type="math_number" id="]LN=L2`Z+4=uzwd}DKK*">
                                                                                                  <field name="NUM">3</field>
                                                                                                </shadow>
                                                                                              </value>
                                                                                            </block>
                                                                                          </value>
                                                                                        </block>
                                                                                      </value>
                                                                                    </block>
                                                                                  </value>
                                                                                </block>
                                                                              </next>
                                                                            </block>
                                                                          </statement>
                                                                          <value name="IF1">
                                                                            <block type="logic_compare" id="lhSTc~J%TR]tQnvBRk3J">
                                                                              <field name="OP">LTE</field>
                                                                              <value name="A">
                                                                                <block type="on_source" id="NuPp_$3eTiKW[F8EcSZr">
                                                                                  <field name="ATTR">state.val</field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="B">
                                                                                <block type="math_number" id="WZeW!mvt_8|Ji)a]O,R?">
                                                                                  <field name="NUM">4.1</field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </value>
                                                                          <statement name="DO1">
                                                                            <block type="update" id=".8`KTV|:H]f67+4KkwFY">
                                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                              <field name="OID">javascript.0.Wallbox.Laden_mit_3_Phasen</field>
                                                                              <field name="WITH_DELAY">FALSE</field>
                                                                              <value name="VALUE">
                                                                                <block type="logic_boolean" id="7tpYqM!BDOjQrWoD@)m~">
                                                                                  <field name="BOOL">FALSE</field>
                                                                                </block>
                                                                              </value>
                                                                              <next>
                                                                                <block type="update" id="v-z)wQ!i}E3KPIoqnf;Q">
                                                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                  <field name="OID">javascript.0.Wallbox.Ladestrom_temp</field>
                                                                                  <field name="WITH_DELAY">FALSE</field>
                                                                                  <value name="VALUE">
                                                                                    <block type="math_arithmetic" id="#P7..Vx8z^mk`w0/op7$">
                                                                                      <field name="OP">DIVIDE</field>
                                                                                      <value name="A">
                                                                                        <shadow type="math_number" id="fEQ,#vO5*8c)z%KwM{a3">
                                                                                          <field name="NUM">1</field>
                                                                                        </shadow>
                                                                                        <block type="math_arithmetic" id="q=M1`]}3*XB,Y77`ZNw(">
                                                                                          <field name="OP">MULTIPLY</field>
                                                                                          <value name="A">
                                                                                            <shadow type="math_number" id="PCER@)4yE#7cF/]heqO]">
                                                                                              <field name="NUM">400</field>
                                                                                            </shadow>
                                                                                            <block type="on_source" id="H%kxy#Tea`Lbcuk^*jm%">
                                                                                              <field name="ATTR">state.val</field>
                                                                                            </block>
                                                                                          </value>
                                                                                          <value name="B">
                                                                                            <shadow type="math_number" id="_I;!W[$Rn+m/O+m(GZn`">
                                                                                              <field name="NUM">1000</field>
                                                                                            </shadow>
                                                                                          </value>
                                                                                        </block>
                                                                                      </value>
                                                                                      <value name="B">
                                                                                        <shadow type="math_number" id="b(U)LH@-Y#=Lxzy*G#5V">
                                                                                          <field name="NUM">230</field>
                                                                                        </shadow>
                                                                                      </value>
                                                                                    </block>
                                                                                  </value>
                                                                                </block>
                                                                              </next>
                                                                            </block>
                                                                          </statement>
                                                                        </block>
                                                                      </statement>
                                                                      <next>
                                                                        <block type="comment" id="#xW+.d|2.Vtia9K#2I9A">
                                                                          <field name="COMMENT">Phasenumschaltung an Wallbox senden, Regler pausieren</field>
                                                                          <next>
                                                                            <block type="on" id="/q{y(D=]qK]yr0KwDQ*Q">
                                                                              <field name="OID">javascript.0.Wallbox.Laden_mit_3_Phasen</field>
                                                                              <field name="CONDITION">ne</field>
                                                                              <field name="ACK_CONDITION"></field>
                                                                              <statement name="STATEMENT">
                                                                                <block type="control" id="j}5$_.R^ys2qr?]3?DFP">
                                                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                  <field name="OID">pid.0.C-Wallbox_Ladeleistung.in.hold</field>
                                                                                  <field name="WITH_DELAY">FALSE</field>
                                                                                  <value name="VALUE">
                                                                                    <block type="logic_boolean" id="]1sVAD$]{P-;J2/=)GLt">
                                                                                      <field name="BOOL">TRUE</field>
                                                                                    </block>
                                                                                  </value>
                                                                                  <next>
                                                                                    <block type="controls_if" id="sCKj4U,.=qqK^sT[j9-R">
                                                                                      <mutation else="1"></mutation>
                                                                                      <value name="IF0">
                                                                                        <block type="on_source" id="JoZpjKCyF%VUV,gq~8*~">
                                                                                          <field name="ATTR">state.val</field>
                                                                                        </block>
                                                                                      </value>
                                                                                      <statement name="DO0">
                                                                                        <block type="control" id="#idta+mDk7An|9R9FSxE">
                                                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                                          <field name="OID">mqtt.0.go-eCharger.psm.set</field>
                                                                                          <field name="WITH_DELAY">TRUE</field>
                                                                                          <field name="DELAY_MS">5</field>
                                                                                          <field name="UNIT">sec</field>
                                                                                          <field name="CLEAR_RUNNING">TRUE</field>
                                                                                          <value name="VALUE">
                                                                                            <block type="math_number" id="[KoA|W-q-~_IK-~]bT~Y">
                                                                                              <field name="NUM">2</field>
                                                                                            </block>
                                                                                          </value>
                                                                                        </block>
                                                                                      </statement>
                                                                                      <statement name="ELSE">
                                                                                        <block type="control" id="^xyJKc0U/ntD/akG2fdi">
                                                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                                          <field name="OID">mqtt.0.go-eCharger.psm.set</field>
                                                                                          <field name="WITH_DELAY">TRUE</field>
                                                                                          <field name="DELAY_MS">5</field>
                                                                                          <field name="UNIT">sec</field>
                                                                                          <field name="CLEAR_RUNNING">TRUE</field>
                                                                                          <value name="VALUE">
                                                                                            <block type="math_number" id="1T`;KG`5.v+,cGi7U-gZ">
                                                                                              <field name="NUM">1</field>
                                                                                            </block>
                                                                                          </value>
                                                                                        </block>
                                                                                      </statement>
                                                                                    </block>
                                                                                  </next>
                                                                                </block>
                                                                              </statement>
                                                                              <next>
                                                                                <block type="on" id="D=Z$+roFM-SNg72/,9b`">
                                                                                  <field name="OID">mqtt.0.go-eCharger.modelStatus</field>
                                                                                  <field name="CONDITION">ne</field>
                                                                                  <field name="ACK_CONDITION"></field>
                                                                                  <statement name="STATEMENT">
                                                                                    <block type="controls_if" id="~D;_*(4y7:7F95q|YE*v">
                                                                                      <value name="IF0">
                                                                                        <block type="logic_compare" id="ofUANLJu18F7)zOxwnKK">
                                                                                          <field name="OP">NEQ</field>
                                                                                          <value name="A">
                                                                                            <block type="on_source" id="1qySnM7=m`b@4K]I^A8F">
                                                                                              <field name="ATTR">state.val</field>
                                                                                            </block>
                                                                                          </value>
                                                                                          <value name="B">
                                                                                            <block type="math_number" id="X{om?Wpv,SD#?)Awr$72">
                                                                                              <field name="NUM">23</field>
                                                                                            </block>
                                                                                          </value>
                                                                                        </block>
                                                                                      </value>
                                                                                      <statement name="DO0">
                                                                                        <block type="control" id="9o3x0+NZi9FOv$%Jn],I">
                                                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                                          <field name="OID">pid.0.C-Wallbox_Ladeleistung.in.hold</field>
                                                                                          <field name="WITH_DELAY">TRUE</field>
                                                                                          <field name="DELAY_MS">5</field>
                                                                                          <field name="UNIT">sec</field>
                                                                                          <field name="CLEAR_RUNNING">TRUE</field>
                                                                                          <value name="VALUE">
                                                                                            <block type="logic_boolean" id="]rfM^IuodA02kP75,*w0">
                                                                                              <field name="BOOL">FALSE</field>
                                                                                            </block>
                                                                                          </value>
                                                                                        </block>
                                                                                      </statement>
                                                                                    </block>
                                                                                  </statement>
                                                                                  <next>
                                                                                    <block type="comment" id="4CFmsu+d62e8[O_1TJJ$">
                                                                                      <field name="COMMENT">Ladestrom in ganzen Ampere verzögert an Wallbox senden (Flatterschutz)</field>
                                                                                      <next>
                                                                                        <block type="on" id="}ee8Ww@51lY/sJH48da=">
                                                                                          <field name="OID">javascript.0.Wallbox.Ladestrom_temp</field>
                                                                                          <field name="CONDITION">ne</field>
                                                                                          <field name="ACK_CONDITION"></field>
                                                                                          <statement name="STATEMENT">
                                                                                            <block type="update" id="zshQaj)(D+w_TKTgRD:`">
                                                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                                              <field name="OID">javascript.0.Wallbox.Ladestrom</field>
                                                                                              <field name="WITH_DELAY">FALSE</field>
                                                                                              <value name="VALUE">
                                                                                                <block type="math_constrain" id="wFmf`{^upWMB2OJdAb|G">
                                                                                                  <value name="VALUE">
                                                                                                    <shadow type="math_number" id="OolIglBQ1NPR+!O4eGrf">
                                                                                                      <field name="NUM">50</field>
                                                                                                    </shadow>
                                                                                                    <block type="math_round" id="$m0s.BG/!^X?k^Afni8@">
                                                                                                      <field name="OP">ROUNDDOWN</field>
                                                                                                      <value name="NUM">
                                                                                                        <shadow type="math_number" id="`7oxcQI80-L-5|v6l{ZE">
                                                                                                          <field name="NUM">3.1</field>
                                                                                                        </shadow>
                                                                                                        <block type="on_source" id="%v#Z0Z$`8}+tD/BK.cC|">
                                                                                                          <field name="ATTR">state.val</field>
                                                                                                        </block>
                                                                                                      </value>
                                                                                                    </block>
                                                                                                  </value>
                                                                                                  <value name="LOW">
                                                                                                    <shadow type="math_number" id="*e`aXaysjQdx*v%uiLb9">
                                                                                                      <field name="NUM">6</field>
                                                                                                    </shadow>
                                                                                                  </value>
                                                                                                  <value name="HIGH">
                                                                                                    <shadow type="math_number" id="YaWi@k@syv0)}OtI#DEe">
                                                                                                      <field name="NUM">16</field>
                                                                                                    </shadow>
                                                                                                  </value>
                                                                                                </block>
                                                                                              </value>
                                                                                            </block>
                                                                                          </statement>
                                                                                          <next>
                                                                                            <block type="on" id="5fjJvXZz9=9xHMmXqipC">
                                                                                              <field name="OID">javascript.0.Wallbox.Ladestrom</field>
                                                                                              <field name="CONDITION">ne</field>
                                                                                              <field name="ACK_CONDITION"></field>
                                                                                              <statement name="STATEMENT">
                                                                                                <block type="control" id="s$Nt!/B/Vr%PS,`~~{Dt">
                                                                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                                                  <field name="OID">mqtt.0.go-eCharger.amp.set</field>
                                                                                                  <field name="WITH_DELAY">TRUE</field>
                                                                                                  <field name="DELAY_MS">5</field>
                                                                                                  <field name="UNIT">sec</field>
                                                                                                  <field name="CLEAR_RUNNING">TRUE</field>
                                                                                                  <value name="VALUE">
                                                                                                    <block type="on_source" id="G}rg6b4k{eWdw-W7?WZp">
                                                                                                      <field name="ATTR">state.val</field>
                                                                                                    </block>
                                                                                                  </value>
                                                                                                </block>
                                                                                              </statement>
                                                                                            </block>
                                                                                          </next>
                                                                                        </block>
                                                                                      </next>
                                                                                    </block>
                                                                                  </next>
                                                                                </block>
                                                                              </next>
                                                                            </block>
                                                                          </next>
                                                                        </block>
                                                                      </next>
                                                                    </block>
                                                                  </next>
                                                                </block>
                                                              </next>
                                                            </block>
                                                          </next>
                                                        </block>
                                                      </next>
                                                    </block>
                                                  </next>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </xml>
                          
                          mcm1957M Online
                          mcm1957M Online
                          mcm1957
                          wrote on last edited by
                          #220

                          @fu_zhou

                          Ich hab da mal ein Topic geöffnet.

                          Bitte sobald passedn dorthin wechseln wenn es um Anwendung / Regelegungstechnikfragen geht.

                          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 Reply Last reply
                          0
                          • fu_zhouF Offline
                            fu_zhouF Offline
                            fu_zhou
                            wrote on last edited by fu_zhou
                            #221

                            ich beobachte gerade die Überschussladung und stelle fest, dass mit der Zykluszeit noch etwas nicht ganz stimmt. Ich habe 500 ms parametriert, das ist auch der Wert, auf den immer wieder gesprungen wird, aber zwischendrin kommen sporadisch "Einbrüche" z.B. auf 41, 280, 340 ms, ich glaube, immer folgend auf die (dynamische) Veränderung von max. @mcm57 kannst du da noch mal reinschauen?

                            Ergänzung: Es sieht so aus, als wenn das immer passiert, wenn man einen "para" ändert - auch bei Tn, Kp etc.

                            Synology DS920+ VM, S7-315 PN mit ET200S

                            mcm1957M 1 Reply Last reply
                            0
                            • fu_zhouF fu_zhou

                              ich beobachte gerade die Überschussladung und stelle fest, dass mit der Zykluszeit noch etwas nicht ganz stimmt. Ich habe 500 ms parametriert, das ist auch der Wert, auf den immer wieder gesprungen wird, aber zwischendrin kommen sporadisch "Einbrüche" z.B. auf 41, 280, 340 ms, ich glaube, immer folgend auf die (dynamische) Veränderung von max. @mcm57 kannst du da noch mal reinschauen?

                              Ergänzung: Es sieht so aus, als wenn das immer passiert, wenn man einen "para" ändert - auch bei Tn, Kp etc.

                              mcm1957M Online
                              mcm1957M Online
                              mcm1957
                              wrote on last edited by
                              #222

                              @fu_zhou
                              Das sollte so nicht sein ist aber denkbar. Ich schaus mir an. Bin nur nicht sicher ob ich heut noch an pc komme. Bin unterwegs.

                              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 Reply Last reply
                              0
                              • mcm1957M mcm1957

                                @fu_zhou
                                Das sollte so nicht sein ist aber denkbar. Ich schaus mir an. Bin nur nicht sicher ob ich heut noch an pc komme. Bin unterwegs.

                                fu_zhouF Offline
                                fu_zhouF Offline
                                fu_zhou
                                wrote on last edited by
                                #223

                                @mcm57 Ich habe noch einen weiteren Regler hinzugefügt, damit ist die Instanz neu gestartet worden, jetzt scheint last_delta stabil bei 500 ms +- 1ms zu bleiben.

                                Synology DS920+ VM, S7-315 PN mit ET200S

                                fu_zhouF 1 Reply Last reply
                                0
                                • fu_zhouF fu_zhou

                                  @mcm57 Ich habe noch einen weiteren Regler hinzugefügt, damit ist die Instanz neu gestartet worden, jetzt scheint last_delta stabil bei 500 ms +- 1ms zu bleiben.

                                  fu_zhouF Offline
                                  fu_zhouF Offline
                                  fu_zhou
                                  wrote on last edited by
                                  #224

                                  @mcm57 beim zweiten Regler aus der Adapter-Instanz ist die Zykluszeit stabil, beim ersten kommt als Reaktion auf eine para Veränderung kurzzeitig der Sprung im last_delta.

                                  Synology DS920+ VM, S7-315 PN mit ET200S

                                  mcm1957M 1 Reply Last reply
                                  0
                                  • mcm1957M Online
                                    mcm1957M Online
                                    mcm1957
                                    wrote on last edited by
                                    #225

                                    @fu_zhou
                                    Danke
                                    Fehler schon gefunden. An sich müßte der Fehler bei allen Reglern auftreten.

                                    Ursache ist eine Sonderbehandling von Cycle Time == 0. In diesem Fall wird eine Neuberechnugn getriggert, wenn neue Daten (act, Parameter, ...) eingeleifert werden. Das stammt noch aus der 0.0.0 Version. Ich bin aber zwischenzeitlich überzeutgt, dass das niemand braucht. Bevor ich nun in 3 Itaérationen (:-)) den Bug versuche zu beheben werde ich diese Sonderbahndlung ganz entfernen. Macht das Verhalten klarer nachvollziehbar. Wenn mal wirklich ein Bedarf auftritt nicht zyklisch sondern immer beim SChreiben der Daten neu zu berechnen kann man das ja wieder einfügen. Allerdings glaub ich wär da dann ein eigener State "jetzt berechnen" sinnvoller als diese krude Autiomatik.

                                    Neue Release sollte morgen kommen.

                                    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 Reply Last reply
                                    0
                                    • mcm1957M mcm1957

                                      @fu_zhou
                                      Danke
                                      Fehler schon gefunden. An sich müßte der Fehler bei allen Reglern auftreten.

                                      Ursache ist eine Sonderbehandling von Cycle Time == 0. In diesem Fall wird eine Neuberechnugn getriggert, wenn neue Daten (act, Parameter, ...) eingeleifert werden. Das stammt noch aus der 0.0.0 Version. Ich bin aber zwischenzeitlich überzeutgt, dass das niemand braucht. Bevor ich nun in 3 Itaérationen (:-)) den Bug versuche zu beheben werde ich diese Sonderbahndlung ganz entfernen. Macht das Verhalten klarer nachvollziehbar. Wenn mal wirklich ein Bedarf auftritt nicht zyklisch sondern immer beim SChreiben der Daten neu zu berechnen kann man das ja wieder einfügen. Allerdings glaub ich wär da dann ein eigener State "jetzt berechnen" sinnvoller als diese krude Autiomatik.

                                      Neue Release sollte morgen kommen.

                                      fu_zhouF Offline
                                      fu_zhouF Offline
                                      fu_zhou
                                      wrote on last edited by
                                      #226

                                      @mcm57 Da kann ich voll mitgehen - wie kann's auch anders sein 😉! Ist da nicht eh ein Denkfehler drin? Den I-Anteil will ich doch zyklisch berechnen, um die Regelabweichung abzubauen. Wenn eine Berechnung nur stattfindet, wenn sich Soll oder Ist ändert, bekomme ich doch eigentlich einen reinen P-Regler, auch wenn eine Nachstellzeit paramteriert ist, oder?

                                      Synology DS920+ VM, S7-315 PN mit ET200S

                                      paul53P mcm1957M 2 Replies Last reply
                                      0
                                      • fu_zhouF fu_zhou

                                        @mcm57 Da kann ich voll mitgehen - wie kann's auch anders sein 😉! Ist da nicht eh ein Denkfehler drin? Den I-Anteil will ich doch zyklisch berechnen, um die Regelabweichung abzubauen. Wenn eine Berechnung nur stattfindet, wenn sich Soll oder Ist ändert, bekomme ich doch eigentlich einen reinen P-Regler, auch wenn eine Nachstellzeit paramteriert ist, oder?

                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        wrote on last edited by
                                        #227

                                        @fu_zhou sagte: Wenn eine Berechnung nur stattfindet, wenn sich Soll oder Ist ändert, bekomme ich doch eigentlich einen reinen P-Regler, auch wenn eine Nachstellzeit paramteriert ist, oder?

                                        Nein, es kann aber lange dauern, bis sich die Regelabweichung ändert. Bis dahin ändert sich das Stellsignal nicht und macht dann plötzlich einen starken Sprung durch die Berechnung des I-Anteils. Deshalb sollte bei aktiviertem I-Anteil (Tn) auch immer eine nicht zu lange Zykluszeit aktiviert sein.

                                        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 Reply Last reply
                                        0
                                        • fu_zhouF fu_zhou

                                          @mcm57 Da kann ich voll mitgehen - wie kann's auch anders sein 😉! Ist da nicht eh ein Denkfehler drin? Den I-Anteil will ich doch zyklisch berechnen, um die Regelabweichung abzubauen. Wenn eine Berechnung nur stattfindet, wenn sich Soll oder Ist ändert, bekomme ich doch eigentlich einen reinen P-Regler, auch wenn eine Nachstellzeit paramteriert ist, oder?

                                          mcm1957M Online
                                          mcm1957M Online
                                          mcm1957
                                          wrote on last edited by
                                          #228

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

                                          @mcm57 Da kann ich voll mitgehen - wie kann's auch anders sein 😉! Ist da nicht eh ein Denkfehler drin? Den I-Anteil will ich doch zyklisch berechnen, um die Regelabweichung abzubauen. Wenn eine Berechnung nur stattfindet, wenn sich Soll oder Ist ändert, bekomme ich doch eigentlich einen reinen P-Regler, auch wenn eine Nachstellzeit paramteriert ist, oder?

                                          Nein, dass stimmt so nicht.
                                          Der I Fehleranteil würde dann nur über ein längere Zeit summiert und dementsprechende ausfallen.

                                          Aber wie schon geschrieben - ich seh den Bedarf nicht und mit fliegt diese Sonderbehandlung die nun schon zum driten (?) Mal nicht wie geplant funtkioniert weill immer wieder ein anderer Sonderfall nichgt codiert ist.

                                          Mit 0.0.7 wird ein neuer Wert (hoffentlich) nur mehr berechnet wenn eine Zyklusperiode abgelaufen ist (und der Regler nicht gestoppt ist). Extrawürste gibts nicht mehr.

                                          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

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          575

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe