Hallo Leute,
ich hoffe, dass mir jemand helfen könnte und bedanke mich schon im
Voraus.
Für mein Problem solle ich ein adptiven Pi-Regler programmieren,
der Anfange habe ich schon gemacht und zwar der PI-Regler.
es sieht jetzt bei mit so aus:
//-------------------------------------------------
int x,w, y, diff, eDiff;
int kp = 10;
int Ki = 40;
int Ta = 1;
diff = w-x;
eDiff = eDiff + diff;
if (eDiff < -0xFFF) {eDiff = 0x000;}
if (eDiff > 0xFFF) {eDiff = 0xFFF;}
y = Kp*e + ((Ki*Ta*esum)/100);
//---------------------------------------------------------
jetzt meine frage: wie kann ich diesen Regler erweiteren, dass es zu
einem adptiven (self tuning) wird? Also der Regler muss sein I-Anteil
selber anpassen können.
Danke
Servus,
adaptive Regler laut Unbehauen III nix anderes als heiße Theorie.
Eine sehr gute Regelgüte erreicht man mit Aström Anti-Windup Regler.
Dein Regler ist vollkommen unvollständig! Deshalb keinen weiteren
Kommentar dazu.
Anfänger93 schrieb:> if (eDiff < -0xFFF) {eDiff = 0x000;}> if (eDiff > 0xFFF) {eDiff = 0xFFF;}> y = Kp*e + ((Ki*Ta*esum)/100);
Bei Codeteilen solltest du zumindest sicher stellen, dass der Compiler
das frisst. Wie groß ist dein int Datentyp. Du solltest dir ein bisschen
Gedanken über Wertebereiche machen, wenn du in int zu Gange bist.
Die Schreibweise "-0xFFF" mag zwar syntaktisch richtig sein, nur führt
sie eher zur Verwirrung.
длинний зелёний тролль schrieb:> Was hast du denn bisher schon erreicht und was ist nicht gut daran.
Bis zu einem bestimmten Durchmesser funktioniert diese Reglung sehr gut,
aber wenn das Durchmesser noch größer wird, fängt extrem zu schwingen,
deswegen ist meine Idee, den I-Anteil veränderbar einzusetzen, also
Auto Tuning so zu sagen.
Das Problem ist, dass unter "adaptive control" gut ein Dutzend
verschiedene Methoden fallen, die von "gain scheduling" bis "machine
learning" reichen und in jener Reihenfolge auch entsprechend in der
Komplexität explodieren. Den "adaptiven Regler" perse gibt es so also
eigentlich nicht.
Was für kleine µC in der Regel am zielführendsten ist, ist erstmal ein
simples "gain scheduling" auf Basis irgendwelcher selbst erstellten
Parameter zu erstellen. Etwa "I steigt mit dem Quadrat des
Rollendurchmessers"... oder was auch immer für deine Applikation als
passend erscheind.
Führt das nicht zum Erfolg, dann kann man sich immer noch überlegen ein
Referenzmodell der Regelstrecke zu erstellen. Entweder im voraus, oder
vom µC selbst via Messungen off- oder online. Solche modellbasierten
Regler ermöglichen dann meist auch echte "adaptive Regler", indem man
das Verhalten des Modells mit dem des Reglers in ein Optimierungsproblem
packt und abgleicht... das is dann aber schon sehr, ich sag mal
fortgeschritten. ;)
Anfänger93 schrieb:> Hallo Leute,> ich hoffe, dass mir jemand helfen könnte und bedanke mich schon im> Voraus.>> Für mein Problem solle ich ein adptiven Pi-Regler programmieren,
Was zum Geier ist ein "adaptiver" PI Regler?
Hallo, das Wörtchen "adaptiv" taucht seit undenklichen Zeiten immer mal
in allen möglichen Verbindungen auf. Am Anfang meiner Berufslaufbahn war
das schlicht ein PR-Argument. Adaptiver PI-Regler z.B. hört sich ja auch
gewichtig an. Und suggeriert etwa so etwas wie automatisch,
selbstständig...was würde man also in diesem Fall des TO erwarten. Einen
PI-Regler, der sich selbst seine Regelaufgabe optimiert. Auch wenn es
durchaus (überaus komplexe) Systeme gibt, die sowas können, so wird
praktisch eher ein Parameter des Systems in simpelster Art und Weise
umgeschaltet und nennt sich dann eben adaptiv.
Bin kein Regeltechniker und kann dem TO deshalb nur raten, sich mit der
Optimierung seines Regelkreises zu beschäftigen. Vielleicht ist ein
PI-Regler ja z.B. gar nicht geeignet, um die gestellte Aufgabe zu lösen!
Jedenfalls, bevor "adaptiv" gedacht wird, sollte das System erst mal
stehen. Und dazu wird hier im Forum sicher kompetente Hilfe vorhanden
sein.
Gruß Rainer und gutes Gelingen!
Frueher hat "adaptiver Regler" bedeutet :
Der Chefingenieur laesst auf die Pensionierung hin auslaufen und
arbeitet jetz nur noch daran. Der Output wird Null sein, aber lassen wir
ihn. Vieleicht brauchen wir ihn nochmals.
Seine Regelstrecke ändert sich. Daher wird ein Regler, der sich auf die
Veränderung anpasst überlegen sein. Ist auch nichts kompliziertes.
Der I Anteil schleppt Information von vergangenen Zeiten mit sich
(deshalb heißt er auch so), man kann nicht einfach den Faktor Ki
anpassen, damit würde der Anteil der vergangenen Zeit mit verstärkt.
Also den alten Anteil so lassen und nur den neu dazugekommenen mit einem
neuen KIneu dazu addieren.