Laufkatze mit pendelnder Last - einfache Berechnung mit Matlab
Matlab (einfach)  |   Matlab-Event-Strategie  |   Simulink  |   Runge-Kutta  |   Animation

Aufgabe


Laufkatze mit pendelnder Last

Eine Laufkatze (Masse mK) trägt eine Last (Masse einschließlich Anhängevorrichtung: mL, Massenträgheitsmoment bezüglich des Schwerpunktes S: JL). In der skizzierten Ruhelage beginnt für eine kurze Zeit Δt die konstante Antriebskraft F0 zu wirken, die danach wieder abgeschaltet wird. Nach dem Zurücklegen der Strecke a stößt die Laufkatze auf einen elastischen Puffer (Federzahl c).

Die Bewegung von Laufkatze und Last soll, beginnend aus der Ruhelage, für die ersten 10 Sekunden analysiert werden.

Gegeben:

mK = 100 kg ;  JL = 400 kgm2 ;  lS = 4 m ;  F0 = 2000 N ;
mL = 500 kg ;  c = 200000 N/m ;  Δt = 1 s ;  a = 5 m .

Die Aufgabe wird in den Kapiteln "Prinzipien der Mechanik" und "Verifizieren von Computerrechnungen" behandelt.

Bewegungs-Differenzialgleichungen, Vorbereitung der Matlab-Rechnung

Generalisierte Koordinaten

Die Besonderheit dieser Aufgabe besteht in dem Eintreten von "Ereignissen" (Abschalten der Antriebskraft, Zu- und Abschalten einer Feder). Man erfasst sie, indem an die Stelle der Kraft F0 die zeitabhängige Kraft Ft tritt und die Federkonstante c durch ct ersetzt wird:

Zeitabhängige Antriebskraft, zeitabhängige Federzahl

Unter Verwendung der nebenstehend skizzierten Koordinaten gelten folgende Bewegungs-Differenzialgleichungen (die ausführlich kommentierte Herleitung findet man im Kapitel "Prinzipien der Mechanik"):

Bewegungs-Differenzialgleichungen

Die Matlab-Solver für die numerische Integration erwarten ein Differenzialgleichungssystem 1. Ordnung. Deshalb werden die beiden neuen Variablen v und ω eingeführt:

Definition von zusätzlichen Variablen

Damit kann das Anfangswertproblem so formuliert werden, wie man es Matlab anbieten kann:

Komplettes Anfangswertproblem

Matlab-Script

Weil das Bewegungs-Differenzialgleichungssystem in den Beschleunigungsgliedern gekoppelt ist, entsteht nach dem Umschreiben auf ein System 1. Ordnung auf der linken Seite des Differenzialgleichungssystems eine "Massenmatrix" M. Matlab kann damit umgehen, man muss nur über die "options", die dem Solver (hier: ode45) übergeben werden, ankündigen, dass eine gesonderte Function diese Matrix beschreibt (hier wird für diese Function der Name Massenmatrix gewählt).

Die beiden Functions, mit denen das Differenzialgleichungssystem definiert wird (hier willkürlich Massenmatrix und RechteSeite genannt) empfangen die gleichen Werte: Zeit t und Vektor der Funktionswerte mit x(t), φ(t), v(t), ω(t), so dass gemeinsam mit den gegebenen Parametern der Aufgabenstellung alle Informationen verfügbar sind, um die aktuelle Massenmatrix und die aktuelle rechte Seite des Differenzialgleichungssystems zu berechnen und abzuliefern.

Es wird der Matlab-Standard-Solver ode45 verwendet. Weil keine weiteren Maßnahmen vorgesehen sind, um die Ergebnisse zu verifizieren, wird die "MaxStep-option" vorsichtshalber mit dem relativ kleinen Wert 0.01 belegt, der ausreichend kleine Schrittweiten erzeugen wird. Der Rest des Scripts dürfte selbsterklärend sein:

function Laufkatze ()

% Parameter (global definiert, damit Wertaenderung nur an einer Stelle erforderlich):
global mK mL JL c lS Dt F0 a g
mK = 100 ; mL = 500 ; JL = 400 ; c = 200000 ; lS = 4 ; Dt = 1 ; F0 = 2000 ; a = 5 ; g = 9.81 ;

x0    = [0 ; 0 ; 0 ; 0] ;         % Anfangswerte
tspan = [0  10] ;                 % Zeitintervall

% Integration des Anfangswertproblems:
options = odeset('Mass' , @Massenmatrix , 'MaxStep' , 0.01) ; 
[t xv]  = ode45 (@RechteSeite , tspan , x0 , options) ;

% Grafische Ausgabe von x und phi, zunaechst "Sortieren der Ergebnisse":
x   = xv(:,1) ;  % xv ist die Matrix der Ergebnisse,
phi = xv(:,2) ;  % x und phi sind Vektoren 

subplot(2,1,1) ; plot (t  , x)   , grid on , title  ('x(t)-Diagramm:')
subplot(2,1,2) ; plot (t  , phi) , grid on , title  ('\phi(t)-Diagramm:')

% ============================================================
% Funktion, die die "Massenmatrix" des Dgl.-Systems definiert: 
function M = Massenmatrix (t , xv)

global mK mL JL c lS Dt F0 a g

phi = xv(2) ;

M = [1  0        0                0        ; 
     0  1        0                0        ; 
     0  0      mK+mL        mL*lS*cos(phi) ; 
     0  0  mL*lS*cos(phi)    mL*lS^2+JL    ] ;

% ============================================================
% Funktion, die die "rechte Seite" des Dgl.-Systems definiert: 
function r = RechteSeite (t , xv)

global mK mL JL c lS Dt F0 a g

x = xv(1) ; phi = xv(2) ; v = xv(3) ; omega = xv(4) ;

if (t < Dt) Ft = F0 ;  else   Ft = 0  ;  end
if (x < a ) ct = 0  ;  else   ct = c  ;  end

b1 = mL*lS*omega^2*sin(phi)-ct*(x-a)+Ft ;
b2 = -mL*g*lS*sin(phi) ;

r = [v ; omega ; b1 ; b2] ;

Hinweis: In der Function RechteSeite sind die beiden Zeilen mit den Abfragen, ob die Antriebskraft gerade wirkt und ob gerade Kontakt mit der Feder besteht, farblich hervorgehoben. Diese besonders einfache Realisierung von "Ereignissen" ist aber prinzipiell "nicht ganz sauber", weil in jedem Integrationsschritt die Differenzialgleichungen mehrfach ausgewertet werden müssen. Eine Änderung der Parameter innerhalb eines Integrationsschrittes kann den Algorithmus der automatischen Schrittweitensteuerung so ungünstig beeinflussen, dass die Rechnung kollabiert (ein einfaches Beispiel dafür findet man hier).

Für das Laufkatzen-Problem funktioniert jedoch diese "schnelle, aber nicht ganz saubere Lösung" sehr gut. Die "saubere Variante", die die Möglichkeiten der Matlab-Event-Strategie nutzt, findet man auf der Seite "Laufkatze - Berechnung mit der Event-Strategie".

Bewegungsgesetze für Laufkatze und Last

Ergebnisse der Berechnung

Das Matlab-Script liefert als Ergebnis nur die beiden Bewegungsgesetze x(t) (Laufkatze) und φ(t) (Pendeln der Last) ab. In der nebenstehenden Graphik sieht man, dass die Laufkatze offensichtlich zweimal an die Feder stößt, bevor sie ihren Rückweg antritt und mehrmals (auch ohne äußere Krafteinwirkung) ihre Bewegungsrichtung ändert. Dieses etwas überraschende Verhalten wird hier ausführlich diskutiert.

Die nachfolgend zu sehende Animation der Bewegung zeigt jedoch die gegenseitige Beeinflussung der Bewegungen von Laufkatze und Last, so dass das Bewegungsgesetz der Laufkatze durchaus plausibel erscheint.

Download


Schnappschuss aus einer einfachen Animation

Das oben zu sehende Matlab-Script steht als Laufkatze.m zum Download zur Verfügung.

Außerdem ist eine Modifikation dieses Scripts (LaufkatzeAni.m) verfügbar, mit dem gezeigt wird, wie mit ganz einfachen Mitteln mit Matlab eine Bewegungssimulation erzeugt werden kann. Es ist nicht die oben zu sehenden Animation, sondern eine aus wenigen Linien konstruierte Bewegung, von der nebenstehend ein "Schnappschuss" zu sehen ist.