Forum: Mikrocontroller und Digitale Elektronik Adaptiver PI-Regler


von Anfänger93 (Gast)


Lesenswert?

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

von Kai (Gast)


Lesenswert?

Anfänger93 schrieb:
> selber anpassen können.

Um was genau zu erreichen? Findest du keine Literatur?

von aSma>> (Gast)


Lesenswert?

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.

von длинний зелёний тролль (Gast)


Lesenswert?

>  Also der Regler muss sein I-Anteil selber anpassen können.

Was hast du denn bisher schon erreicht und was ist nicht gut daran.

von Wolfgang (Gast)


Lesenswert?

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.

von Anfänger93 (Gast)


Lesenswert?

Kai schrieb:
> Um was genau zu erreichen?

Es geht darum eine veränderbare Rollendurchmesser (in einer 
Wickler-Applikation) zu kompensieren.

von Anfänger93 (Gast)


Lesenswert?

aSma>> schrieb:
> Dein Regler ist vollkommen unvollständig!

Wieso ist es nicht volkommen? was fehlt noch?

von Anfänger93 (Gast)


Lesenswert?

длинний зелёний тролль 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.

von Christian K. (Gast)


Lesenswert?

Beim Ändern des I-Anteils Ki darf sich die Regelgrösse nicht sofort mit 
ändern. Denk mal ein bisschen nach, ist nicht so schwer zu 
implementieren.

von Vincent H. (vinci)


Lesenswert?

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. ;)

von Maik S. (yellowbird)


Lesenswert?

Welcher Wert ist die Mess-/Eingangs-/Steuergröße und ist diese für die 
Anwendung korrekt ?

von Walter L. (Gast)


Lesenswert?

Hallo, zunächst, wo wird e und esum berechnet? Habe ich etwas übersehen? 
VG Walter

von Stm M. (stmfresser)


Lesenswert?

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?

von Nils (Gast)


Lesenswert?

Stm M. schrieb:
> Was zum Geier ist ein "adaptiver" PI Regler?

Zur Laufzeit werden die Reglerparameter Kp und Ki angepasst.

von Rainer V. (Gast)


Lesenswert?

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!

von Pandur S. (jetztnicht)


Lesenswert?

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.

von Christian K. (Gast)


Lesenswert?

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.

von heinz (Gast)


Lesenswert?

Wenn die Regelung stabil ist, dann ist eSum * Ki der Ausgabewert. e = 0 
-> e*Kp = 0

Wenn man den Ki ändert
eSum = eSum / KiNeu * Ki
Ki = KiNeu

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.