Navigation

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

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

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

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

      @paul53

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

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

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

      Scriptauswertung:

      script.PNG

      Adapterauswertung:

      Adapter.PNG

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

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

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

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

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

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

          @quorle sagte: Adapterauswertung:

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

          PID_Nulleinspeisung.JPG

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

          PID_Nulleinspeisung_History.JPG

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

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

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

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

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

            Danke vorab!

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

              @fu_zhou
              Schaus mir an

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

                @mcm57 hattest du schon die Chance, mal reinzuschauen?

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

                  @fu_zhou
                  Danke für den Schubs / Erinnerung.

                  Leider bin ich noch nicht dazu gekommen das umzusetzen. Habs auf meienr Liste. Technisch sehe ich keinen Grund warum dies nicht gehen sollte. Ev komm ich diese Woche dazu - aber versprechen möcht ich nix.

                  Ja, könnte rascherer Support sein. Kann nur sorry sagen.

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

                    @mcm57 Kein Grund für eine Entschuldigung, im Moment behelfe ich mir mit 2 Reglern, die ich Außentemperatur-abhängig abwechselnd freigebe (über hold). Ich bin nach wie vor begeistert, wie gut der Regler mit den Funktionen funktioniert!

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

                      @fu_zhou

                      Ab Morgen steht im LATEST die neueste Version 1.0.0 des Adapters zur Verfügung.

                      Neu ist die Möglichkeit den Parameter INVERT via State zu ändern.
                      Weiters wurden die bekannten Fehler behoben.

                      Releasenotes im ersten Beitrag und im Repository.

                      ACHTUNG:
                      Der Adapter erfordert nun minimal

                      • Node.js 18
                      • js-controller 5
                      • admin 6

                      Die Anforderungen wurden hochgezogen, da node 16 mittlerweile nicht mehr mit Updates versorgt wird und von mir auch nicht mehr getestet wird. Auch js-controlelr 4 und admin 5 werden von mir nicht mehr gtestet - zusätzlich arbeite ich (sobald ich dazu komme) an einer (kompatiblen) umgestaltung der Config UI Seite da derzeit wie Paramater zu oft unlesbar abgeschnitten werden. Das neue Format benötigt jedenfalls dann Admin 6. Ich gehe davon aus, dass die Anforderungen insbesondere frü Tester kein Hindernis darstellen.

                      Fehler bitte wie immer hier bzw. als issues melden.

                      Hinweis: Aus persönichen Gründe bin ich voraussichtlich ab nächster Woche 2 bis 3 Wochen nur eingschränkt / nicht verfügbar. Aber wie sagte schon Paulchen Panter: "ich komm wieder - keine Frage" 🙂

                      fu_zhou 1 Reply Last reply Reply Quote 0
                      • Zarello
                        Zarello last edited by

                        Hi,
                        ich verwende seit einiger Zeit den pid.adapter zur Steuerung eines Heizkörper-Thermostats.
                        Was mir dabei aufgefallen ist:
                        Der D-Anteil des Reglers ist für mich leider nicht sinnvoll zu verwenden.
                        Der D-Anteil wird nur über das letzte Intervall gebildet.
                        Ich möchte das Intervall nicht zu groß wählen, damit der Regler einigermaßen schnell reagiert, wenn es eine Änderung der Soll-Größe gibt. Ich habe 10s gewählt.
                        Die Ist-Temperatur, erhalte ich vom verwendeten Thermometer nur mit einer Nachkommastelle.
                        Die Temperatur-Änderungen sind relativ langsam.
                        Das hat zur Folge, dass eine Änderung in der Ist-Temperatur über den D-Anteil des Reglers nur einen Peak von 10s Länge erzeugt, von dem ich dann wählen kann, wie stark er sein soll.

                        Schön wäre, wenn man für den D-Anteil eine Anzahl von Intervallen angeben kann, über die er berechnet wird. Dann könnte ich die Zeitkonstante für diesen Anteil auf einige Minuten erhöhen.

                        G paul53 2 Replies Last reply Reply Quote 0
                        • G
                          Gonzokalle @Zarello last edited by

                          Die Installation soll ja über Github erfolgen.
                          Kann den Adapter da aber nicht finden.
                          Hat sich da etwas geändert?
                          a976e813-6178-43fd-9cfa-e189e2cf42e4-image.png

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

                            @zarello sagte: Der D-Anteil wird nur über das letzte Intervall gebildet.

                            Das ist normal. Andere Versionen sind mir bisher nicht begegnet. Deshalb verwendet man zur Temperaturregelung PI-Regler.

                            @zarello sagte in Test Adapter pid (pid-Regler) V1.0.x:

                            Ich habe 10s gewählt.

                            Das ist für eine Temperaturregelung viel zu kurz.

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

                              @gonzokalle

                              Der Adapter ist zwischenzeitlich normal über das LATEST Repository installierbar. Eine Installation von Github ist nicht notwendig.

                              Danke f.d. Nachfrage - habe die entsprechende Zeile im ersten Beitrag gelöscht da veraltet.

                              1 Reply Last reply Reply Quote 0
                              • G
                                Gonzokalle last edited by

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

                                LATEST Repository

                                Danke für deine Info
                                Über Repository beta wird Version 0.0.8 angeboten.
                                Die kann ich nehmen, obwohl nicht mehr die Jüngste?

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

                                  @gonzokalle
                                  Klick nach dem Umschalten mal auf den Refresh button. ("Nach Updates suchen" oben in der Kopfzeile des Adaptertabs)

                                  00f9a6bc-543b-4b2d-b872-fc03930f9b04-image.png

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

                                    @mcm57
                                    Hat funktionier. Danke

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

                                      @paul53 sagte in Test Adapter pid (pid-Regler) V1.0.x:

                                      @zarello sagte: Der D-Anteil wird nur über das letzte Intervall gebildet.

                                      Das ist normal. Andere Versionen sind mir bisher nicht begegnet. Deshalb verwendet man zur Temperaturregelung PI-Regler.

                                      @zarello sagte in Test Adapter pid (pid-Regler) V1.0.x:

                                      Ich habe 10s gewählt.

                                      Das ist für eine Temperaturregelung viel zu kurz.

                                      Auf 'ne Minute würde ich mich noch hoch handeln lassen, ab dann wird es mir für die Reaktionsgeschwindigkeit zu kurz, wenn die Soll-Temperatur umgestellt wird.
                                      Für den I-Teil ist das auch kein Problem, da man dort ja die Zeit frei einstellen kann, innerhalb der dieser wirken soll.
                                      Nur für den D-Teil müsste ich da gefühlt eher auf ein bis zwei Stunden gehen, das wäre mir als Reaktionsgeschwindigkeit viel zu lang.
                                      Es wäre kein Problem, wenn die Temperatur auf das Mikrograd genau gemessen werden würde - wobei dann vermutlich das Rauschen und leichte Störungen (man geht durch den Raum) das komplett unbrauchbar machen würden.

                                      Mir ist klar, was die Theorie sagt. Mir ist auch klar, dass, wenn es komplett nach der Theorie implementiert ist, der D-Anteil für diese Art der Regelung komplett unbrauchbar ist und, dass ich ihn dann einfach auf 0 lasse. Auch kein wirkliches Problem für mich. Vor allem, da ich ja noch nicht einmal beurteilen kann, ob der D-Anteil in diesem Fall irgend etwas besser macht.

                                      Aber es gäbe halt eine relativ einfache Lösung für dieses Problem, indem man die Differenz nicht aus den Messungen [i] und [i-1] bildet sondern aus [i] und [i-n] wobei n frei gewählt werden kann und per Default natürlich 1 ist.

                                      Da kann man argumentieren, dass das gegen die reine Lehre verstößt, man könnte es aber auch einfach mal ausprobieren, vielleicht hilft das ja auch in anderen Fällen, in denen man schnellere Reaktion auf eine Sollwertänderung haben möchte, aber ein entsprechend kurzes Zeitintervall nicht zu dem D-Anteil passt 😉

                                      Nebenbei: Eigentlich wäre der D-Anteil die Ableitung der theoretischen, stetigen Funktion, die das Signal bildet. Da wir die nicht haben und wir dementsprechend nicht die Tangente bilden können, nehmen wir die Sekante. Und da wir nicht in die Zukunft blicken können nehmen wir auch nicht die Sekante aus [i+1] und [i-1], was eigentlich die mathematisch "korrekte" Variante wäre sondern behelfen uns mit [i] und [i-1]. Kombiniert mit Rauschen und Rundung wird das halt leider unbrauchbar.
                                      Nach zweifachem Pragmatismus ist ein weiterer doch eigentlich nicht schlimm.

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

                                        @zarello
                                        Erstell gern einen Feature Issue. Ich würde jedoch mal abwarten ob bzw. wie groß der Bedarf für diese Erweiterung ist und ob noch andere dafür Bedarf sehen. Derzeit habe ich nicht wirklich viel Zeit übrig sodass ich keine kurzfristig Analyse / Umsetzung zusagen kann.

                                        @zarello said in Test Adapter pid (pid-Regler) V1.0.x:

                                        Aber es gäbe halt eine relativ einfache Lösung für dieses Problem, indem man die Differenz nicht aus den Messungen [i] und [i-1] bildet sondern aus [i] und [i-n] wobei n frei gewählt werden kann und per Default natürlich 1 ist.

                                        Na ja - den Aufwand historische Daten (i-1, i-2) zu speichern unterschlägst du. Derzeit speichert der Adapter keine History, das müsste erst alles implementiert werden ... Ich bezweifle auch - wie schon @paul53 geschrieben hat - dass ein D Anteil bei einer Heizungsregelung, die naturgemäß träge ist, einen Sinn macht. Der P Anteil sollte hier eigentlich bei einem Sprung des Sollwerts unmittelbar das Ventil öffnen und durch den I wieder in eine stabile Lage regeln.

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

                                          @mcm57 Hallo mal wieder, das Wetter schlägt jetzt langsam um, so dass ich den "inv" aus einem Skript mit "1" und "0" beschreibe: Wenn die Außenfeuchte > Raumfeuchte (zzgl. Hysterese) wirkt die Energierückgewinnung der Lüftung entfeuchtend, sonst befeuchtend. Das funktioniert auch ganz gut, nur springt der Regler ("y") beim Wechsel von "inv" (0 -> 1 oder 1 -> 0) immer zunächst auf "min" und startet quasi neu. Ich würde gerne den alten Reglerausgang "y" beim umschalten von "inv" halten und dann die nächste Änderung mehr oder weniger werden lassen (abhängig von "inv").

                                          Beispiel:

                                          Regler "y" steht auf 50%, "inv" = 0, Regler schiebt "y" Richtung 51, 52, 53%
                                          Jetzt ist die Bedingung erfüllt, dass "inv" = 1 wird => Regler springt nicht auf "min", sondern schiebt "y" Richtung 52, 51, 50%
                                          dann schaltet "inv" wieder auf 0 => Regler springt nicht auf "min", sondern schiebt "y" Richtung 51, 52, 53%

                                          Lässt sich das so umsetzen?

                                          Danke vorab!

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

                                            @fu_zhou

                                            Sorry für die späte Antwort.
                                            Im Moment komm ich leider nicht dazu mir das anzusehen. Denkbar ist wie immer vieles - obs auch technisch möglich ist kann ich im Moment nicht sagen.

                                            Ev. kopier die Anforderung mal in ein Issue rein damit sie nicht untergeht.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            998
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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