Forum: Mikrocontroller und Digitale Elektronik PID-Regelalgorithmus, Stellgröße


von Oliver M. (omeier)


Lesenswert?

Hallo Zusammen,

ich hätte da eine paar Frage zu einem PID-Regelalgorithmus.

Ich verwende folgenden PID-Algorithmus (nach 
http://www.rn-wissen.de/index.php/Regelungstechnik):
1
esum = esum + e
2
y    = Kp*e + Ki*esum + Kd*(e  ealt)
3
ealt = e

Die Funktion wird alle X ms aufgerufen und bekommt die Regelabweichung e 
übergeben (Kp, Ki und Kd sind die entsprechenden PID-Faktoren).
Meine zu regelnde Strecke wird durch einen 0-10V Ausgang angesteuert 
(sagen wir der einfachheit halber ein 16-Bit DAC-Wert).
Ich betrachte momentan nur die PI Anteile, also Kd = 0.
Meine zu regelnde Strecke ist (unbelastet) bei sagen wir mal 5V (0x7fff) 
ausgeregelt.


Nun ist mir die Weiterverarbeitung der Stellgröße y nicht so ganz klar. 
Ich sehe da 2 Möglichkeiten:

1. Direkte Ausgabe von y auf den DAC der Form: out = PID(e)
2. Aufsummieren von y in der Form:             out = out + PID(e)


Zu 1.:
Im Fall das die Regelabweichung e=0 wird, werden auch die P- und D-Terme 
0.
Meine Ausgangsgröße out kann also nur noch durch den I-Term zustande 
kommen.
esum wird dabei bei jedem Aufruf erhöht, bis die Regeldifferenz 0 ist.
Der P-Term ist dabei meines Erachtens nachrangig, da er lediglich bei 
jedem Regelschritt nur einen (Regeldifferenzabhängigen) Offset beiträgt.
Die Regelstrecke ist damit hauptsächlich von I abhängig. Würde ich den 
I-Faktor Ki auf 0 setzen,
würde die Regelung nicht funktionieren, da der P-Term ja nirgends 
"gespeichert" wird (e=0 -> y=0).
Das kann eigentlich nicht richtig sein.



Zu 2.:
In diesem Fall wird bei jedem Regelschritt der P-Term und der I-Term 
voll auf den Stellwert (out) addiert.
Der Regler kann nur mit P-Anteil als auch nur mit I-Anteil betrieben 
wrrden.

Wenn ich allerdings einen Anlaufvorgang betrachte, stellt sich folgendes 
Problem:
-> Zunächst ist e groß, out wächst schnell über die P- und I-Terme.
-> Komme ich jetzt meinem, Sollwert näher, wird der P-Term schnell 
kleiner, der I-Term inkrementiert nur langsamer, verringert sich aber 
nicht.
-> Erreiche ich nun meinen Sollwert, ist der P-Anteil 0, der I-Anteil 
hat aber seinen Maximalwert erreicht (bedingt durch die Aufsummierung 
von e in esum)
und sorgt mir dafür, das out weiter inkrementiert. esum wird erst 
abgebaut wenn mein Istwert größer dem Sollwert wird, also wenn e das 
Vorzeichen wechselt.

Ich bekomme also Immer einen Überschwinger, ich fürchte sogar dass das 
System damit dann immer schwingt (beim "abbremsen" passiert ja das 
gleiche).
Dies kann also auch nicht richtig sein.

Da ich aber weiss, das es funktionierende PID-Regler in der realen Welt 
gibt, muss ich leider annehmen, das ich irgendwo einen Denkfehler 
habe...

Ich wäre sehr dankbar, wenn mich Jemand etwas erleuchten könnte.

Grüße,
omeier

von Floh (Gast)


Lesenswert?

Oliver Meier schrieb:
> Würde ich den
> I-Faktor Ki auf 0 setzen,
> würde die Regelung nicht funktionieren, da der P-Term ja nirgends
> "gespeichert" wird (e=0 -> y=0).
> Das kann eigentlich nicht richtig sein.

Ein reiner P-Regler kann nicht genau sein. Das heißt, der gewünschte 
Sollwert wird möglicherweise nie erreicht, da der Ausgang um die Vorgabe 
herumpendeln kann. Die Stärke dieser Schwingung um den Sollwert ist 
abhängig vom Kp.

Oliver Meier schrieb:
> Ich bekomme also Immer einen Überschwinger, ich fürchte sogar dass das
> System damit dann immer schwingt (beim "abbremsen" passiert ja das
> gleiche).

Ein Überschwinger ist erstmal nicht ungewöhnliches, solange die zu 
regelnde Strecke und die Vorgaben das zulassen. Bei manchen 
Regelentwurfverfahren wird ein Überschwinger bestimmter Höhe sogar 
provoziert, um die Ausregelzeit zu minimieren (Symmetrisches Optimum, 
Betragsoptimum). Vermeiden lässt sich ein Überschwinger durch die 
passende Relation zwischen Kp und Ki.

Beide angesprochenen Fälle behandeln die Schwierigkeit beim Regeln, 
nämlich das Herausfinden der Parameter. Es gibt sehr viele 
Rechenverfahren für die Parameterberechnung, manche nur auf bestimmte 
Systeme anwendbar, andere universeller und aufwendiger. Bei manchen 
Systemen ist eine mathematische Berechnung gar niicht möglich, da z.B. 
nichtlineare Systeme oder Totzeiten in der Strecke sind.
Falls du dich dafür interessierst, der Wikipediaartikel ist sehr 
informativ:
http://de.wikipedia.org/wiki/Regelkreis

Fazit: Der PID-Regler an sich ist gegenüber der Modelbildung der Strecke 
und der daraus resultierenden Parameterberechnung Kindergarten.

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.