Hallo liebe Leutz,
ich hab in mehreren Beiträgen zu PID Reglern den folgenden Link in eurem
Forum entdeckt.
http://rn-wissen.de/index.php/Diskussion:Regelungstechnik
Meiner Meinung nach eine super Seite was die Regelungstechnik angeht.
Nun zu meinem Problem.
Ich wollte nen PID-Regler in C programmieren. Prinzipiel kein Problem da
auf dieser Seite der fast fertige C-Code ja schon steht.
Laut RoboterNETZ
1 | esum = esum + e
|
2 | y = Kp * e + Ki * Ta * esum + Kd * (e – ealt)/Ta
|
3 | ealt = e
|
Nun mein Problem.
Wenn man oben auf der Website über der Überschrift "Regelungstechnik"
auf den blauen "Diskussion"-Button klick kommt als zweiter Eintrag
"Programmkode beim D-Anteil falsch?".
Hier gibt der Verfassen den folgenden Code als richtige Variante an.
1 | e = w - x; //Vergleich
|
2 | esum = esum + e; //Integration I-Anteil
|
3 | // y = Kp*e + Ki*Ta*esum + Kd/Ta*(e – ealt); // falsch
|
4 | y = Kp*e + Ki*Ta*esum + (e – ealt); // richtig
|
5 | // ealt = e; // falsch
|
6 | ealt += (1 - exp(-Ta/Kd)) * (e - ealt); // richtig
|
Der Unterschied liegt nur in der Berechnun des D Anteils.
Ist es richtig das der D-Anteil expotentiel abklingen muss???
Bei der zweiten Variante finde ich auch ein wenig komisch das sobald man
die Variable Kd = 0 setz wird beim berechnen der Stellgröße y immer
e-ealt weiter hinzuaddiert, was ja eigentlich nicht sein dürfte oder???
Meine Frage nun, welches ist richtig???
Freundliche Grüße
Sleven