WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

einige Fragen zur DC Motor Regelung

 

deadball

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2012, 16:00     Titel: einige Fragen zur DC Motor Regelung
  Antworten mit Zitat      
Hallo Leute Smile

Ich bin gerade dabei, ein möglichst exaktes Modell eines DC Motors zu erstellen.
Ich habe mehrere Kennlinien aufgenommen und die Konstanten bestimmt, ebenso das Drehzahlabhängige Reibmoment (als Wertetabelle) etc.

Nun möchte ich endlich an die Modellierung in matlab/Simulink gehen, stoße aber auf ein paar Probleme:

Meine Übertragungsfunktion soll so aussehen: G(s)=\frac{\Phi(s)}{U_{Anker}(s)}. Ich werfe also meine Gleichungen (Drallsatz, Maschensatz etc. Bei Bedarf schreibe ich die hier auf, aber sind halt etwas länger) zusammen, bis nur noch U und Phi vorkommen. Das Problem jetzt:
zwei Terme sind nicht von Phi abhängig, ich kann somit die Übertragungsfunktion nicht aufstellen:


<br />
U(s)=s \cdot a(M_L+M_R) + b(M_L+M_R)+\Phi (s^3 c +s^2 d +s e)
<br />

a,b,c,d,e sind dabei Konstanten, die sind erstmal unwichtig. ML und MR sind das Last- bzw das Reibmoment. Das Reibmoment habe ich wie gesagt vorher in einem Versuch bestimmt, das ist leider ziemlich Drehzahlabhängig und nicht linear. Wird also schwierig das in der Übertragungsfunktion zu modellieren. Daher nehme ich erst einmal ein konstantes Moment an.
Aber wie ihr seht kann ich nur meine Übertragungsfunktion 3. Ordnung bilden, wenn ML+ML=0 sind. Kann das sein? Ich kann doch zumindest die Last nicht einfach vernachlässigen.

Wenn ich das Zustandsraummodell bilde kann ich ML und MR natürlich mit einbeziehen, wenn auch nur konstant. Davon kann matlab auch schöne Plots zeichnen und per tf kann ich das Zustandsraummodell auch in eine Übertragungsfunktion (tf) casten.
Aber: meine Systemmatrix ist blöderweise nicht regulär. Ich kann also nicht per Hand aus der Matrix meine Übertragungsfunktion bilden. Matlab schon. Wie geht das?
Das Zustandsraummodell sieht folgendermaßen aus:


<br />
\frac{d}{dt}\begin{pmatrix} i \\ \phi \\ \ddot \phi \end{pmatrix} = \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)
<br />

Die Konstanten sind nicht die selben wie oben!

Wie ihr seht ist die Matrix nicht invertierbar, die Determinante ist 0. Wie macht matlab das dann?

Kann doch nicht sein, dass ich für einen einfachen DC Motor mit Reibung/Last nicht die Übertragungsfunktion aufstellen kann?

Mein nächster geplanter Schritt ist es, den ganzen Spaß in Simulink darzustellen. Ich gehe davon aus, dass simulink nicht aus einem komplizierten Blockschaltbild die Übertragungsfunktion generieren kann, oder? Werde also selber per Blockschaltbildreduktion dran gehen dürfen.

Ich freue mich über Antworten, vielen Dank im Voraus.

Mfg,
deadball


EliteTUM
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 70
Anmeldedatum: 21.04.11
Wohnort: München
Version: ---
     Beitrag Verfasst am: 16.05.2012, 15:48     Titel:
  Antworten mit Zitat      
ich halte mich kurz und beziehe mich mal "nur" auf das Problem mit dem Zustandsraummodell:

JA, die Dynamik-/Systemmatrix A ist NICHT invertierbar. Aber beim Berechnen der Transferfunktionen invertierst du ja nicht A, sonder (sI-A). (vgl. Wiki )

Das ganze per Hand berechnen ist in meinen Augen oft Zeitverschwendung Smile Ich bin faul und lasse das wenn möglich MatLab und die Symbolic Toolbox (falls vorhanden) machen.

Numerisch bekomme ich folgende Beispielwerte:


Code:

% numerisch


a = 1; b = 2; c = 3; d = 4; M_L = 5; M_R = 6;

A = [-a, 0, -b; 0, 0, 1; c, 0, 0];

b = [d; 0; -M_L-M_R];

C = eye(3);

d = zeros(size(C,1),size(b,2));

mySys = ss(A,b,C,d)

myTF = tf(mySys)
 


Ergebnis:

Code:

Transfer function from input to output...
       4 s + 22
 #1:  -----------
      s^2 + s + 6
 
         -11 s + 1
 #2:  ---------------
      s^3 + s^2 + 6 s
 
       -11 s + 1
 #3:  -----------
      s^2 + s + 6
 


Mit der Symbolic Toolbox:

Code:

% symbolisch

syms a b c d s M_L M_R

A = [-a, 0, -b; 0, 0, 1; c, 0, 0];

b = [d; 0; -M_L-M_R];

C = s * eye(3);
C = C ./ s;

d = s * zeros(size(C,1),size(b,2));

G = C * inv( s * eye(size(A)) - A ) * b  + d;
 


Ergebnis:

Code:

>> pretty(G(1))

        d s         b (M_L + M_R)
  -------------- + --------------
   2                2
  s  + a s + b c   s  + a s + b c
>> pretty(G(2))

         c d          (a + s) (M_L + M_R)
  ----------------- - -------------------
   3      2             3      2
  s  + a s  + b c s    s  + a s  + b c s
>> pretty(G(3))

        c d        (a + s) (M_L + M_R)
  -------------- - -------------------
   2                   2
  s  + a s + b c      s  + a s + b c
 


Achtung, schaut nach Darstellungsfehlern aus. In LatexCode (lang lebe die Latex Funktion von Matlab Very Happy )


<br />
\frac{d\, s}{s^2 + a\, s + b\, c} + \frac{b\, \left(M_{L} + M_{R}\right)}{s^2 + a\, s + b\, c} \\
<br />
\frac{c\, d}{s^3 + a\, s^2 + b\, c\, s} - \frac{\left(a + s\right)\, \left(M_{L} + M_{R}\right)}{s^3 + a\, s^2 + b\, c\, s} \\
<br />
\frac{c\, d}{s^2 + a\, s + b\, c} - \frac{\left(a + s\right)\, \left(M_{L} + M_{R}\right)}{s^2 + a\, s + b\, c}
<br />
_________________

- EliteTUM
_____________________________________
Private Nachricht senden Benutzer-Profile anzeigen
 
vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2012, 12:36     Titel:
  Antworten mit Zitat      
Hallo,

auch wenn OffTopic, aber ich hätte mal eine Frage an EliteTUM bzgl. der Latex Darstellung. Was ist die Latex Funktion von Matlab und wo finde ich diese?

Vielleicht kann ich doch noch was zu deinem Problem beisteuern: Wenn du mit der Übertagungsfunktion arbeiten möchtest, dann must du mMn mit zwei Eingängen arbeiten, U und Ml. Mr muss dann innerhalb deines Systems auftauchen (in Abhängigkeit der Drehzahl). Auch bei deiner Darstellung im Zustandsraum würde ich das Lastmoment nicht in der Eingangsmatrix modellieren, sondern einen zweiten Eingang vorsehen...

Mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
EliteTUM
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 70
Anmeldedatum: 21.04.11
Wohnort: München
Version: ---
     Beitrag Verfasst am: 21.05.2012, 13:25     Titel:
  Antworten mit Zitat      
Hi,

wenn du die Symbolic Toolbox hast, dann kannst du symbolische Objekte direkt in Latex darstellen lassen. Gut, wenn du z.B. eine Rosenbrock-Matrix symbolisch berechnen lässt oder ähnliches. Einfach den Code in dein Latex-Dokument packen und fertig Smile

Probier mal folgenden Code, dann siehst du wie das ganze klappt:

Code:
% symbolisch

syms a b c d s M_L M_R

 A = [-a, 0, -b; 0, 0, 1; c, 0, 0];

 b = [d; 0; -M_L-M_R];

 C = s * eye(3);
 C = C ./ s;

 d = s * zeros(size(C,1),size(b,2));

 G = C * inv( s * eye(size(A)) - A ) * b  + d;
 
 
pretty(G(1))

pretty(G(2))

pretty(G(3))



latex(G(1))

latex(G(2))

latex(G(3))


Wie gesagt, NUR für die Symbolic Toolbox und symbolische Objekte. Wenn du eine normale Matrix mit Zahlenwerten in Latex umkonvertieren lassen willst, dann empfehle ich die Funktion "matrix2latex". Findet sich auf der Fileexchange Seite von Mathworks.
_________________

- EliteTUM
_____________________________________
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.