Hallo,
ich habe einen Arduino-PID-Regler nach der on-Board Library von Arduino
erstellt. https://github.com/br3ttb/Arduino-PID-Library/
Mein Problem ist nun, dass ich die Zahlenwerte um den PID schön
einstellen zu können nicht verstehe.
Hintergrund meines Problems:
Ich habe einen Pufferspeicher einer Wärmepumpe mit Zusatzheizstäben.
Momentan leite ich manuell von der Solaranlage ab einer gewissen
Leistung den Strom in die Heizstäbe. Diese sind sowohl per PWM als auch
ModBUS ansteuerbar. Zusätzlich haben diese eine Max-Temp Einstellung um
Überhitzen zu vermeiden.
Meine WP möchte ich weder hart ein noch hart ausschalten. Der Kompressor
hat ein Profil das er abarbeitet und somit kann ich nicht einfach
Ein/Aus sagen. Der Nachlauf nach Start sind ca 30min. Zu lange für eine
Wolke. Soweit so gut.
Die Heizstäbe haben jeweils 10kW und können bis herunter auf 2kW
gedrosselt werden (PWM/Modbus) oder ganz abschalten. Allerdings geht die
Übernahme der Befehle zum Heizen sehr langsam. Abschalten bzw runter
regeln geht sofort.
Hier hab ich mein Problem des PID-Reglers. Ich messe den Strom am
Stromzähler. Sehe 8kW Überschuss und sage meinem Heizstab das er 8kW
kann. 5sek später sehe ich noch 6kW Überschuss und mein PID sagt dann,
da geht noch was. Bei 10kW sehe ich dann 2kW Bezug und mein PID nimmt
ihm die wieder weg (was gar nicht sein muss).
Als Grundlage habe ich diesen Code:
https://github.com/br3ttb/Arduino-PID-Library/blob/master/examples/PID_Basic/PID_Basic.ino
mit diesen Werten:
1
doubleKp=1,Ki=1,Kd=1;
Ich habe leider keine Ahnung welche Werte ich für P I und D nehmen soll.
Der Überschwinger soll sofort reduziert werden und das Hochregeln
langsam erfolgen, da der Heizstab nicht sofort reagiert.
Kann mir jemand a) erklären wie ich die PID zu verstehen habe und b) mir
eventuell einen Zahlenwert nennen kann der für mein Projekt passt?
Grüße
Michael
> Kann mir jemand a) erklären wie ich die PID zu verstehen habe und b) mir
Nein, das geht leider nicht. Regelungstechnik ist eine Vorlesung ueber
2-3Semester im Rahmen eines Nachrichtentechikstudium wo der Professor
bereits weiss das du die notwendigen Mathe-Grundlagen drauf hast. Das
ist gerne mal ein Fach wo man laestige Studenten los wird.
Du kannst dir natuerlich die entsprechenden Buecher zulegen, aber die
liesst man nicht so einfach. .-)
> eventuell einen Zahlenwert nennen kann der für mein Projekt passt?
Nein, koennen wir auch nicht weil das natuerlich genau auf dein System
passen musst.
Fuer Leute wie dich haben die Herren Ziegler und Nichols oder auch Chron
und Renswick Einstellformeln/Verfahren hergeleitet. Danach kannst du
suchen. Die liefern eine Annaeherung die oftmals ausreichend ist,
manchmal auch nicht. Daher ist es dann empfehleswert das deine Software
immer die Systemparameter ausgibt und du dir das mal grafisch darstellt.
Dann kann man die letzten Feinheiten nach Gefuehl verstellen und dann
passt es meistens.
Olaf
Der P-Regler besteht ausschließlich aus einem proportionalen Anteil der
Verstärkung Kp. Mit seinem Ausgangssignal u ist er proportional dem
Eingangssignal e
Ein I-Regler (integrierender Regler, I-Glied) wirkt durch zeitliche
Integration der Regelabweichung e(t) auf die Stellgröße mit der
Gewichtung durch die Nachstellzeit T N {\displaystyle T_{N}} T_N
Das D-Glied ist ein Differenzierer, der nur in Verbindung zu Reglern mit
P- und/oder I-Verhalten als Regler eingesetzt wird. Er reagiert nicht
auf die Höhe der Regelabweichung e ( t ) {\displaystyle e(t)} e(t),
sondern nur auf deren Änderungsgeschwindigkeit.
Probier es mal mit einem Studium in Regelungstechnik. Da wird dir
beigebracht, wie man die Regelstrecke berechnet, so dass passende Werte
rauskommen.
Ohne genaue Kentnisse deiner Regelparameter bleibt nur die Methode
ausprobieren. Was welcher Wert macht, habe ich dir ja oben beschrieben.
Dreh am besten den D-Anteil erstmal auf 0. P bestimmt dann die Stärke
der Regelung und I ist für die Trägheit. P also langsam erhöhen, bis der
Ausgang in etwa auf den richtigen Wert regelt. Laständerung machen und I
so einstellen, das die Einregelungsgeschwindigkeit in etwa passt.
Zuletzt D aktivieren und bei Laständerung so justieren, das es gerade
keine Überschwinger gibt.
Allerdings ist ein PID Regler vermutlich die falsche Applikation für
deinen Fall.
Matthias S. schrieb:> Allerdings ist ein PID Regler vermutlich die falsche Applikation für> deinen Fall.
Hallo Matthias,
DAS habe ich sogar vermutet. Ich versuche nun einen anderen Ansatz.
Eventuell sogar per Hand.
So wie ich das sehe, gehst es hier nicht darum die Temperatur der
Heizstäbe zu regeln sondern den überschüssigen Strom in die Heizstäbe
reinzuleiten? Warum möchtest du dafür eine Regelung?
Blackoutgroßaktionär schrieb:> So wie ich das sehe, gehst es hier nicht darum die Temperatur der> Heizstäbe zu regeln sondern den überschüssigen Strom in die Heizstäbe> reinzuleiten?
Genau!
> Warum möchtest du dafür eine Regelung?
Damit ich keinen Strom aus dem Netz ziehe.
Michael schrieb:> Damit ich keinen Strom aus dem Netz ziehe.Michael schrieb:> Ich messe den Strom am> Stromzähler. Sehe 8kW Überschuss und sage meinem Heizstab das er 8kW> kann. 5sek später sehe ich noch 6kW Überschuss ...
... und drum du sagst deinem Heizstab, dass er 6kW kann.
> Bei 10kW sehe ich dann ...
... 10kW Überschuss und sagst dem Heizstab, dass er 10kW kann.
Zu regeln gibt es da gar nichts.
Jester schrieb:> Michael schrieb:>> Damit ich keinen Strom aus dem Netz ziehe.>> Michael schrieb:>> Ich messe den Strom am>> Stromzähler. Sehe 8kW Überschuss und sage meinem Heizstab das er 8kW>> kann. 5sek später sehe ich noch 6kW Überschuss ...> ... und drum du sagst deinem Heizstab, dass er 6kW kann.>> Bei 10kW sehe ich dann ...> ... 10kW Überschuss und sagst dem Heizstab, dass er 10kW kann.>> Zu regeln gibt es da gar nichts.
Du hast es leider nicht kapiert!
Der Heizstab zieht nicht sofort die Leistung, sondern erst ca 30-60
Sekunden nach dem Befehl. Leistung reduzieren geht aber sofort.
Willst du deine Aussage nochmals überdenken?
Hast du verstanden was passiert wenn man den Stab 8kW freigibt und misst
bevor der Stab die Leistung voll angenommen hat? Es gibt einen
Messfehler der sich aufaddiert und zu Überschwingern führt.
Michael schrieb:> Du hast es leider nicht kapiert!>> Der Heizstab zieht nicht sofort die Leistung, sondern erst ca 30-60> Sekunden nach dem Befehl. Leistung reduzieren geht aber sofort.
Und du bist dir ganz sicher, dass du verstanden hast, was ein
(PID)-Regler macht?
Du verheizt die von deinem Stromzähler gemeldete, überschüssige Leistung
in deinen Heizstäben. So weit so gut.
Dank sofort reagierender Leistungsreduktion ziehst du keinen Strom aus
dem Netz. So weit so gut.
Viel Spaß mit den Totzeiten beim Hochfahren der Heizstäbe. Während 30
... 60 Sekunden verschenkst du Leistung. Das bekommst vielleicht in
Griff, wenn du zusätzlich eine Glaskugel verbaust. So weit so gut.
Oder du schließt deine Fotovoltaik direkt an deine Heizstäbe - ganz ohne
depperte PWM/Modbus-Steuerung. Dann verschenkst du nichts. So weit so
gut.
Michael schrieb:> Meine WP möchte ich weder hart ein noch hart ausschalten. Der Kompressor> hat ein Profil das er abarbeitet und somit kann ich nicht einfach> Ein/Aus sagen. Der Nachlauf nach Start sind ca 30min. Zu lange für eine> Wolke. Soweit so gut.
Die WP steuern, bei Totzeiten von ~30min - damit ist in jedem Fall eine
Glaskugel fällig - und zwar eine der wamperten Sorte! So weit so gut!
Warum eigentlich immer PID Regler? Gibt es heute nicht besser,
selbstlernende Algorithmen? Oft ist die Reaktion der Regelstrecke über
die Zeit doch nicht konstant.
So ein Aufriss wegen eines Pufferspeichers....
Miss die Temperatur, mach dir 3-5 Leistungsstufen und hau die passende
PWM raus. Das wars. Kein Regler, sicherer Programmablauf, keine
Probleme. Einen Pufferspeicher ausregeln, ich glaub es geht los. Dir ist
doch egal ob der Eimer 85 oder 85,3°C hat. Hauptsache die max PV Energie
geht da rein und die Tonne fliegt nicht durchs Dach. Das kann dein
Programm leich berechnen und dann den PWM Ausgang setzen...Mach dir
lieber Gedanken wie du die obere Abschaltung hin bekommst und am besten
redundant auslegst, damit wenigstens eins von beiden den ungewollten
Start der Boiler 5 Rakete verhindert.
VG Paul
Re D. schrieb:> Warum eigentlich immer PID Regler? Gibt es heute nicht besser,> selbstlernende Algorithmen? Oft ist die Reaktion der Regelstrecke über> die Zeit doch nicht konstant.
Nein. Bei diesen gibt es keine Sicherheiten was die Funktion angeht.
Damit für viele Anwendungen unzureichend
Ich fürchte dass das überhaupt nicht geht.
Auf der einen Seite bekommst du zeitnahe Informationen, wie viel
Energie-Überschuss deine Solarzellen produzieren.
Du möchtest den Überschuss zum Heizen verwenden, kannst die Heizleistung
aber nur mit 30 Minuten verzögerung reduzieren.
Wenn ich dich soweit richtig verstanden habe, müsste dein Regler in die
Zukunft schauen können, um schon eine halbe Stunde vorher abzuregeln,
bevor sich eine Wolke vor die Sonne schieben wird. Wie soll das gehen?
Michael schrieb:> Kann mir jemand a) erklären wie ich die PID zu verstehen habe
P schaut in die Gegenwart,
I in die Vergangenheit,
D in die Zukunft.
Dein Problem ist aber die Totzeit in der Regelstrecke. Denn D kann nicht
die Sonne bzw die Wolken sehen...
Kolja L. schrieb:> Michael schrieb:>> Kann mir jemand a) erklären wie ich die PID zu verstehen habe>> P schaut in die Gegenwart,> I in die Vergangenheit,> D in die Zukunft.>> Dein Problem ist aber die Totzeit in der Regelstrecke. Denn D kann nicht> die Sonne bzw die Wolken sehen...
Woher kommt eigentlich die Totzeit von 30min?
Blackoutgroßaktionär schrieb:> Woher kommt eigentlich die Totzeit von 30min?
Die scheint es nicht zu geben, der TE redet aber von 30-60s, die seine
vorhandenen Mimik braucht, um die Heizdingse aufzudrehen.
M.E. ist damit schon Ende Banane, denn es gibt bei der PV keine Prognose
und schon gar nicht die Prophetschaltung. Am besten speist man in die
Heizstäbe das, was da ist und schaltet nur bei mangelnder PV irgendwann
auf Netzbetrieb.
Kolja L. schrieb:> Michael schrieb:>> Kann mir jemand a) erklären wie ich die PID zu verstehen habe>> P schaut in die Gegenwart,> I in die Vergangenheit,> D in die Zukunft.>> Dein Problem ist aber die Totzeit in der Regelstrecke. Denn D kann nicht> die Sonne bzw die Wolken sehen...
Danke für die Aufklärung! Ja genau, das ist mein Problem. Sonne ist weg
und die Regelung fängt an den Stab zurück zu regeln bis er keinen Strom
mehr aus dem Netz zieht. Das dauert aber und kostet unnötig Geld.
Stefan F. schrieb:> Du möchtest den Überschuss zum Heizen verwenden, kannst die Heizleistung> aber nur mit 30 Minuten verzögerung reduzieren.
Das ist bei der Wärmepumpe. Deshalb aktiviere ich ja die Heizstäbe.
Diese sind aber beim Anfahren her träge und brauchen 1min. Runterregeln
hingegen geht sofort.
Eigentlich brauche ich einen Heizstab der keine Elektronik enthält und
ggf über Phasenabschnitt/Anschnitt geregelt werden kann.
Re D. schrieb:> Warum eigentlich immer PID Regler? Gibt es heute nicht besser,> selbstlernende Algorithmen? Oft ist die Reaktion der Regelstrecke über> die Zeit doch nicht konstant.
Fuzzy logik ?
Klaus H. schrieb:> Re D. schrieb:>> Warum eigentlich immer PID Regler? Gibt es heute nicht besser,>> selbstlernende Algorithmen? Oft ist die Reaktion der Regelstrecke über>> die Zeit doch nicht konstant.>> Fuzzy logik ?
Kannst du das bitte näher beschreiben?
Helge schrieb:> Braucht man überhaupt einen Regelalgorithmus? Reicht es nicht, dem> Heizer die Überschußleistung als Stellparameter rüberzuschicken?
Bitte lese meinen Text. Dort ist beschrieben weshalb dies nicht geht,
ohne dabei es zu Überschwingern kommen zu lassen.
aufschreiben welche Totezeiten und Übertragungsglieder man im System
hat...
Dann simulieren... eventuell müssen auch mehrere Regler arbeiten mit
verschiedenen Übertragungsgliedern und später intelligent fusioniert
werden...
Michael schrieb:> Klaus H. schrieb:>> Re D. schrieb:>>> Warum eigentlich immer PID Regler? Gibt es heute nicht besser,>>> selbstlernende Algorithmen? Oft ist die Reaktion der Regelstrecke über>>> die Zeit doch nicht konstant.>>>> Fuzzy logik ?>> Kannst du das bitte näher beschreiben?
Frank Hoffmann - Entwurf von Fuzzy-Reglern mit genetischen Algorithme
Kann man nicht einfach den Regler so langsam laufen lassen, dass er nur
einmal alle 60 Sekunden die Stellgröße ändert? Bzw. nach dem
Einschaltbefehl einfach 60 Sekunden warten.
Michael schrieb:> Bitte lese meinen Text. Dort ist beschrieben weshalb dies nicht geht,> ohne dabei es zu Überschwingern kommen zu lassen.
Dein Problem liegt außerhalb des Einflussbereiches des (was auch immer)
Reglers. Solange du diese Totzeit nicht eliminierst, oder eine
funktionierende Glaskugel in die Regelstrecke implementierst, wird das
nix...
Ich habe einen Fehler gemacht!
Ich habe den Begriff und den Code für "PID" verwendet anstatt zu fragen
welcher Regler man nehmen muss. Jetzt hängen sich alle an dem PID-Regler
auf, anstatt mir zu erklären welche Regelart und welche Regeltechnik man
dafür nutzt. Es fehlt jetzt nur noch das Verhalten der Amateurfunker,
die dann zu Politik wechseln und am Ende bei Gesundheitsfragen sind.
Es war einfach ein Versuch, da ich glaubte ein PID-Regler wäre dafür
brauchbar. OK, ist er nicht.
Ich experimentiere nun etwas mit der vorgeschlagenen 60Sek-Regelung. Ist
halt aufwändiger, da keine fertige Lib.
Michael schrieb:> anstatt mir zu erklären welche Regelart und welche Regeltechnik man> dafür nutzt.Kolja L. schrieb:> Dein Problem liegt außerhalb des Einflussbereiches des (was auch immer)> Reglers. Solange du diese Totzeit nicht eliminierst, oder eine> funktionierende Glaskugel in die Regelstrecke implementierst, wird das> nix...
Michael schrieb:> Ich habe einen Pufferspeicher einer Wärmepumpe mit Zusatzheizstäben
wozu dann PID?
Bei der Zeitkonstante überflüssig, 2-punkt reicht völlig.
Bloß weil es PID gibt musss man das nicht überall anwenden.
Es wurde doch schon erklärt, dass die Totzeit druch Prädiktion (Zukunft
vorhersagen) berücksichtigt werden muss. Da gibt es zum Beispiel den
Smith-Prädiktor. Sprich du müsstest das Wetter 60 sekunden vorhersagen.
Wenn also eine Wolke im Anmarsch ist müsstest du das der Regelung
sagen...
Michael schrieb:> Ich habe den Begriff und den Code für "PID" verwendet anstatt zu fragen> welcher Regler man nehmen muss. Jetzt hängen sich alle an dem PID-Regler> auf, anstatt mir zu erklären welche Regelart und welche Regeltechnik man> dafür nutzt.
Du brauchst einen reinen P-Regler oder aber einen PI-Regler (oder einen
PID-Regler mit kd=0) mit einer vorgebbaren Begrenzung des
Ausgangssignals. In erster Linie wird der gemessenen "Rückstrom" am
Einspeisepunkt mit einem Faktor multipliziert (P-Anteil), der zu einer
entsprechenden Ansteuerung der Heizstäbe führt (was offensichtlich bei
Dir eine gewisse Zeit dauert z.B. 60s). Soweit, so gut.
Sollte über eine gewisse Zeit (z.B. 30min) durch den P-Regler ein
restlicher "Rückstrom" verbleiben, was bei einem P-Regler normal wäre,
kann man zusätzlich einen integralen (I-) Anteil hinzufügen. Dann würde
sich der verbliebene "Reststrom" langsam zu "Null" verringern. Hierbei
ist aber das Ausgangssignal des Reglers zu begrenzen (0kW bzw. +10kW).
Das ist mathematisch notwendig wegen des ins möglicherweise unendliche
steigende Integral bei Messunsicherheiten und Lastwechseln. In der
Praxis nutze ich für die gleiche Aufgabenstellung einen PI-Regler mit
Eingangssignal in [W] (Überschussleistung), Ausgangssignal in [W]
(anzusteuernde Heizleistung), kr=-0,4 Tn=6,0s Xamin=0W Xamax=1700W. Da
mein System sofort reagiert, können auch Lastwechsel im Netz
(Herdplatten mit Zykluszeit=15s) relativ gut beherrscht werden.
Dir würde ich einen reinen P-Regler empfehlen, wie bereits zu Anfang
gepostet wurde:
ReglerForBeginner schrieb:> double Kp=1, Ki=0, Kd=0;
Kp kannst Du dann variieren und sehen ob es besser oder schlechter wird.
noch eine Ergänzung: fange mit einem Wert von Kp=0,4 an und steigere ihn
dann. Die Einstellreglen nach Nichols/Ziegler sind in Deinem Fall nicht
hilfreich, da die Regelstrecke (das Stromnetz) viel schneller reagiert
als das Stellglied (Deine Heizelemente mit Zeitverzögerung). Eine KI an
dieser Stelle wäre zu überdimensioniert und ist auch in der Industrie
noch nicht angekommen. Bei meinem Studium waren wir froh, wenn der
Regler doppelt so schnell reagierte als die Regelstrecke. Daher bleibt
tatsächlich nur ein P-Regler oder der direkte Anschluss der Heizelemente
an die PV-Anlage...
nochmal ich. Um eine saubere lineare Regelung hinzubekommen, muss die
gemessene Regelgröße (hier beim TO die Solarleistung, bei anderen
Projekten der gemessener Strom am Einspeisepunkt) per Filter soweit
geglättet werden, dass der maximale Signalanstieg kleiner ist als die
Geschwindigkeit, mit der das Stellglied die Regelstrecke beeinflussen
kann. Z.B. mit einem pt1 Glied, also einer Mittelwertbildung. Da in
diesem Thread die Regelstrecke sehr langsam ist, kann man mit einem
Regler also keinesfalls schnelle Wechsel der Solareinstrahlung oder
Lastwechsel im Netz abfangen.
Es bleiben dann nur zwei Wege: 1. Die Führungsgröße bzw. den Sollwert
auf einen Wert <0 zu verschieben und damit die Effizienz zu
verschlechtern (Rückspeisung ins Versorgungsnetz) und/oder 2. einen
speziellen nichtlinearen Regler zu adaptieren, der die vielen möglichen
Regelungsfälle heuristisch/vorhersagbar "möglichst gut" umsetzt. Dabei
wäre die Aussage hilfreich:
Michael schrieb:> Allerdings geht die> Übernahme der Befehle zum Heizen sehr langsam. Abschalten bzw runter> regeln geht sofort.
Konkret bei einem PI-Regler müßte dann die Integralbildung bei Zu- bzw.
Abnahme des Eingangssignals unterschiedlich erfolgen, z.B. mit einem
resetbaren Regler oder 2 verschiedenen Ki.