Forum: Mikrocontroller und Digitale Elektronik PID verhalten?


von Glenn R. (glenn_r)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich stelle gerade einen PID Regler für die Temperatur an meinem 3D 
Drucker ein. Da die Elektronik von mir selbst entworfen wurde und die 
Software auch, besitzt dieser 3D Drucker auch kein Auto-Tuning system 
wie es bei anderen 3D Druckern der fall ist(RepRap's und der Gleichen).

Ich hab mit der Ziegler-Nichols Schwingmethode meine Werte errechnet und 
ausprobiert.
P = 7.5
I = 1.126126
D = 34.6875

Das funktioniert auch so ganz gut, nur habe ich damit am Anfang einen 
nicht zu übersehenden Overshoot.

Jetzt stellt sich für mich die Frage welche der drei Variablen geändert 
werden muss, damit das nichtmehr so stark/gar nicht auftritt.

Ich hatte I vermutet, doch wenn ich ich kleiner oder größer mache, tut 
sich wenig bis gar nichts an der Overshoot-Stelle. Nur die Schwingungen 
werden stärker.

Danke für alle Antworten!

PS: y-Achse ist Temperatur in °C, x-Achse Zeit in Sek (eig. normal, aber 
damit keine Verwechselungen vorkommen..)

: Bearbeitet durch User
von Florian (Gast)


Lesenswert?

Hallo,

ich würde P kleiner wählen, danach noch vielleicht I größer. Aber 
PID-Regler einstellen ist bei mir immer ein Rumprobieren, aber 
eigentlich fange ich immer mit P an.

Gruß
Florian

von Max D. (max_d)


Lesenswert?

Also ich weiß nicht wie du das genau gelöst hast, aber es kann unter 
Umständen hilfreich sein den I-Anteil zu begrenzen. Gerade wenn man hier 
"zum Limit hin" regelt, dann hat der nämlich sonst nen deftigen 
Überschuss drinnen und wird den ja auch nichtmehr los bevor man nicht 
angekommen ist.

von Glenn R. (glenn_r)


Lesenswert?

Florian schrieb:
> Hallo,
>
> ich würde P kleiner wählen, danach noch vielleicht I größer. Aber
> PID-Regler einstellen ist bei mir immer ein Rumprobieren, aber
> eigentlich fange ich immer mit P an.
>
> Gruß
> Florian

Ok, ich werds probieren ;)

Max D. schrieb:
> Also ich weiß nicht wie du das genau gelöst hast, aber es kann
> unter
> Umständen hilfreich sein den I-Anteil zu begrenzen. Gerade wenn man hier
> "zum Limit hin" regelt, dann hat der nämlich sonst nen deftigen
> Überschuss drinnen und wird den ja auch nichtmehr los bevor man nicht
> angekommen ist.

Ich hab schon eine Begrenzung für den Integrator eingebaut, so dass er 
bei einem bestimmten Wert(100, weil PWM output max. 100 ist) nicht mehr 
aufsummiert.

von hp-freund (Gast)


Lesenswert?

Hier:

http://www.atwillys.de/content/explained/pid-controller/example/

kannst Du deine Werte und die I-Begrenzung simulieren.

von Glenn R. (glenn_r)


Lesenswert?

hp-freund schrieb:
> Hier:
>
> http://www.atwillys.de/content/explained/pid-contr...
>
> kannst Du deine Werte und die I-Begrenzung simulieren.

Ok das hilft mir ein bisschen Gefühl dafür zu bekommen, aber ohne eine 
Funktion die mein System simuliert ist das glaub ich nicht so 
funktionell für diesen Zweck. Zumal ich noch nicht mal eine Funktion 
dafür hab.
Trotzdem Danke

von hp-freund (Gast)


Lesenswert?

Eine Beschreibung der Funktion findet sich im Quelltext:

http://www.atwillys.de/content/cc/pid-controller-in-c/

So ähnlich sollte deine auch aussehen oder?

von Glenn R. (glenn_r)


Lesenswert?

hp-freund schrieb:
> Eine Beschreibung der Funktion findet sich im Quelltext:
>
> http://www.atwillys.de/content/cc/pid-controller-in-c/
>
> So ähnlich sollte deine auch aussehen oder?

Ja tut er, nur ich meine, dass mein Hotend anders/spezifisch auf den 
Output reagiert und damit ein anderes plant-Modell hat als der simulator

von hp-freund (Gast)


Lesenswert?

Ok, verstehe.

von Wolfgang (Gast)


Lesenswert?

Glenn R. schrieb:
> Jetzt stellt sich für mich die Frage welche der drei Variablen geändert
> werden muss, damit das nichtmehr so stark/gar nicht auftritt.

Dazu guckst du dir einfach an, welcher der drei Anteile (P,I,D) dafür 
sorgt, dass dein Heizelement so kräftig angesteuert wird. Lass dir mal 
zusätzlich die Beiträge der drei Wege zum Gesamtsteuersignal ausgeben 
und trage die mit auf.

von Glenn R. (glenn_r)


Lesenswert?

Wolfgang schrieb:
> Glenn R. schrieb:
>> Jetzt stellt sich für mich die Frage welche der drei Variablen geändert
>> werden muss, damit das nichtmehr so stark/gar nicht auftritt.
>
> Dazu guckst du dir einfach an, welcher der drei Anteile (P,I,D) dafür
> sorgt, dass dein Heizelement so kräftig angesteuert wird. Lass dir mal
> zusätzlich die Beiträge der drei Wege zum Gesamtsteuersignal ausgeben
> und trage die mit auf.

ich habe jetzt mal alles aufgezeichnet und das durchgängige Resultat 
ist, dass der P Anteil gut arbeitet(bei großem Error großer Ausgangswert 
und beim dichtverkommen an den Sollwert klein genug wird), I arbeitet 
auch gut nur das es dort etwas dauert bis es von 100 runter ist und D 
fluktuiert immer mal wieder(lässt sich schwer beschreiben).

Mein Verdacht ist, dass die Werte schon so gut sind, aber das Hotend ist 
zu träge. Ich könnte vor dem Sollwert den Strom abschalten und es würde 
trotzdem um die 8°C überschwingen. Aber wie sag ich das dem PID 
Regler...?

von Glenn R. (glenn_r)


Lesenswert?

Gibts da Ideen? Schon genutzte Lösungen dafür oder Ansätze?
Ich will jetzt nicht aktiv im PID Regler rumpfuschen, denn der ist mit 
anderen Systemen wunderbar stabil und regelkonform.

von Tcf K. (tcfkao)


Lesenswert?

Imho ist für den Überschwinger ein mangelnder D-Anteil schuld, denn der 
widersetzt sich jeder Änderung und soll so den Overshoot verhindern.

von Wolfgang (Gast)


Lesenswert?

Glenn R. schrieb:
> Mein Verdacht ist, dass die Werte schon so gut sind, aber das Hotend ist
> zu träge.

Bei jedem Regelkreis ist die Strecke das Problem. Aber die läßt sich nun 
mal nicht vermeiden ;-)

Sofern dein Hotend keine Totzeit ins System bringt, sondern eine normale 
Zeitkonstante darstellt, musst du diese erste Zeitkonstante mit dem 
Hochpass (bestehend aus P und D-Anteil) kompensieren. Zeitkonstante 
runter bedeutet bei konstantem P-Anteil den D-Anteil zu erhöhen.

von Lurchi (Gast)


Lesenswert?

Die harte Begrenzung des I Anteils auf einen festen Wert ist noch keine 
so gut Lösung. Zumindest könnte man da eine engere Schranke probieren. 
Viel mehr als den Ausgleich des statischen Fehlers braucht man da nicht.

Die meist bessere Strategie ist es für das Anti Windup, bei Begrenzung 
des Stellgliedes (Heizung auf 100% oder 0%) den I Anteil neu zu 
berechnen, so dass man die Grenze nur gerade noch so erreicht.

Wenn der Überschwinger nach einen Sprung im Sollwert auftritt, kann man 
auch überlegen Sprünge durch eine annähernd realistische Rampe zu 
ersetzen und ggf. eine Art Feed-forward dazu zu nehmen. Etwa als 2 
zusätzliche Anteile, die vom Sollwert abhängen. Damit ändert sich nichts 
an der Stabilität, aber die Antwort auf einen neuen Sollwert kann 
unabhägig optimiert werde.

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
Noch kein Account? Hier anmelden.