[Modul] PID Controller - Beta, try out

Die würde ich schon drinlassen, nur ohne die manuellen Eingaben von Ist- und Sollwert.

Bei meiner Version (3 Tage alt) hatte ich als Test den PI-Regler passiv mitlaufen lassen, gespeist aus Ist- und Solltemperatur Bad. Den von deinem Modul berechneten Verlauf des Stellwertes vergleiche ich nun mit dem Stellwert des KNX PI_Reglers im Heizungsaktor, der tatsächlich dort regelt.

Beide Regler sind gleich parametriert: P-Band 2K, Nachlaufzeit für I-Anteil 90 Minuten, kein D-Anteil.

Irgendwie ignoriert dein Code hartnäckige alle Änderungen des Sollwertes in der verlinkten Variablen. Davon abgesehen sieht es aber nach dem erwarteten PI-Regelverhalten mit der gewünschten Zeitkonstante für den I-Anteil aus, nur eben auf den falschen (festen) Sollwert berechnet.

Nachtrag: Festes Berechnungsintervall ist aktiv weil meine KNX-Sensoren Werte nicht im festen Intervall senden sondern auch bei Änderung. Die Zeitabstände der Ist-Werte sind also variabel.

Hallo
Also das es nicht auf Sollwerteänderungen reagiert kann ich nicht nachvollziehen.
In der Langzeitbetrachtung find ich aber immer wieder Betriebszustände die mir nicht gefallen oder zumindest mal ich nicht verstehe. Muß ich mir mal temporär ein logging für die PID Anteile einbauen um das besser nachvollziehen zu können.

Im Moment haben wir hier aber herrlichstes Schiwetter mit tollen Bedingungen das mindert ziemlich die Lust und Zeit fürs programmieren.

so long
bb

Hallo Bernhard,

kein Problem, ich habe ja funktionierende PI-Heizungsregler und wollte nur bei den ersten Tests deines Moduls unterstützen. Hab’s jetzt erstmal gelöscht.

Beste Grüße
Volker

Hallo
Für Interessierte mal ein kleines Update zwischendurch.
Funktionieren tut es jetzt brav. Habe mir inzwischen vier Räume umgestellt und beobachte permanent
Die Regelung ist jetzt sehr gut, nicht zuletzt dadurch das man eben auch sehr viel einstellen kann.

Allerdings ist das zugleich auch ein Pferdefuß. Man kann eben auch manches falsch machen. Für einfach so Plug & Play ist das nichts.
Das kann der interne Algorythmus der Regelventile (Spirit) besser.

Das bringt mich auch an die größte Schwachstelle: Es sind (zumindest bei mir) in der ganzen Signalkette (1Wire Sensor auf ESP Basis → Wifi → IPS → LAN ->USB-> zWave->Spirit Ventilantrieb) einfach zu viele Komponenten im Spiel. Dazu kommt dann auch noch 1Wire (Ölofen) und Wifi (Wärmepumpe) gesteuerte Wärempquellen.

Irgendwo in der Kette ein Problemchen und Frau schimpft. Heizung braucht ein robusteres Setup.
Wenn ich die Spirit Ventile so wie geplant mittels des PID über IPS steuere fehlt einfach die Fallback Lösung und das ist nicht gut.

mal sehen wie es weitergeht…
bernhard

Hallo,

ich habe vor mit dem PID-Regler meine Solarheizung bzw. die dazugehörige Pumpe nach Differenztemperatur zu regeln.

D.h. wenn die Differenztemperatur >Sollwert ist soll die Leistung der Pumpe gesteigert werden und wenn die Differenz kleiner ist soll die Leistung verringert werden.

Jetzt ist die Funktion des Reglers genau anders herum. Bei Differenztemperatur > Sollwert regelt die Pumpe herunter.

Ich kenne den PID-Regler in Pumpensteuerungen und wird lediglich der P-Anteil negiert und somit die Wirkung umgekehrt.
In dem PID-Controller geht der P-Anteil nicht zu negieren.

Gibt es eine Möglichkeit im Modul oder muss ich mit externen Mitteln die 0-100% um skalieren.

Gruß Steve

Du musst den Ausgang des Reglers negieren (*-1)

Danke für die schnelle Anwort.

In welchem Feld soll der Wert eingetragen werden?

dafür musst du ein Skript mit der negation erstellen

Mit der Formel wird doch das Vorzeichen geändert oder täusche ich mich da?

ich möchte bei Ausgang 100% = 0% und bei 0% = 100%

wie wird der Sollwert für die Pumpe den vorgegeben 0-20mA oder 0-10V ?

Der Sollwert wird über ModBus 0-100% vorgegeben

Moin Moin,
möchte nun auch mal das Modul testen und die Werte mit dem „Heating Control“ vergleichen. Komme jedoch nicht weiter, die Werte der Ein-/Ausgangsvariablen werden nicht(?) erkannt. Nur wenn ich was bei den Variablen unter was eintrage, tauchen die Werte auf. Aber so soll es ja nicht sein.

Was mache ich ggf. in der Konfiguration noch falsch… Habe die 6.4. am laufen.

Im Debug Bereich wird jedoch der richtig Inputwert angezeigt.

Danke für die „Nachhilfe“.
Gruß Michael

Du meinst das der Sollwert nicht aus der angegebenen Variablen gelesen wird ?
Scheint da ist wohl in der letzten Version etwas kaputtgegangen…

Hab ich wohl nicht bemerket, weil ich setze den Wert immer per Script: PID_SetTargetValue($InstanzID, $SollTemp);

gruß
bb

Ja genau, da passiert mit beiden Variablen Nix. Weder Soll- noch Ist-Wert. Willst du es noch korrigieren?

Gruß Michael

Ja, ich schaue es mir an.
Istwert funktioniert aber ganz sicher. Den hab ich hier überall drin.

bb

Danke dir!!

Der Ist-Wert scheint ja da zu sein, aber wird nur im Debug Bereich angezeigt, nicht in der " Actual Value" Variablen.

Der Wert im Debug ist richtig.

Gruß Michael

Ergänzung: auch das Setzen per Script geht nicht. Was mache ich falsch…

Du mußt die ID der Instanz nehmen, und nicht die ID der Variable.

bb

oh yeah… dann doch zu blöd… Danke Dir!!
Gruß Michael

Hab nun eine neue Version nach Github hochgeladen.
Zugegeben es war etwas verwirrend … wenn ich mich recht erinnere hatte ich damit auch schon beim Volker Stirnrunzeln verursacht
Die Variable „TargetValue“ und „ActualValue“ waren nämlich eigentlich nur als Debug Ausgabe gedacht. Und NICHT um diese auch gleich zur Eingabe der Werte zu verwenden. - ja, das war irreführend.

Habs nun dahingehend umgebaut das diese nun auch direkt als Eingabevariablen benutzt werden können.
Will man das tun so können die entsprechenden Felder im Konfgurationsdialog leer bleiben. Füllt man sie aber aus, so kann man auf eine beliebige Float Variable als Eingang verweisen.
Die Texte im Konfigurationsdialog wurden entsprechend angepasst.

Allerdings hat das jetzt zur Folge das falls man die Eingangswerte per Script oder beliebige externen Variablen setzt die Target und Actual unter dem Modul nicht mehr upgedated werden können. Sonst gibts eine Endlosschleife.

evtl. mußt du das BB_Controller Modul entfernen und neu hinzufügen damit die die aktuelle Version bekommst.
Version sollte als 1.1 angezeigt werden

hoffe ich hab nix verschlimmbessert jetzt
Bernhard

1 „Gefällt mir“

Hallo zusammen, das Thema wird für mich jetzt plötzlich sehr interessant. Meine Regelung (Frischwasserstation) muss in den nächsten Wochen erneuert werden und ich Frage mich ob ich mit dem Regler meine Frischwasserstation gesteuert bekomme? :thinking: Was denkt ihr, kann das funktionieren?