unstetige Modellierung coulombscher Reibung, Umschaltfunktion?

05/01/2011 - 13:27 von tplehn | Report spam
Hallo,
ich versuche gerade, das unstetige Verhalten coulombscher Reibung zu
simulieren. Dafür benötige ich insbesondere eine sinnige
Umschaltfunktion. Außerdem muss verhindert werden, dass die Reibung
die Masse in die Gegenrichtung bewegt, die Reibung kann die Bewegung
höchstens auf null bremsen, aber nicht umkehren.
Das Problem ist genereller natur und ist erst einmal unabhàngig von
seiner Implementierung als Simulation.
Das folgende Modelica-Codefragment müsste selbsterklàrend sein.
Anschaulich wird ein Block mit einer Feder über eine rauhe Oberflàche
geschoben.

class HelloWorld
Real s(start = 0);
Real x(start = 0);
Real dx(start = 0);
parameter Real v0 = 1;
parameter Real tau = 0.3;
parameter Real m = 1;
parameter Real c = 1;
parameter Real d = 0.3;
equation
der(s) = v0*exp(-time*tau);
der(x) = dx;
m*der(dx) = -c*(x-s)+d;

end HelloWorld;
 

Lesen sie die antworten

#1 Maximilien de Robespierre
06/01/2011 - 08:34 | Warnen spam
Am 05.01.2011 13:27, schrieb tplehn:
Hallo,
ich versuche gerade, das unstetige Verhalten coulombscher Reibung zu
simulieren. Dafür benötige ich insbesondere eine sinnige
Umschaltfunktion. Außerdem muss verhindert werden, dass die Reibung
die Masse in die Gegenrichtung bewegt, die Reibung kann die Bewegung
höchstens auf null bremsen, aber nicht umkehren.
Das Problem ist genereller natur und ist erst einmal unabhàngig von
seiner Implementierung als Simulation.
Das folgende Modelica-Codefragment müsste selbsterklàrend sein.
Anschaulich wird ein Block mit einer Feder über eine rauhe Oberflàche
geschoben.

class HelloWorld
Real s(start = 0);
Real x(start = 0);
Real dx(start = 0);
parameter Real v0 = 1;
parameter Real tau = 0.3;
parameter Real m = 1;
parameter Real c = 1;
parameter Real d = 0.3;
equation
der(s) = v0*exp(-time*tau);
der(x) = dx;
m*der(dx) = -c*(x-s)+d;

end HelloWorld;



Was Du da programmieren wolltest erschließt sich mir nicht wirklich.
Darf ich das Problem wie folgt verstehen. Ein Körper der Masse m liegt
auf einer Reibungsunterlage. An diesem Körper ist eine Zugfeder
befestigt, deren Endpunkt sich mit einer konstanten Geschwindigkeit
parallel zur Unterlage nach rechts begwegt.

Der Körper bewegt sich "stotternd" nach Rechts. Es findet ein dauernder
Wechsel zwischen Ruhereibung (Körper bewegt sich nicht) und Gleitreibung
statt. Diese Bewegung soll nun modelliert werden.

Dazu sollte man ein mathematisches Modell entwickeln bevor man sich über
Rechenalkoholismen den Kopf zerbricht

Gegeben:
Körpermasse: m
Federkonstante: c
Zuggeschwindigkeit: v
Haftreibungskoeff: u_h
Gleitreibungskoeff: u_g

fh > fg

Es wird ein Koordinatensystem mit Nullpunkt am Endpunkt der Feder
eingeführt. Die Koordinate parallel zur Unterlage in Zugricht der Feder
sei r.

Bedingung für Körper befindet sich in Ruge:
u_h*m*g >= c*r

Bedingung für Gleiten:
u_h*m*g < c*f

Anfangsbedingung:
t=0, r=0

Zeitspanne wo Körper ruht 0<= t <= t_1:
u_h*m*g = c*v*t_1 => t_1 = u_h*m*g/(c*v)

Federposition r_1: r_1 = v*t

Für t >= t_1 beginnt der Körper zu rutschen. Hierfür ist eine
Bewegungsgleichung aufzustellen. Hierfür haben wir ein zweites
Koordinatensystem, fest mit der Unterlage verbunden. Die Koordinate
lautet x, auch parallel zur Oberflàche der Unterlage in Zugrichtung.

c*v*t - u_g*m*g = m * x''
x'' = c/m*v*t - u_g*g
x' = c/m*v*t^2/2 - u_g*t
x = c/m*v*t^3/6 - u_g*t^2/2

Nach zweifacher Integration mit x'(0)=0 und x''(0)=0 folgt.
x = c/m*v*t^3/6 - u_g*t^2/2

Ab t >= t_2 steht der Körper wieder.
Sobald c*r <= u_h*m*g ist bremst der Körper ab. Es muss nun von der
Koordinate x in die Koordinate r umgerechnet werden.

r = v*t_2 - x

c*(v*t_2 - x) = u_h*m*g
c*v*t_2 - c*x = u_h*m*g
t_2 = u_h*m*g/(v*c) - x/c

Desweiteren ist wieder oben anzuknüpfen und die Bedingung zu finden,
wann der Körper wieder rutscht usw. Das Verfahren ist dann für das n-te
Intervall zu verallgemeinern.

Wenn Du dann das Thema so formuliert hast, das Du die Position und die
Geschwindigkeit für jedes Intervall berechnen kannst ist es Zeit den
Algorithmus zu entwicklen.

Maximilien

Ähnliche fragen