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

Modellierung Kreiselgleichungen

 

2fast4u
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.13
Wohnort: Darmstadt
Version: 2009b
     Beitrag Verfasst am: 30.09.2013, 10:54     Titel: Modellierung Kreiselgleichungen
  Antworten mit Zitat      
Hallo,

ich soll eine Art Kreisel modellieren, der im Bild gezeigt ist. Die linke Scheibe soll mit einer Winkelgeschwindigkeit von omega3 rotieren und der Rote Pfeil soll ein Moment darstellen, der diesen Kreisel stört. Am Ende will die ich die Winkelgeschwindigkeiten und -beschleunigungen aller 3 Koordinaten haben.
Wenn ich die Eulerschen Kreiselgleichungen aufstelle, sind alle erst mal 0=0, da omega1 und omega2 null sind. Wie kann ich aber angeben, dass omega3 von anfang an konstant ist? Mit der Störung müssten dann auch omega1 und omega2 ungleich 0 sein.

Die 3-Achse geht übrigens aus der Ebene heraus.

Ich hoffe, ihr versteht was ich meine und könnt mir ein paar Tipps geben

Oder wäre das einfacher in Matlab zu modellieren und dann über ode45 lösen zu lassen?

Gruß

Modell1.jpg
 Beschreibung:
Kreisel

Download
 Dateiname:  Modell1.jpg
 Dateigröße:  24.68 KB
 Heruntergeladen:  848 mal
Modell1simulink.jpg
 Beschreibung:
Simulink Blockschaltbild

Download
 Dateiname:  Modell1simulink.jpg
 Dateigröße:  40 KB
 Heruntergeladen:  834 mal
Private Nachricht senden Benutzer-Profile anzeigen


Bibonaut
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 06.06.13
Wohnort: Berlin
Version: 2013a
     Beitrag Verfasst am: 30.09.2013, 22:12     Titel:
  Antworten mit Zitat      
Hi 2fast4u

ich würde es an deiner Stelle lieber in Matlab machen. Du siehst ja, wie groß dein System in Simulink schon für diese eine Gleichung ist. Da geht dann auch schnell der Überblick verloren, wann du was berechnest etc.

Ich glaube, dein Problem ist das Einbringen der Störkraft und die Vorstellung von den Winkelgeschwindigkeiten. Denn die Winkelgeschwindigkeiten in deinem Modell sind nicht die Winkelgeschwindigkeiten um die drei Achsen, wie sie gezeigt werden, sondern die im körperfesten Koordinatensystem und das rotiert...

Ich würde es so machen:
Ich drehe vom Inertialsystem in der Reihenfolge
1. Drehung um die x-Achse,
2. Drehung um die y-Achse,
3. Drehung um die z-Achse

x zeigt bei mir nach rechts, y nach oben und z aus der Ebene heraus.

Die Drehmatrizen um die x=x',y=y',z=z' Achsen sind A_01 A_12 A_23 = A_2K

Ich will den Drallsatz (Eulersche Gleichungen) im körperfesten Koordinatensystem auswerten. Der ist:

<br />
\Theta_{S,K} \times \dot\omega_{0K,K} = M_{S,K}-\omega_{0K,K}\times T_{S,K}\omega_{0,K,K}
<br />
(Eine Auswertung im KS mit Index 2 wäre auch möglich, da es eine Scheibe ist und sich das Massenträgheitsmoment sich bei der Drehung um die z-Achse nicht ändert)

Das Drehmoment gebe ich aber auf die y=y' Achse, die aber nicht die y-Achse des körperfesten Koordinatensystems ist, deswegen muss ich das Moment auf das Körperfeste KS umrechnen:

<br />
M_{S,K} = A_{2K}^T \cdot \begin{bmatrix} 0 \\ M_{y,2} \\ 0 \end{bmatrix}
<br />
Wenn ich den Drallsatz mit dem Solver berechne, berechnet mit die Funktion nur die Winkelbeschleunigung, die zur Winkegeschwindigkeit integriert wird. Ich erhalte dann die Winkelgeschwindigkeit im körperfesten Koordinatensystem. Um aber meine Winkel an den drei Achsen zu erhalten, muss ich die Winkelgeschwindigkeit auch noch integrieren bzw. vor dem Integrieren mir meine Winkelgeschwindigkeiten an meinen Drehachsen berechnen:

<br />
\begin{bmatrix} \dot\alpha \\ \dot\beta \\ \dot\gamma\end{bmatrix} = \frac{1}{cos\beta}\begin{bmatrix} cos\gamma & - sin\gamma & 0 \\ sin\gamma cos\beta & cos \gamma cos \beta & 0 \\ -cos \gamma sin \beta & sin\gamma sin \beta & cos \beta \end{bmatrix} \cdot \omega_{0K,K}
<br />
Das ist die kinematische Differentialgleichung.
Du integrierst jetzt die Winkelbeschleunigung im körperfesten KS und die drei berechneten Winkelgeschwindigkeiten. Dann erhälst du deine Winkel für die Koordinatentransformation des Moments und die Winkelgeschwindigkeit, die du wieder für den Drallsatz brauchst.


Ich hoffe ich konnte dir helfen. Könnten sich Fehler eingeschlichen haben.

Das hier ist ein schönes Buch mit vielen Matlab Beispielen:
"Grundlagen und Methodik der Mehrkörpersimulation: mit Anwendungsbeispielen, von Georg Rill (Autor), Thomas Schaeffer (Mitarbeiter)"

Beste Grüße
Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
2fast4u
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.13
Wohnort: Darmstadt
Version: 2009b
     Beitrag Verfasst am: 11.10.2013, 09:16     Titel:
  Antworten mit Zitat      
Ok, dass das die Kreiselgleichungen nur für das körperfeste System gelten, hatte ich nicht bedacht.

So wie das aber verstehe will ich zum Teil die Winkelgeschwindigkeiten um die körperfesten Achsen. Und zwar um die Hochachse, an die das Moment konstant angreift (sich also mit bewegt) und um die Achse, die anfangs aus der Ebene heraus zeigt (bei dir z-Achse). Wobei sich omega3 ja nicht ändert.

Wenn ich in Simulink die Kreiselgleichungen, wie oben zu sehen, simuliere, bekomme Schwingungen von omega um die um 1 und 2 Achse und ein konstantes omega3. Was ja alles Sinn macht. Wenn ich das aber über Matlab versuche bekomme ich sinnlose Ergebnisse. Das steigt omega3 nur exponentiell an und omega1 und omega2 bleiben null.

Ich mache das in Matlab wie folgt:

Code:
function [w,dw] = Modell3(t,w)

% Eulersche Kreiselgleichungen

% Konstanten:
theta1=0.5;
theta2=0.5;
theta3=0.7;
M1=5;

dw(1)=(M1+w(2)*w(3)*(theta2-theta3))/theta1;
dw(2)=(w(3)*w(1)*(theta3-theta1))/theta2;
dw(3)=(w(1)*w(2)*(theta1-theta2))/theta3;


Und dann lass ich es lösen über:
[t,w] = ode45(@Modell3,[0,5],[0;0;10]);

Mir gehts jetzt erst mal darum, warum ich bei Matlab ein komplett anderes Ergebnis erhalte als mit Simulink. Was mache ich falsch?

Ich hoffe, dass ist alles verständlich, was ich meine.
Private Nachricht senden Benutzer-Profile anzeigen
 
Bibonaut
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 06.06.13
Wohnort: Berlin
Version: 2013a
     Beitrag Verfasst am: 11.10.2013, 13:29     Titel:
  Antworten mit Zitat      
Hi,

ich glaube deine Function gibt die falschen Werte zurück.

Du musst alle Variablen in einen Vektor x schreiben.
D.h. willst du ddw und dw zu dw und w integrieren, musst du zum Beispiel dx = [dw;ddw] schreiben, x0 ist dann x0 = [w;dw]

Deine Funktion deklarierst du dann so:
function dx = odefun(t,x)

Viele Grüße!
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.