PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verständin PI-Regler (Software) Überlauf?!?



Amiwerewolf
24.08.2008, 15:43
Hallo,
kann mir jemand helfen den PI-Regler zu verstehen.
Hier in Roboternetz steht der Code:

esum = esum + e
y = Kp * e + Ki * Ta * esum

was ich nicht verstehe wenn ich die Regelabweichung e ständig integriere, läuft die nicht irgendwann über?
Muss die nicht irgendwann gelöscht werden?

Danke

jeffrey
25.08.2008, 11:00
hoi,
normalerweise wird deine regalabweichung ja immer kleiner bzw hat dann ein anderes vorzeichen, damit sich das wieder ausgleicht.
es gibt aber vesrcheiden möglichhkeiten ein vergessen einzubauen, komplettes lösche würde ich lassen.
vergessen ist möglich durch z.b. esum=0,9*esum+e der faktor vor deinem esum sollte halt dann deiner abtastzeit und der schnelligkeit deiner strecke angepasst werden.
außerdem sollte unbedingt ein anti-wind-up eingebaut werden, wenn die stellgröße die beschränkung errreicht.
mfg jeffrey

edit: erste sätze korrigeiert, da ist wohl was in der reihenfolge durcheinader geraten.

Martin.
25.08.2008, 15:18
Ich hab in diesem Thread https://www.roboternetz.de/phpBB2/viewtopic.php?t=42102 mal meinen PID Regler (mit Anti Windup) vorgestellt. Gibt aber auch schon eine neuere Version die weniger Float Variablen verwendet. Das ganze funktioniert eigentlich sehr gut!

Gock
25.08.2008, 15:36
Das Integral über die Regelabweichung würde nur "überlaufen", wenn der Regler nicht in der Lage ist, sie zu Null auszugleichen. Das ist ja gerade sein Job. Damit sie Null wird, wenn sie positiv ist, steuert er das Stellglied derart, dass sie zunächst negativ wird. Das ist dann ein Überschwinger, bzw. eigentlich eher ein "Unterschwinger", aber egal... Nach ein paar solcher Schwinger (die nur schlecht bzw. falsch eingestellten Reglern sichtbar werden), wird sie schließlich 0, sofern sich der Sollwert nicht wieder ändert.
Löschen ist natürlich falsch, weil der Regler ja dann nicht richtig einschwingen kann.
Gruß

pctoaster
25.08.2008, 18:21
Hallo,
praktischerweise begrenzt man esum aber doch. Alleine schon einmal, um den Zahlenbereich einzugrenzen. Sonst kann es unerklärliche Effelkte geben, wenn man mal die Regelparameter falsch gewählt hat oder das System aus anderen Gründen nicht (so schnell) einschwingt.
So sieht das bei mir aus:
schnipp


// I Anteil begrenzen
eSum += e;
if (eSum > 50000) eSum = 50000;
if (eSum < -50000) eSum = -50000;

schnapp

MacGeforce
27.08.2008, 13:55
Ich würde den Integralteil auf jeden Fall vor einem Überlauf schützten..

Ich hab mal einen DC-Motor geregelt, wenn man den länger festgehalten hat ist er plötzlich in die andere Richtung gelaufen weil der I-Teil übergelaufen ist....

Gock
27.08.2008, 22:49
Natürlich muss man in der Praxis vor Überläufen schützen, aber hier geht es doch um das Verständnis. Bei einem theoretischen Regler oder wenn der Regler normal arbeitet und keine Extremfälle eintreten oder Defekte oder sonstwas und der Regler richtig eingestellt ist usw, dann läuft der I-Anteil nicht über, aus beschriebenen Gründen
Gruß

Amiwerewolf
04.09.2008, 00:05
ok ich hab jetzt
bei P bei I und beim D regler vor überläufen gesichert.
-P Regler: weil e * kp auch überlaufen kann
-I Regler: durch die Integrale
-D über den verstärkungsfaktor kd überlaufen kann

der D-Regler flattert bei mir so ziemlich
ich steuere eine Heizung an die einen Alublock erwärmt.
das dauert hald mal seine 10 bis 20 sekunden.
daher passiert es das ich von einem sample zum anderen keine messabweichung gibt. also e-ealt = 0
oder durch äußere einflüsse, luftzug, ....
ergibt sich ein negatives ergebniss, und im nächsten sample wieder positiv.
ist das normal, oder soll ich den p-regler nur jedes 10.... sample anwenden?
alle anderen regler steuern richtig!

danke Amiwerewolf

MrLeeh
04.09.2008, 10:21
Bei einer Heizungssteuerung würde ich keinen D-Anteil verwenden, da das ganze ziemlich träge ist. Also versuch einfach mal den D-Anteil auf 0 zu setzen.

jeffrey
04.09.2008, 10:49
hallo,

Bei einer Heizungssteuerung würde ich keinen D-Anteil verwenden, da das ganze ziemlich träge ist. Also versuch einfach mal den D-Anteil auf 0 zu setzen.
das würde ich so pauschal nicht sagen. ich verwende bei meiner heizungsregelung einen pd-regler. gerade weil das system so träge ist, wird damit wird dann das überschwingen verhindert. allerdings muss man dazusagen, dass bei mir die heizung nur an und aus geschaltet werden kann.
ich verwwende für den d-anteil, deswegen aber noch einen filter. das würde ich an deiner stelle mal versuchen.
mfg jeffrey

Amiwerewolf
04.09.2008, 23:43
ja mein problem ist das der D so ein rauschen drauf hat,
also e-ealt ist bei hochheizen nicht immer positiv
z.B einem zum anderen sample ist es oft 0
so bekomm ich das rauschen

ich möchte relativ schnell hochheizen deswegen der D-Regler
egal wieviel energie ich reinstecken muss

der I-Regler funktioniert wunderbar zum nachregeln

ein überschwingen möchte ich vermeiden, das medium das ich erhitze sonst kaput geht.

mir geht es hald um das "rauschen" des d-reglers

MrLeeh
05.09.2008, 07:09
Amiwerewolf schrieb:

mir geht es hald um das "rauschen" des d-reglers
Ich habe das Rauschen mit einem gleitenden Mittelwert unterdrückt. Der bildet über einen gewissen Zeitraum in die Vergangenheit (z.B. 15s) einen Durchschnittswert. Dadurch werden die Rauschspitzen geglättet.

Besserwessi
05.09.2008, 18:49
Der D Anteil kann helfen den Regler schneller zu machen. Für sich genommen macht der D Anteil die Rellung zwar langsamer, aber mit D Anteil man man den P und I Anteil erhöhen und dann insgesamt schneller werden. Bei der Berechenung des D Anteils ist Rauschen ein mögliches Problem, das Intervall über das man die Steigung bestimmen kann muß halt kürzer als die Zeitkonstante von Heizer/Thermometer bleiben, sonst hat man keinen D Dnteil mehr, sondern nur einen verkappten P. Sicher sollte man mehr als nur 2 AD Wandlungen benutzen, damit man nicht zu viel Quatisierungsrauschen mit reinkriegt.