|
|
3D-Doppelpendel, numerische Probleme? |
|
Zoidberg |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 06.08.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.08.2012, 09:19
Titel: 3D-Doppelpendel, numerische Probleme?
|
|
|
|
|
Zum Modell:
Ich will ein Doppelpendel in 3D simulieren. Also ein sphärisches Doppelpendel. Als Koordinaten habe ich Kugelkoordinaten verwendet, also hat man pro Masse zwei Winkel als Freiheitsgrade. Theta1 und Theta2 sind dabei jeweils die Pendelwinkel (Quasi Elevation) und Phi1 und Phi2 die Winkel, die die Drehung um die Hochachse beschreiben (Quasi Azimuth). Wenn das Pendel einfach nach unten hängt, sind die beiden Theta also = 0. Und eine reine Auslenkung von Phi ist also nicht möglich, bzw. bringt nicht, da die Stäbe und die Massen als dimensionslos angenommen werden (bzw. Stab nur Dimension in Längsrichtung). Die Bewegungsgleichungen sind mit ziemlicher Sicherheit richtig, meine Hand würde ich dafür allerdings nicht ins Feuer legen. Massenlose Stäbe, keine Dissipationen, Koordinatensysteme einmal am Aufhängepunkt des Pendels und der Ursprung des zweiten Koordinatenkreuzes ist die erste Masse (In diesem System wird dann der Ort der zweiten Masse beschrieben).
Insgesamt entsteht ein relativ kompliziertes, nichtlineares Gleichungssystem, aber damit müsste Simulink doch eigentlich umgehen können, wenn man es richtig umsetzt, oder?
Zur Simulation:
Um das Modell jetzt zu testen, habe ich zunächst als Anfangsbedingung die Theta-Winkel der beiden Pendel ausgelenkt um zu schauen, ob die Bewegung dem eines zweidimensionalen Doppelpendel entspricht -> Kein Problem. Die Massen pendeln dabei also praktisch von +X nach -X. Jetzt lenke ich als Anfangsbedingung zusätzlich die beiden Phi winkel um Pi/4 aus. Das bedeutet, er sollte ja eigentlich von der X+pi/4 zu Y+pi/4 pendeln. Das geht auch einen Moment gut. Aber nach 4.7
. Sekunden kommt eine Fehlermeldung, dass ein Wert unendlich wird. Dabei Erreichen die Winkelgeschwindigkeit um die Hochachse irgendwann extreme hohe Werte. Der Witz ist ja, dass um die Hochachse überhaupt kein Moment auftritt. Es dürfte überhaupt keine Winkelgeschwindigkeit auftreten! Wenn ich mir die Winkelgeschwindigkeitswerte um die Hochachse im Simout angucke, habe ich die ersten 9 Zeitschritte exakt den Wert 0 und dann fängt das Drama an, auf einmal wird der Wert 0,3^-33 (Oder so ähnlich). Dieser Wert scheint sich dann wohl irgendwie aufzuaddieren.
Das Problem ist, dass ich später noch weiter modellieren will (bzw. schon habe
also mit Dissipation, Windeffekte, Reibung, etc.) und da eigenartiges Verhalten habe in gewissen Bereichen. Ich könnte mir vorstellen, dass das Fehlverhalten dann schon mit diesem Fehler zu tun hat. Das ist auch der Grund, warum ich in dem Modell nicht einfach sagen kann Okay, wenn du extrem kleine Bschleunigungswerte um die Hochachse hast, dann nimm einfach an, dass die exakt 0 sind
Nehme ich andere solver oder variiere die Toleranzen, bekomme andere Fehler: Singularitäten an den verschiedenen Stellen oder dynamisches Verhalten, dass offensichtlich WEIT von der Realität abweicht (Sprünge
und
ja, ich kann es teilweise gar nicht wiedergeben, was da für Schrott passiert)
Die Frage ist jetzt:
Kann man einigermaßen sicher sagen, dass die Fehler bzw. das eigenartige dynamische Verhalten mit den algebraic loops zusammen hängt? Wenn ja, dann müsste ich mich mal mit deren Eliminierung auseinander setzen (Unit Delays? IC-Blöcke?)
Matlabversion ist übrigens 7.10.0.499
Erläuterungen zum Anhang
Habe das Modell mal angehängt. Folgendermaßen ist es aufgebaut: Jeder Freiheitsgrad verfügt über zwei Integratoren für seine Ableitungen. All diese Größen (nullte, erste und zweite Ableitung) werden in einen MUX-Block geleitet, der dann diese Größen an FCN-Blöcke leitet, die sich daraus bedienen. In den FCN-Blöcken ist dann die Bewegungsgleichung für jeden einzelnen Freiheitsgrad. Die Bewegungsgleichung ist nach der höchsten Ableitung aufgelöst, so dass der Ausgang des FCN-Blocks in den jeweiligen ersten Integrator führt (also die zweite Ableitung des jeweiligen Winkels).
Lediglich ein paar Variablen müssten noch definiert werden (Einfach in Workspace kopieren und Enter drücken) g= 9.81, l =1
Der Const Block und seine drei Verzweigungen sind lediglich für weiterführende Modellierungen gedacht. Der Rest sind dann scopes und Simouts.
Das Modell sieht so komisch aus, weil es automatisch aus einer Matlab-File generiert wird, was es mir ermöglicht, die Anzahl der Pendel zu variieren, also mal eben 5 oder 8 Pendel etc. aneinander hängen zu können. Speziell die Übersichtlichkeit der Verbindungen leidet darunter, ich hoffe, das Modell ist trotzdem halbwegs nachvollziehbar.
Ist es eigentlich extrem Amateurhaft, wie ich das Modell aufbaue, also alle Größen in einen Mux und Gleichungen in FCN Block und dann zwei Integratoren für Ableitungen?
Falles es jemanden interessiert, kann ich auch noch die Funktion raushauen, in er die Bewegungsgleichungen generiert werden (zumindest, wie de Lagrangefunktion zusammengestellt wird, die Ableitung der Lagrangefunktion übernimmt eine Funktion aus der Matlabcentral)
Beschreibung: |
|
Download |
Dateiname: |
ExamplePendulumgoMatlab.mdl |
Dateigröße: |
37.3 KB |
Heruntergeladen: |
468 mal |
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|