Hallo zusammen, Ich bin dabei eine adaptive Regelung aufzubauen. Es handelt sich dabei um einen hydraulischen Arm, dessen Modell durch ein Parameter-Schätzverfahren rekursiv abgebildet wird. Diese Modellbildung läuft parallel als Beobachter zu dem realen System um den Regler adaptiv anzupassen. Als Regler wollte ich eine Zustands-Rückführung (State-Feedback) implementieren, jedoch stoss ich jetzt an mein Problem. Der Ausgang des Reglers wird ja additiv mit dem Eingang des Systems verknüpft. Wenn ich jetzt doch aber meine Sollgröße vorne in mein System gebe, erhalte ich ja am Ausgang die Momentan-Größe. Wo aber erhalte ich meine "Reglerausgangsgröße" sprich den Wert mit dem ich meine Stelleinrichtung betreibe? Laut einiger Literatur erhalte ich durch diese Zustandsrückführung ja schon einen geschlossenen Regelkreis. Wo ist mein Gedankenfehler? MfG Flashmaster
Moin Phillip, du machst das wie beim klassischen Regler. In deine Strecke gehen n Eingänge u und das sind deine Stellgrößen. Also den Vektor nach der Summation/Subtraktion(jenach Literatur) von K*x und der durch den Sollwert vorgegebenen Werte für u durch N*w. Kurz gesagt das was mit B im Model multipliziert wird. Stellgrößen sind hier | V w---N---+----B--+---1/s----------------- | | | | ----A-------| | | ------------K------- Model ohne Beobachter MfG Tec
> Wo aber erhalte ich meine "Reglerausgangsgröße" sprich den Wert mit dem ich > meine Stelleinrichtung betreibe? Am Ausgang des Reglers. > Der Ausgang des Reglers wird ja additiv mit dem Eingang des Systems > verknüpft. Nö. Der gemessene Wert deines zu regelden etwas wird zurückgekoppelt.
Danke erstmal für die Antworten... zu Uwe: der Ausgang des Reglers kann doch nicht die Reglerausgangsgröße sein, allein schon aus der Sicht der physikalische Einheiten. Wenn meine Stelleinrichtung einen PWM-Wert zum Beispiel erwartet, jedoch aber am Summationspunkt die Einheit der Sollgröße anliegt [m] ist das doch ein Konflikt oder? MfG Philipp
Moin Philip, Du hast glaube ich eun grundsätzliches Problem. Deine Sollgröße muss ja erst mal in die Systemeingänge umgerechnet werden, Siehe meine Zeichung, mittels Vorfiltermatrix N. Und die denn deine Sollgröße hat ja die Einheit eines Ausgangs. Beschreib mal dein System genauer. Nur als Beispiel, Drehzahlregelung eines E-Motors, Eingang ist Spannung U, Zustände sind Drehmoment T und Drehzahl Y, Ausgang ist die Drehzahl. Wenn ich jetzt die Drehzahl regeln will. Gebe ich W=1000rpm vor , rechne N*W = 0.100V/rpm*1000rpm = 100V Hinzu kommt die Regelabweichung als K*X(Zustandsvektor) also U = K*X + 100V = ~110V Das ist deine Stellgröße Das was in B reingeht, also ins System. W---N---+-U--B--+---1/s------X----------Y | | | | ----A-------| | | ------------K------- MfG Tec
>Wenn meine Stelleinrichtung einen PWM-Wert zum Beispiel erwartet,jedoch >aber am
Summationspunkt die Einheit der Sollgröße anliegt [m] ist das doch >ein Konflikt
oder?
Das umrechnen Mußt du schon machen. z.B. Du gibst vorne den Soll Druck
ins System. Im System ist nen Motor dessen Drehzahl geregelt wird. Die
Drehzahl hat nichts mit Drcuk zu tun. Das Messgerät gibt was weiß aus
PWM, Stromquelle, Spannungquelle, mechanische verformung. Das
Zurückführen mußt du dir überlegen. Und das Skalieren natürlich auch.
Danke für die Erläuterungen, Ok, es kommt so langsam Licht ins Dunkle. Ich dachte bis jetzt dieses N-Glied am Eingang sei am Schluss zur Kompensation für die stationäre Genauigkeit. Also nochmal zu meinem System: Ich habe einen hydraulischen Arm dessen Ausgangsgröße die Entfernung zum Boden ist und Eingangsgröße ist eine PWM [0 bis 1 bei mir] für das anzusteuernde Ventil. Das Umrechnen verwirrt mich jetzt aber, da ich nicht sagen kann bei 0,5 sprich 50% PWM fährt der Arm auf 2m, sondern der würde ja mit einer bestimmten Geschwindigkeit gegen den Endpunkt fahren. Beim Motor-Beispiel von euch mag das einfacher sein, da der Motor ja bei einer bestimmten Spannung sich selbst auf eine bestimmte Drehzahl einstellen wird. MfG Philipp
Moin, die Dimensionierung ist bei solch einem System mit I-Verhalten, analytisch schwer zu machen. Für N gibt es eine Formel ähnlich wie für K, ich hab sie leider nicht parat gerade. Denn du musst das Zusammenspiel von K und N betrachten. Den durch K ändert sich ja die Systemverstärkung. Falls du das Analytisch bestimmen willst musst du den stationären Fall im Sollwert betrachten. Also wie sehen die Eingänge aus für 2m konstante Auslenkung, mit deinem K im System. Wobei Rechnen im Zustandsraum ziel führender ist. MfG Tec @edit: analytisch ist das Motorbeispiel einfacher(deswegen hab ichs gewählt) aber Regelungstechnisch ist dein System besser. Was du auch machen kannst ist eine 2. volle Rückführung die ist dann einfacher zu verstehen, Nennt sich dan PI-Z-Regeler. W---+---N---+--B--+-----1/s----------Y | | | | | | -----A--------| | -----------K--------| ---------------------------- Mit diesem System erreichst du volle stationäre Genauigkeit und das Zusammenspiel von N und K wird deutlicher hoffe ich. So würde ich den System regeln auf den ersten Blick. MfG Tec
Schönen guten Morgen, Ich bin bezüglich der Berechnung des PreCompensators (das Eingangs-N-Glied) fündig geworden. Ich will das erstmal ohne die zusätzliche PI-Kaskade ausprobieren, oder ist das gleich zum Scheitern verurteilt? Wie du schon sagtest beinhaltet die Berechnung auch die Matrix des Zustandsregler im Rückführzweig. Laut Recherchen wird es folgendermaßen berechnet: N = inv(-C*inv(A-B*F)*B) , wobei A,B und C die Matrizzen des Beobachters im Zustandsraum sind und F die Reglermatrix aus dem Feedback-Pfad. Leider erhalte ich nicht so zufriedenstellende Ergebnisse. Ich habe die Regelung jetzt einmal Schritt für Schritt in Matlab aufgebaut und hier angehängt. Wer Interesse hat kann sich die ja mal anschauen. Falls einer Probleme oder Fehler sieht wäre es schön wenn er sich kurz melden würde ;) Danke schonmal MfG Philipp P.S.: Für diejenigen die sich das m-file mal anschauen, ich weiss das die Pole noch nicht optimal ausgewählt sind. Könnte/Sollte aber dennoch halbwegs funktionieren.
Moin Phillip, ohne mir dein M-File genau angesehen zuhaben, solltest du aufgrund des I-Verhaltens deiner Strecke einen Soll, Ist vergleich machen und den als Eingang benutzen, Also Ausgang auf Eingang zurück führen dann sollte das laufen. MfG Tec
Hab ich direkt mal ausprobiert und in meiner for-Schleife zu Beginn die Zeile 'r(i) = r(i) - y(i-1)' ergänzt. Sprich, ich habe den "alten" Ausgang zum aktuellen Eingang rückgeführt, wie du sagtest. Dennoch habe ich kein zufriedenstellendes Ergebnis. MfG Philipp
Moin Philip, ich hab mir dein M-File jetzt mal angesehen. Habs aber in Matlab noch nicht aus probiert. War erstmal ungewohnt für mich da ich das mit Simulink gemacht hätte. Vllt solltest du r(i) nicht über schreiben sondern eine Zwischen Größe einführen. Was ich mich aber frage was hast du denn für ein unbefriedigendes Regelergebnis. Braucht dein Regler vllt mehr iterationen um sich einzustellen? MfG Tec
Guten Morgen, r(i) überschreibe ich auch schon nicht mehr. Da du mir zu einer weiteren Kaskade geraten hattest, habe ich den Error e(i)=r(i)-y(i-1) ins Leben gerufen. Dieser geht nun weiter in das Vor-Regelglied (N), welches ich mit der oben genannten Formel berechnet habe. Durch diese weitere Rückführung habe nun aber das Problem, dass sich der Error (e) dermaßen stark aufsummiert, dass irgendwann Matlab streikt (>1e+164). Im Anhang habe ich mal die aktualisierte Version angefügt. Vielleicht sticht dir ja noch ein Fehler ins Auge. MfG Philipp
Das sich e(i) aufsummiert deutet auf einen vorzeichen Fehler hin. Der Fehler vergrößert den Fehler anstelle ihn zu kompensieren. Negiere Test weise e und siehs dir an. Falls es das nicht ist muss ein Fehler in deinem Code sein. Den e(i) kann bei konstantem Sollwert und konstantem Ausgang nicht wachsen. Es deutet alles auf eine negative Strecken Verstärkung hin. MfG Tec
Ja, das sehe ich auch so, konnte den Fehler bis jetzt dennoch nicht finden. Bei Recherchen bin gerade über ein Beispiel-Code von Matlab gestolpert, der zwar ohne Beobachter läuft aber sogar mit meinen Streckenparametern. http://www.mathworks.com/matlabcentral/fileexchange/29795-state-feedback-control Diesen Versuche ich mal zu erweitern mit meinem Recursiven Beobachter. Vielleicht ist ja ein grundlegender Fehler in meinem Code, den ich ständig überlese ;) Wenn es geklappt hat, meld ich mich direkt. MfG Philipp
Guten Morgen zusammen, Ich bin zu dem Entschluss gekommen, dass ich mit einem Zustandsregler nicht weiterkomme. Sobald ich bestimmte Pole vorgebe, die für mich sinnig erscheinen, rennt mein Matlab Programm in einen Error, da einige Matrizzen singulär werden. Der Grund liegt in der Wurzelortskurve, wenn man die sich mal anschaut. Der Precompensator am Eingang verstärkt mein System soweit, sodass das System instabil wird. Das sieht man in der Wurzelortskurve am Gain der sich ausserhalb des Einheitskreises befindet (im diskreten Fall -> Instabilität)... Bin nun verzweifelt nach der Suche nach einer anderes Lösung einen Regler adaptiv anzupassen. Hat jemand Erfahrung mit adaptiven Reglern (Self-Tuning PID oÄ)? Am liebsten auch welche die "mal eben" in Matlab zu implementieren gehen ;) MfG Philipp
moin, da kann ich dir leider auch nicht mehr weiterhelfen, such mal nach Mrac Model reference adaptive control. MfG Tec
Moin, Ja das mit dem MRAC hab ich schon gesehen. Ist auch sehr interessant, aber ich wollte gerne einen Regler den man online anpassen kann, um meinen rekursiven Algorithmus zu benutzen. Bei MRAC gibst du ja eher einen Soll-Kurvenverlauf vor, und deine Strecke soll diesen nachbilden. Da werden ja "nur" die Ausgänge von deinem Modell und der original STrecke miteinander verglichen ;) MfG Philipp
MOin, es gibt ja auch die Variante mit der Fitnessfunktion. Also normaler PID Algo anstrecke, und du bewertest das Ausregelverhalten und passt die Reglerparameter an. Habe ich aber keine Erfahrung mit. MfG Tec
Zustandsregler bedeutet ein generalisierter generischer PID, mit einer etwas groesseren Matrix. Beobachter bedeutet, die Messgroessen, die man nicht hat, aber haben moechte werden simuliert. Da sollte man sich etwas vom Balast befreien. Adaptive Regler ist was fuer Ingenieure, die gegen die Pension gehen und noch ein paar Jahre ohne Output zu verbraten haben. Juengere Ingenieure sollten etwas mehr ueberlegen und eine Funktion finden. Die moderne Elektronik erlaubt ja auch sequentiel einen Kalibrierzyklus einzufuegen, wobei man eine Groesse bestimmen kann, die ersten variabel und zweitens abhaengig von anderem Zeugs ist.
Guten Morgen zusammen, Da hast du schon Recht, dass das Thema vielleicht ein wenig weit ausgeholt ist. Dennoch muss es ja funktionieren. Ich hab ja nicht gesagt, dass ich dieses Verfahren in einer industriellen Anwendung implementieren möchte die man auch einfach mit einem PID Regler bewältigen könnte. Ok, die m-file sieht zwar im Moment so aus, aber dort wollte ich lediglich eine Simulationsumgebung schaffen. Die dort verwendete Übertragungsfunktion ist alles andere als konstant. Ausserdem ist ja auch nicht weniger als der von dir beschriebene Kalibrierzyklus ;) MfG Philipp
>>>> Adaptive Regler ist was fuer Ingenieure, die gegen die Pension gehen und noch ein paar Jahre ohne Output zu verbraten haben. <<<< Wieder mal gelungene Symbiose von Arroganz und Ignoranz. http://www.youtube.com/watch?v=5KT2BJzAwbU Cheers Detlef
Purzel schrieb: > Adaptive Regler ist was fuer Ingenieure, die gegen die Pension gehen und > noch ein paar Jahre ohne Output zu verbraten haben. Du benutzt wohl statt dessen PID Regler? Vor allem bei stark nichtlinearen Systemen, oder? Vieleicht solltest du erst mal 2 Jahre Literatur dazu wälzen ehe du eine solch <Selbstzensur, ersetzt durch: "ärmliche"> Aussage machst :-P Ich kann dir den alten Isermann empfehlen.
Nur so als Zwischeninfo, ich habe die Regelung jetzt hinbekommen. Ich werde den Code nur erst mal aufräumen müssen und verallgemeinern, dann stell ich den hier mal online. Die Isermann-Bände habe ich vor mir liegen ;), die sind echt die Bibel für dynamische Systeme mit allem drum und dran . Gruß Philipp
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.