www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ks skalieren bei einem PID Regler


Autor: Roger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe meinen ersten PI-Regler auf einem uC integriert und noch einige 
Unsicherheitsfaktoren... Die Regelstrecke ist ein passives 
Tiefpassfilter 2. Ordnung mit OP. Geregelt wird eine Spannung von 0..10V 
mittels PWM.



Frage 1: KS Skalierung
======================

Ich arbeite mit Fixkommazahlen und habe leider auch keine ALU die mit 
einem Zyklus Multiplizieren kann. So hab ich mir überlegt, möglichst nur 
die Konstanten und die Stellgrösse w zu skalieren, da w am wenigsten oft 
ändert.

Alle Werte bei 100% Ausgangsspannung.

w_ = 254 (8bit Stellgrösse 0..254 = 0..100%)
x_ = 924 (10bit ADC)
u_ = 473 (9bit PWM 5V)
y_ = 10V (Ausgangsspannung -> geregelte PWM mit 2 PT1 Gliedern + OP mit 
G=2.22)

Ich skaliere w_ mit dem Faktor 3.64 (233/64) auf den Wertebereich von x 
(w_ * 3.64 = 924). Somit ist bei 10V Ausgangsspannung w und x gleich 
gross und der Fehler e = 0. Auf KP, KI, KD sollte dies keinen Einfluss 
haben? Bevor ich den Stellgrösse u in das PWM Register schreibe skaliere 
ich mit dem Faktor 473/924 = 0.512, was vermutlich 1/KS entsprechen 
müsste.

Ist dies korrekt? Die Formel ist KS=dx/dy, was setzte ich für dy in 
meinem Fall ein?





Frage 2: Parameter bestimmen
============================

Folgende Werte habe ich gemessen:
Tu = 12us
Ta = 47us (geht leider nicht schneller)
Tg = 400us
KP kritisch = 2
T kritisch = 475us
KS = 1.95?

Nach Chien/Hrones/Reswick erhalte ich dafür KP=15.4, KI*Ta=18.2, q0=6.6, 
q1=-6.0
Nach Ziegler/Nichols bekomme ich KP=6.0, KI*Ta=0.6, q0=33.6, q1=-15.4

Implementiert habe ich den Stellungsalgo vereinfacht so:
e = (w*3.64) - x;            //Vergleich
y = yalt + 7*e - 6*ealt;    //Reglergleichung
ealt = e;
yalt = y;
PWM = y;
Da schwingt aber alles, darum vermute ich hier noch einen 
Überlegungsfehler. Den Genauigkeitsverlust beim Integrationsanteil habe 
ich beachtet.

Wenn ich aber nach der Try&Error Methode mal dies versuche:
e = (w*3.64) - x;            //Vergleich
y = yalt + e/8 - ealt/16;    //Reglergleichung
ealt = e;
yalt = y;
PWM = y/2;
funktioniert der Regler fast wie gewünscht (siehe Frage 3). Ich weiss 
aber auch nicht genau wieso :)

Sieht hier jemand einen Fehler? Irgendwie scheint mit Theorie und Praxis 
noch nicht aufzugehen???





Frage 3: Störstabilität
=======================

Bei der 2. Implementation aus Frage 2. funktioniert die Regelung mit der 
gewünschten Genauigkeit. Um die Störstabilität zu testen habe ich das 
Verhalten getestet wenn sich der Verstärkungsfaktor der Regelstrecke 
ändert. Bei einer Verstärkung um Faktor 1.2 vermag der PI Regler das PWM 
Signal zu drosseln und exakt auf 10.0V regeln. Hat der 
Verstärkungsfaktor (Gz?) aber nur schon 2% weniger als 1 sakt die 
Ausgangsspannung langsam ab. Bei 0.9 ist der Ausgang 9.34V.

Ich dachte erst an eine HW Begrenzug oder Implementierungsfehler bei 
negativen Zahlen. Leider konnte ich bis jetzt mit Messen/Debuggen nichts 
finden.

Könnte dies auch ein Überlegungsfehler sein?

Vielen Dank für eure Antworten

Autor: Roger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anmerkung zu Teil 3:
====================

Bei Sollwert = 254 ist die PWM bei 92% (wenn Gz=1), bei Gz=1.1 ist die 
PWM 82%, bei Gz=0.98 bei 96% und bei Gz=0.9 wieder unten bei 82% statt 
bei 99%. 0<= PWM <=511 hab ich beachtet und alle Variablen sind signed 
oder unsigned int16.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.