Hallo erstmal. Hat von Euch schon einmal jemand einen selbstoptimierenden Regler implementiert und kann mir ein Codebeispiel oder ähnliches zeigen oder hat mir einen weiterführenden Link? Mein PID-Algorithmus funktioniert einwandfrei, die PID-Parameter habe ich über die Sprungantwort mit einem Schreiber ermittelt. Wie kann man das jetzt in Software im Controller machen? Bei den Standardverfahren muß man ja immer die Sprungantwort aufzeichen und dann die Wendetangente anlegen. Bei einer langsamen Temperaturregelstrecke kommen da ja einiges an Werte zusammen un der Wendepunkt ist auch nicht immer einwandfrei zu erkennen. Wie machen die das bei Industriereglern? Ich hoffe, jemand kann weiterhelfen, danke vorab. Gruß Stefan
Vergiss Ziegler Nichols und ähnliche Verfahren, die liefern gerade mal eine stabile Regelung, mehr aber auch nicht. Wenn du sowiso nen digitalen Regeler entwirfst solltest du dich mit Online-Identifizierungsverfahren auseinandersetzen. Stichwörter: RLS Filter, Kalman Filter. Auch PID ist in ner digitalen Regelung nicht unbedingt erste Wahl, kommt aber auf die Strecke an. Was für nen Controller und welche Programmiersprache benutzt denn du?
Hallo, da gibts ein Verfahren nach Ziegler Nichols. Man Stellt den D und I-Anteil auf 0. Der P-Anteil wird solange erhöht, bis sich auf einen Sprung eine Schwingung einstellt. P hat dann den Wert Kschwing. Die Periodendauer Tschwing der Schwinging muß gemessen werden. Dann wird der PID-Anteil wie folgt eingestellt: P-Anteil: K = 0.6*Kschwing D-Anteil: Tn = 0.5*Tschwing I-Anteil: Tv= 0.12*Tschwing s. auch http://www.inf.fh-dortmund.de/personen/professoren/roehrig/SS05/pi/pi18.pdf unter "Closed Loop Method" Gruß Wolfgang -- www.ibweinmann.de Brushless Development Kit - für den Brushlessinteressierten
Habe das ganze bis jetzt mit Pascal51 auf einem AT89C51ED2 ausprobiert. Das ganze war ein Board aus einem anderen Projekt, es hatte schon AD-Wandler und Display drauf und hatte als Ausgang eine funktionierende Phasenabschnittsteuerung. Geregelt werden sollen Temperaturreglestrecken(2. Ordnung)
@Wolfgang Klingt sehr interessant! Aber welche Einheit muss Tschwing haben ? Sekunden, Minuten... ? Bei meinem Regler (Mischermotoransteuerung für die Vorlauftemperatur einer Heizungsanlage) würde ich so vom Gefühl her auf folgende Werte kommen: Kschwing = 150 Tschwing = 120s Daraus ergäben sich folgende Werte: Kp = 90 Ki = 14,4 Kd = 60 Ist das realistisch ? Meine Regler implementierung sieht im moment folgendermaßen aus:
1 | e=get_heizung_soll() - get_fuehler(NTC_HEIZUNG_VORLAUF); |
2 | new_counter = abs((70 * e) + (60 * (e-e_old))); //Stellgröße = |
3 | Regelverstärkung * Regelabweichung |
4 | e_old=e; |
Je nach vorzeichen von e wird die Motorrichtung nach auf oder zu geschaltet, und der Motor so lange entsprechend new_counter aktiviert. Wie man sieht handelt es sich dabei "nur" um einen PD-Regler mit Kp=70 und Kd=60, weil ich nicht wusste wie man einen I-Anteil implementiert. Vielleicht weiß das hier gerade jemand. Noch was: Für Werte new_counter < 100 starte ich den Motor garnicht, im ein ständiges nervöses Takten zu unterdrücken. Sollte ich in so einem Fall dann e_old (und ggf. noch die Hilfsvariable für den I-Anteil?) setzen ? Gruß Stefan
Hallo Stefan, ein I-Anteil ist für diesen Regler nicht erforderlich da der bereits durch das Motor-Stellventil realisiert wird. Vielleicht mal nach Dreipunkt-Schrittregler suchen, so nennt sich die Variante Regler für diese Anwendung. Dieter
@Thomas: Vielen Dank, habe mal kurz nach Deinen Stichworten gegoogelt, muß mich erst durch die Fülle an Theorie durcharbeiten. @Wolfgang: Das Ziegler-Nichols-Verfahren kenne ich, so habe ich bisher die Parameter der Reglestrecke ermittelt. Der Regelalgorithmus hat damit auch ganz gut funktioniert. Ich wollte eigentlich, daß der Regler die Parameter aus der Sprungantwort bzw. aus der Schwingungsdauer selbst ermittelt, so wie es die käuflichen Regler auch tun. Man kommt aber schnell auf so gróße Datenmengen, daß ein Controller die nicht mehr schluckt. Stefan
Hallo Stefan, der AT89C51ED2 könnte für RLS und co. ein wenig schwachbrüstig sein, weil unter anderem auch eine inverse Matrix gebildet werden muss. Andererseits müssen Temperaturregelungen eh nicht besonders schnell sein. Arbeitest du mit MATLAB? Wenn ja dann kann ich dir mal ein paar Beispiele schicken, in meiner Diplomarbeit habe ich unter anderem einen adaptiven und einen selbstoptimierenden Regler erstellt. Die Ergebnisse wahren echt beeindruckend, allerdings hatte ich auch deutlich leistungsfähigere Hardware zur Verfügung. Zu dem Schwingungsverfahren nach Ziegler Nichols: In der Praxis ist es eigentlich selten eine gute Idee so ein System in Schwingung zu versetzen, kommt halt immer auf die Strecke an. Als gute Lektüre kann ich empfehlen: http://www.amazon.de/gp/product/0201175452/028-8609858-7679704?v=glance&n=52044011
moin moin,
@Stefan K.
> Habe das ganze bis jetzt mit Pascal51 auf einem AT89C51ED2
welches Pascal51 und woher bekommt man das?
Mit Gruß
Pieter
@Thomas wenns ok ist, dann wäre ich interessiert an den Beispielen.(Hab Matlab).Email s.o. Schon einmal danke im vorraus ! Thorsten
@Thomas: Leider habe ich kein Matlab, habe bisher immer Scilab benutzt, inwieweit die sich ähnlich sind, kann ich nicht sagen. Klar ist das Ziegler-Nichols-Verfahren in der Praxis meist untauglich - insbesondere bei Temperaturregelprozessen. Ich habe meistens mit der Sprungantwort und einem Schreiber gearbeitet. Deinen Buchtipp muß ich mir mal genauers anschauen. @Pieter: http://www.ksc-softsys.com/ Stefan
Hallo, es sind zwar einige Jahre rum, aber das Thema rundum adaptive Regelung ist weit nicht abgeschlossen :) Auch ich bin gerade an meiner Masterarbeit dran. Das Thema beschäftigt sich ebenfalls mit Optimierung von (PID) Reglern. Ich habe historische Messdaten/ Prozessdaten wie Führungsgröße, Regelgröße etc. vom geschlossenen Regelkreis. Bekannt sind auch die derzeit eingestellte Reglerparameter. Ich habe mehrere Lösungsansätze bereits probiert, doch sie liefern nicht immer optimale Eigenschaften. 1.Wendetangete auf die Sprungantwort des geschlossenen Regelkreises 2.T-Summen-Regel auch aufs geschlossene Regelkreis 3.Zeit-Prozentkennwert auch All diese Verfahren sind für die Anwendung auf die Sprungantwort der reinen Strecke ausgelegt. 4.Integralkriterium auf Basis eines Modells 5.Bode-Verfshren aud Basis des Modells Diese beiden Funktionieren nur dann wenn ich ein Modell bestimme, dies erfolft mittels arx, ls bzw. iv Ansätze. Nun bin ich am ende meiner Latein... vlt. kann mir jemand weiterhelfen.
Man sollte sich vor Augen halten, dass der PID, das Arbeitspferd der Regelfreunde, das Breitschwert fuer alles ist, speziell wenn sich niemand richtig interessiert, und einfach eine Loesung her muss. WEnn's halbwegs stabil ist Deckel drauf und fertig. Dabei sind die meisten Strecken nichtlinear, oder sogar nicht-kontinuierlich. zB Heizung. Mit dem Stellglied wird's nur Warm. Abkuehlung ist eine Sache der Umgebung. Adaptive Regelung bedeutet man moecht fuer alle Zeiten den Deckel drauf schrauben. Natuerlich, ohne sich mit der Strecke und dem Stellglied auseinander setzen zu wollen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.