Моделирование пружинно-демпферной системы

пружинный амортизатор с массой (модель)

Рассмотрим идеальный пружинный амортизатор с массой m (в кг), пружину k (в Н/м) и коэффициент затухания R (в нс/м).

Для решения этой задачи будет использоваться toolbox matlab MuPad, который автоматизирует наши расчеты.

Данная система может быть описана следующей формулой: m*x''(t)+k*x(t)+R*x'(t).

m*x''(t)+k*x(t)+R*x'(t)

Мы используем функцию ODE для определения уравнения движения и начальных условий.

f1 := ode({m*x''(t) + R*x'(t) + k*x(t), x(0) = 0 , x'(0) = 1}, x(t))

Предполагая, m = 10, R = 1 и k = 10, уравнение может быть переписано как x'(t)+10x''(t)+10x(t). Подставим эти значения в выражение нашего дифференциального уравнения и решим это уравнение.

f2 := subs(f1, m = 10 , R = 1 , k = 10)

Решение дифференциального уравнения:

f3 := solve(f2);

Как мы видим выше, решение имеет экспоненциальный член распада и синусоидальной в перспективе. А это означает, что система покажет затухающий ответ на возмущение.

p := plot::Point2d([t, f3[1]], t=0..50):
c := plot::Curve2d([t,f3[1]], t = 0..a, a= 0..50):
plot(p,c);

f1 := ode({m*x''(t) + R*x'(t) + k*x(t), x(0) = 0, x'(0) = 1}, x(t)):
f2 := subs(f1, m = 10 , R = 1 , k = 10):
f3 := solve(f2):
line := plot::Line3d([0, 0, 0.1],[f3[1]+1, 0, 0.1], t= 0..50, LineWidth = 1, 
LineColor = RGB::Black):
surf := plot::Surface([u, v, 0], u =  0..2 , v =  -1..1 , FillColorDirectionX = 1 ):
box := plot::Box([f3[1]+0.75, -0.25, 0], [f3[1]+1.25, 0.25,0.2], t = 0..50,  
FillColor = RGB::Grey.[0.2]):
plot(plot::CoordinateSystem3d(line, surf, box, ViewingBoxZMin = 0, ViewingBoxZMax = 0.5, 
ViewingBoxYMin = -1, ViewingBoxYMax = 1, ViewingBoxXMin = 0, ViewingBoxXMax = 2), 
GridVisible = TRUE, GridLineStyle = Dashed );

Анализ методом частотных характеристик

Проанализируем частотную характеристику нашей системы. Начнем с получения преобразования Лапласа для нашей системы, а затем найдем график Боде (Bode plot) (зависимость амплитуды от частоты и сдвиг фазы от частоты). Для выполнения построения мы используем функцию FreqResp, которая выводит график Боде для данного ОДУ.График Боде показывает, что частота среза нашего масса-пружина-амортизаторной системы составляет около 1 рад / с.

FreqResp := proc(fff)
local f_laplace, G1, G;
begin
  
  // Evaluate laplace transform
  f_laplace := transform::laplace(fff,t,s):
  
  
  // Substitute the laplace::transform expression with H(s) and X(s)
  f_laplace := subs(f_laplace, transform::laplace(x(t),t,s) = X(s));
  f_laplace := subs(f_laplace, transform::laplace(h(t),t,s) = H(s));
   
  // Substitute initial conditions
  f_laplace := subs(f_laplace, x'(0) = 0, x(0) = 0);
  
  // Evaluate transfer function
  G := solve(f_laplace, X(s))/H(s):
  
  G1 := subs(G[1], s = I*w):
  
  AR := abs(G1):    // Amplitude ratio
  phi := arg(G1):   // Phase Shift

  // Create plots 
  plot(AR, w = 0.1 ..100,  CoordinateType = LogLin,
                           AxesTitles     = ["Frequency", "Amplitude Ratio"],
                           LineColor      = RGB::Blue,
                           LineWidth      = 0.5*unit::mm,
                           GridVisible    = TRUE, 
                           SubgridVisible = TRUE,
                           XTicksBetween  = 9,
                           YAxisTitleOrientation = Vertical);
                           
  plot(phi, w = 0.1 ..100, CoordinateType = LogLin, 
                           AxesTitles     = ["Frequency", "Phase Shift"],
                           LineColor      = RGB::Blue,
                           LineWidth      = 0.5*unit::mm,
                           GridVisible    = TRUE,
                           SubgridVisible = TRUE,
                           XTicksBetween  = 9,
                           YAxisTitleOrientation = Vertical);
  
end_proc:

↑ Расскажите друзьям о статье


Comments system Cackle

© EduNow.su — материалы подлежат полному/частичному копированию при указании прямой ссылки на источник. (Сегодня 25.06.17)