Hallo zusammen, erst mal eine kurze Vorgeschichte worum es geht. Ich hab mir im Gartenhaus eine Fußbodenheizung gebaut. Das Wasser dafür wird in einem, mit Kohle beheizten, Boiler erwärmt. Zzt. wird das System durch einen Industrieregler, welcher die Wassertemperatur im Boiler regelt, gesteuert. Der Reglerausgang geht auf eine Schaltung mit einem MEGA8 welche über einen Schrittmotor die Luftzufuhr am Boiler entsprechend dem Regelausgang öffnet und schließt. Mit folgenden Parametern läuft die Regelung zzt. ganz gut Kp=12 Tn=3600s Tv=900s. Aufgrund des Wasserspeichers von ca. 100l ist das system recht träge. Mein Ziel ist es jetzt den Industrieregler einzusparen und die Regelei dem AVR aufzudrücken. Der P- und I-Teil sind mir soweit klar. Der D-Teil macht mir allerdings noch etwas kopfzerbrechen. Für die Temperaturmessung nutze ich den eingebauten ADC des AVR. Damit erreiche ich eine Auflösung von 0,1°C. Die PID Routine würde ich einmal/sekunde ausführen. Nun ändert sich innerhalb dieser Sekunde die gemessene Temperatur nur unwesendlich. Der entscheidende part des D-Teils "e_alt-e" wird also in den meisten Fällen 0 und ab und zu mal 0,1 sein. So kann der D-Teil also nicht wirklich funktionieren. Ich hab schon recht viel im Netz gesucht, auf dieses Problem wurde allerdings nie eingegangen. Bei schnellen Strecken, wo zwischen e und e_alt eine genügend große differenz besteht, spielt es warscheinlich nur eine untergeordnete Rolle. Bei langsamen Strecken wie sie bei Temperaturregelungen auftreten, halte ich diese einfache Umsetzung für problematisch. Hatte schon mal jemand dieses problem und eine Idee für eine Lösung? gruß oliver
Hallo Oliver, wie waers die Regelschleife nur alle 5 minuten laufen zu lassen? Gruss Marc
Wie wär's den D-Anteil einfach wegzulassen? Extrem schnell wird er Dein träges System eh' nicht machen!
hmm, stimmt. Vielleicht nicht mal unbedingt die ganze Regelschleife sondern nur den D-Teil in größeren Zeitabständen berechnen. Sinnvolle Zeitabstände könnte man dann direkt aus Tv ableiten. Je langsamer die Strecke, um so größer muss Tv eingestellt werden und um so größer werden die Zeitabstände zwischen den Berechnungen des D-Teils. Gute Idee. Danke! gruß oliver
@stefan Den D-Teil würd ich schon gern behalten. Wenn frische Kohle aufgelegt wird, fällt die Temperatur dadurch kurzzeitig. Darauf reagiert der D-Teil des Reglers recht schnell mit einem Öffnen der Luftzufuhr. Dadurch brennt die frische kohle gut an und die Störung wird schnell wieder ausgeregelt.
1s Zykluszeit wäre die schnellstmögliche Zykluszeit, wenn man mit 1% Auflösung bei der Heizleistung (PID-Output) arbeiten will und mit SSR-Relais schaltet, die eine Zerocross-Schaltung enthalten - denn es gibt nur 100 Perioden pro Sekunde. Für eine träge Fussbodenheizung etwas übertrieben. Also PID-Intervall grösser machen. Wenn ich mich richtig erinnere, ist die Daumenregel für die Zykluszeit = (maximal) 1/10 der gewünschten Ausregelzeit. Die erreichbare Ausregelzeit ergibt sich aus der Leistung der Heizung. Bei trägen Strecken kann man D ganz weglassen. D wird nur in dynamischen Situationen wirksam. Man könnten den Differenzenquotient für den D-Anteil auch über mehr als einen PID-Zyklus berechnen.
> 100 Perioden pro Sekunde
Meine natürlich 100 Nulldurchgänge.
Daß da sowohl die Eingangsgrösse als auch die Ausgangsgröße quantisiert ist, ist bei diskreten Systemen so. Du kannst halt nicht genauer regeln, als du messen kannst. Wenn deine Temperaturänderungsgeschwindigkeit tatsächlich im Bereich von 0.1K/s liegt, hast du Pech, da regelt der D-Anteil nicht mehr vernünftig. Aber wenn ich das richtig verstanden habe, geht es um einige Kelvin pro Sekunde, und da passt das dann wieder. Die Ausgabewerte des D-Anteils werden allerdings in 90er-Stufen quantisiert sein. Wenn du die Abtastzeit des Reglers erhöhst, werden die Stufen kleiner, aber schneller wird der Regler dadurch auch nicht. Oliver
Hi Dietmar & Oliver @Dietmar da hast du mich falsch verstanden. Ich regel hier keine Elektroheizung mit einem SSR sondern einen Kohleofen. Da geht nur die Luftklappe auf und zu. Wobei es eine berechtigte Frage ist, ob das im sekundentakt geschehen muss. :) @Oliver also im Extremfall (Aufheizphase) rechnen wir hier mit änderungsgeschwindigkeiten von 0,01K/s im Normalfall ca. 1/4 davon also 0.0025K/s. daher auch mein Problem mit dem D-Teil. "Schnell" ist hier auch wieder Ansichtssache. Wenn der Regler eine Störung (z.b. Kohle auflegen) in 30min ohne überschwingen ausregelt und die Temp. im Kessel nicht mehr als 1-1,5K vom soll abweicht bin ich schon zufrieden. Alles in allem bringt uns (mich) das auf jeden fall zu der Erkenntniss, dass ein Regelzyklus von 1s bei der gegebenen Messauflösung und der langsamen Strecke schlicht und einfach nicht zweckmäßig ist. Zumindest nicht für den D-Teil. Das bringt mich auf jeden Fall schon mal weiter. Danke für eure Hilfe. gruß oliver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.