Guten Abend zusammen, ich habe einen generell ziemlich einfach gestrickten Regelkreis, der stabil ist, wenn er quasi-kontinuierlich gerechnet wird. Sobald ich auf Integer-Werte gehe, was notwendig ist, weil der reale Aktuator nur eine endliche Auflösung bietet (Schrittmotor), bekomme ich selbstinduzierte Regelschwingungen, wie im Plot im Anhang dargestellt. Die Frequenz entspricht der halben oder einem Drittel der Abtastfrequenz, die Amplitude entspricht dem Maximum, was systembedingt bei begrenzer Beschleunigung möglich ist. a) Gibt es einen Fachbegriff für diese Art von Regelschwingungen, die durch Diskretisierungseffekte entstehen? b) Kennt jemand Fachliteratur mit einer Lösung?
:
Bearbeitet durch User
Ohne den Code zu gesehen zu haben, scheint es so, dass ein Integer bei deiner Regelung überläuft, entweder als Ausgang oder eine deiner internen Variabelen. Deswegen wäre der Code interessant. Vlt kannst du ein Minimalbeispiel posten oder selbst anstatt mit int8 mit int32 rechnen. Andere Möglichkeit ist, in float zu rechnen und dann in int zu wandeln. Damit sind deine internen Variablen genauer. Vorher prüfen ob der float auch in den int passt.
Benjamin S. schrieb: > Ohne den Code zu gesehen zu haben, scheint es so, dass ein Integer bei > deiner Regelung überläuft Das Diagramm ist aus einem Matlab-Modell meiner Regelung. Der Effekt tritt auf, sobald meine Regelung nicht mehr nur Zeitdiskret ist, sondern der Reglerausgang Wertediskret berechnet wird - Stellgröße und Regelfehler also nicht mehr beliebig klein werden können.
Walter T. schrieb: > Der Effekt tritt auf, sobald meine Regelung nicht mehr nur Zeitdiskret > ist, sondern der Reglerausgang Wertediskret berechnet wird - Stellgröße > und Regelfehler also nicht mehr beliebig klein werden können. Dann hast du wohl ein Problem mit deiner Diskretisierung. Integer-Werten können sehr wohl beliebig klein werden, nämlich genau 0. ;-)
Hi, So etwas kenne ich von der Reglerimplementierung auf einfachen Mikrocontrollern (8-Bit). Ich tippe auf einen hohen Kp-Wert welcher diese "Sprünge" verursacht, ein Überlauf eines Variableninhalts wäre auch denkbar. Wenn in der Praxis so etwas aufgrund von Rauschen o.ä. auftritt behilft man sich mit einem Noise-Gate am Eingang des Messsignals. Was spricht gegen die Verwendung von float-Variablen?
Wolfgang schrieb: > nämlich genau 0 0 ist zwar klein, aber nicht beliebig. Christian F. schrieb: > Was spricht gegen die Verwendung von float-Variablen? Intern wird float genutzt. Der Aktuator und das Meßsystem verstehen aber nur Integer. Christian F. schrieb: > Ich tippe auf einen hohen Kp-Wert welcher > diese "Sprünge" verursacht Genau. Bei einer niedrigen Schleifenverstärkung bleibt das System stabil. Nur langsam. Also habe ich ein Matlab-Modell vom System gemacht. Da habe ich herausbekommen: Im zeitdiskreten, Werte-kontinuierlichen Fall hält die Regelschleife deutlich höhere Schleifenverstärkungen aus, wenn ich den D-Anteil entsprechend einstelle. Gehe ich zum zeit- und wertediskreten Bereich über, ist die "Großsignalantwort" auch noch in Ordnung, aber es entstehen hochfrequente Regelschwingungen mit kleiner Amplitude. Egal. Ich suche keine direkte Problemlösung. Ich suche Literatur.
Praxis: Werden die berechneten Werte vom Meßsystem und/oder die Stellgröße auf den Aktuator richtig gewandelt bzw. eingelesen/ausgegeben? Nur um einen Fehler im Modell auszuschließen und man irgendwelchen Geistern nachjagt. Theorie: Mir fällt dazu nur der Begriff Quantisierungsfehler ein, Bücher oder Fachaufsätze sind mir im speziellen Bezug zur Regelungstechnik dazu nicht bekannt.
Durch die Zeitdiskretisierung bekommst Du eine weitere Verzögerungszeit, die die Schwigneigung verstärkt. Je nach Lage der Zeitkonstanten verstärkt das die reale Schwingneigung oder geht im Rauschen unter. Weiterhin gibt es bei der Wertediskretisierung Grenzzyklen um Null herum. Das könnte Dein Problem sein. Besser runden oder den Quantisierungsfehler berücksichtigen (Umgangssprachlich: wenn wegen der Rundung der Aktuator 0,5 zuviel bekommt dann ist es nicht verwunderlich wenn der Messwert auch über das Ziel hinausschiesst) -> Nichtlinearer Regler: bei kleiner Abweichung die Verstärkung zurücknehmen (Aber dann hat man das Problem, dass man die Stabilität über den ganzen Zustandsbereich prüfen muss - irgendwo könnte der Regler wieder schwingen ...) Wenn Du schon ein Matlabmodell hast kannst Du ja mit Zeitdiskretisierung und Wertediskrtisierung und nichtlinearem Regler herumspielen. Als Suchschlagworte: Grenzzyklus Quantisierungsfehler digitaler Reglerentwurf digitaler Zustandsregler Dead Beat Regler Nichtlineare Regler Hysterese
Bastler schrieb: > Durch die Zeitdiskretisierung bekommst Du eine weitere Verzögerungszeit, > die die Schwigneigung verstärkt. Ja - aber die ist im zeitdiskreten Modell auch schon vorhanden. Bastler schrieb: > Weiterhin gibt es bei der Wertediskretisierung Grenzzyklen um Null > herum. Das könnte Dein Problem sein. Das ist mein Problem. Bastler schrieb: > Nichtlinearer Regler: bei kleiner Abweichung die Verstärkung > zurücknehmen Das ist mein erster, naiver Ansatz. Für den P-Anteil den Regelfehler erst dann berücksichtigen, wenn eine Toleranz überschritten wird. Das glättet die Sache zwar schön, bringt mich aber im Verständnis der Regelungstechnik nicht weiter. Bastler schrieb: > Dead Beat Regler Das ist ja hervorragendes Googlefutter. Direkt der erste Treffer liefert eine nette Erklärung und Literaturhinweise. Danke für Deinen Beitrag!
:
Bearbeitet durch User
Bastler schrieb: > Nichtlinearer Regler: bei kleiner Abweichung die Verstärkung > zurücknehmen Wenn ich mir das heute morgen nochmal durchlese, geht der Vorschlag ja über meinen naiven Ansatz hinaus: Unterhalb des erlaubten Regelfehlers die proportionale Verstärkung nicht komplett auf Null setzen, sondern nur so weit herunter, daß die Regelschwingungen verschwinden. Das hat zwar dann einen weiteren Einstellparameter, aber den netten Nebeneffekt, daß der I-Anteil nicht mehr allein dafür verantwortlich ist, daß der Regelfehler auf Null kriecht. Das Stichwort "Dead Beat Regler" hat mich übrigens auf "Digitale Regelungstechnik" Braun, Anton, 1997 gestoßen. Das ist hier in der lokalen Uni-Bibliothek verfügbar und das werde ich mir mal zu Gemüte führen. Zumindest die Vorschau ist sehr vielversprechend.
:
Bearbeitet durch User
Walter T. schrieb: > Wenn ich mir das heute morgen nochmal durchlese, geht der Vorschlag ja > über meinen naiven Ansatz hinaus: Unterhalb des erlaubten Regelfehlers > die proportionale Verstärkung nicht komplett auf Null setzen, sondern > nur so weit herunter, daß die Regelschwingungen verschwinden. Das hat > zwar dann einen weiteren Einstellparameter, aber den netten Nebeneffekt, > daß der I-Anteil nicht mehr allein dafür verantwortlich ist, daß der > Regelfehler auf Null kriecht. dein Problem ist doch imho, dass du genauer regeln willst als dein Quantisierungsfehler es erlaubt. Selbst wenn du die Verstärkung reduzierst, wird der Schrittmotor weiter um die Sollposition herum pendeln müssen - weil er den exakten Wert der Sollposition einfach nicht trifft. Auch mit perfektem Regler kannst du dann nur im zeitlichen Mittel der Pendelbewegung der Sollposition möglichst nahe kommen. Weniger als ein Pendeln um +-1 Schritt wird also kaum gehen können, wenn du nicht innerhalb des Toleranzbands die Nachregelung ganz abschaltest. (Dass es in deiner Messung teilweise um +-2 Schritte schwankt sollte sich noch etwas verbessern lassen.) Ich nehme mal an, die "grobe" Quantisierung in deiner Messung (ca. "16" auf der y-Achse) entspricht der Schrittweite deines Steppers, und die überlagerte "feine" Quantisierung (ca. "2" auf deiner y-Achse) kommt vom Positionssensor, oder?
Achim S. schrieb: > dein Problem ist doch imho, dass du genauer regeln willst als dein > Quantisierungsfehler es erlaubt. Nö, eigentlich nicht. Die Regeltoleranz beträgt 2..4 Vollschritte, entsprechend 32 Mikroschritten im Diagramm. Wenn die Regelung ausreichend schnell ist und die Regelschwingungen verschwinden, bin ich glücklich. Der Regler sollte irgendwann nur mit dem regeln aufhören, damit ich in den Stromsparmodus schalten kann.
:
Bearbeitet durch User
Ich pushe nochmal. Das Ursprungsproblem - die Grenzzyklen mit der halben Abtastfrequenz wurden durch den zweistufig-nichtlinearen P-Anteil zwar behoben, aber an Literatur bin ich immer noch interessiert.
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.