Positionsregelung DC Motor < Regelungstechnik < Ingenieurwiss. < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 23:20 Di 15.05.2012 | Autor: | kappen |
Hallo Leute,
ich möchte eine DC Motor Positionsregelung bauen und habe einige konkrete Fragen zur Vorgehensweise.
Ich möchte zuerst ein möglichst realistisches Modell erstellen, daran einen Regler anpassen und die Ergebnisse auf die echte Strecke übertragen.
Ausgangsbasis ist ein DC Motor, an dem ein inkrementeller Encoder befestigt ist. Der Encoder hat 5000 counts pro Umdrehung und gibt mir nach Auswertung durch einen µC die Position bzw die Geschwindigkeit zurück.
Ich habe ein Modell mit den üblichen DGLen erstellt. Im Gegensatz zu vielen Fällen, die man im Internet findet möchte ich die Reibung nicht vernachlässigen (da der Motor teilweise nur um wenige Grad bewegt werden soll spielt die Haftreibung definitiv eine Rolle - außerdem möchte ich fachlich weiter kommen). Das erste Problem dabei: Selbst wenn ich die Reibung konstant annehme (ich weiß, dass sie das nicht ist) kann ich im Laplace Bereich keine Übertragungsfunktion ermitteln, denn die Funktion hat folgende Form (die Parameter sind nur Konstanten):
Sollfunktion: [mm] $G(s)=\frac{\Phi(s)}{U_{Anker}(s)}$
[/mm]
Stand der Dinge: $U(s)=s [mm] \cdot a(M_L+M_R) [/mm] + [mm] b(M_L+M_R)+\Phi (s^3 [/mm] c [mm] +s^2 [/mm] d +s e)$
Ich kann also nicht geeignet Umformen. Das ist uns in der Uni noch nie untergekommen - was macht man da?
Für vernachlässtige Reibung (ML und MR sind das Last- bzw das Reibmoment) erhält man eine Ü-Funktion.
Zweite Möglichkeit war also der Zustandsraum:
[mm] $\frac{d}{dt}\begin{pmatrix} i \\ \phi \\ \ddot \phi \end{pmatrix} [/mm] = [mm] \begin{pmatrix} -a & 0 & -b \\ 0 & 0 & 1 \\ c & 0 & 0 \end{pmatrix}\begin{pmatrix} i \\ \phi \\ \ddot \phi \end{pmatrix}+\begin{pmatrix} d \\ 0 \\ -M_L-M_R \end{pmatrix}u(t)$
[/mm]
Dabei sind die a,b,c,d,e usw andere Konstanten als oben!
Um für verschwindende Anfangsbedingungen die Übertragungsfunktion zu erstellen, benötige ich die Inverse der Systemmatrix. Blöderweise ist die Determinante der Matrix = 0 -> Keine Inverse. Komme ich auch nicht weiter mit.
(Lustigerweise kann matlab per tf() trotzdem die Übertragungsfunktion aus dem Zustandsraummodell casten. Wie funktioniert denn das??)
Da ich also in matlab alleine nicht weiter kam, habe ich die Strecke in simulink nachgebaut. Das klappt auch ganz gut, das Verhalten ist plausibel und entspricht etwa dem des echten Motors (abgesehen von der noch nicht eingebauten (nichtlinearen..) Reibung, die ich per Lookup Table implementieren möchte).
Nur bei der Simulink Lösung ist das Problem, dass ich das Modell nicht als geschlossene Funktion angeben kann, ich kann also nicht auf all die tollen Tools von Matlab zurückgreifen, wenn es an die Reglerauslegung geht (sisotool zum Beispiel). Oder funktioniert das doch? Ich verstehe nämlich sonst den Sinn von Simulink nicht, zumindest was Regelungsaufgaben angeht.
Ich bin wie ihr seht etwas am schwimmen. Bisher hatte man eine Strecke, einen Regler, hat ein paar Parameter ausgerechnet und war fertig. Dass es so einfach in der Realität nicht geht war klar, aber dass ich z.B. noch nicht einmal die Übertragungsfunktion darstellen kann wundert mich dann doch.
Gehe ich also falsch an die Sache heran?
Ich habe die Frage so ähnlich bereits im Matlab Forum gestellt, dort aber bisher noch keine Antworten erhalten.
Vielen Dank für eure Hilfe,
kappen
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:20 Fr 25.05.2012 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|