exponenta event banner

Анимация и модель автомобильного поршня

В этом примере показано, как моделировать движение автомобильного поршня с помощью Toolbox™ MATLAB ® и Symbolic Math.

Определите движение автомобильного поршня и создайте анимацию для моделирования движения поршня.

Шаг 1: Описание поршневой модели

На следующем рисунке показана модель автомобильного поршня. Подвижные части поршня состоят из шатуна (красная линия), кривошипа поршня (зелёная линия), головки поршневого цилиндра (серый прямоугольник).

Опишите свойства поршня, определив параметры:

  • длина хода цилиндра S

  • диаметр отверстия поршня B

  • длина шатуна L

  • радиус кривошипа a

  • угол α поворота кривошипа

Определите начало O системы координат в месте расположения коленчатого вала. Отметьте ближайшее расстояние между головкой поршня и местом расположения коленчатого вала в качестве нижней мертвой точки (BDC). Высота BDC равна L-a. Отметьте самое дальнее расстояние между головкой поршня и местом расположения коленчатого вала в качестве верхней мертвой точки (TDC). Высота TDC равна L + a.

Шаг 2: Расчет и печать высоты поршня

На следующем рисунке схематично показаны кривошип и шатун.

Высота поршня относительно начала координат равна H = a cosun+ L2-a2sin (start) 2. Определите высоту поршня как символическую функцию с помощью syms функция.

syms pistHeight(L,a,theta)
pistHeight(L,a,theta) = a*cos(theta) + sqrt(L^2-a^2*sin(theta)^2);

Предположим, что длина шатуна равна L = 150 мм, а радиус кривошипа равен a = 50 мм. Постройте график высоты поршня как функции угла кривошипа для одного оборота в пределах интервала[0 2*pi].

fplot(pistHeight(150,50,theta),[0 2*pi])
xlabel('Crank angle (rad)')
ylabel('Height (mm)')

Figure contains an axes. The axes contains an object of type functionline.

Головка поршня является самой высокой, когда поршень находится при TDC и угол поворота кривошипа составляет 0 или 2*pi. Головка поршня является самой низкой, когда поршень находится на BDC, а угол поворота кривошипа составляет pi.

Можно также построить график высоты поршня для различных значений a и start. Создайте график поверхности высоты поршня с помощью команды fsurf функция. Покажите высоту поршня в интервале 30 мм < a < 60 мм и 0 <

fsurf(pistHeight(150,a,theta),[30 60 0 2*pi])
xlabel('Crank radius (mm)')
ylabel('Crank angle (rad)')
zlabel('Height (mm)')

Figure contains an axes. The axes contains an object of type functionsurface.

Шаг 3: Расчет и печать объема поршневого цилиндра

Длина камеры сгорания равна разности между расположением ВМТ и высотой поршня. Объем поршневого цилиндра может быть выражен как V = δ (B2) 2 (L + a-H).

Определите объем поршня как символическую функцию и замените выражение для H на pistHeight.

syms pistVol(L,a,theta,B)
pistVol(L,a,theta,B) = pi*(B/2)^2*(L+a-pistHeight)
pistVol(L, a, theta, B) = 

πB2L+a-acos(θ)-L2-a2sin(θ)24(sym(pi)*B^2*(L + a - a*cos(theta) - sqrt(L^2 - a^2*sin(theta)^sym(2))))/4

Затем определите значения для следующих параметров:

  • длина шатуна L = 150 мм

  • радиус кривошипа a = 50 мм

  • диаметр отверстия B = 86 мм

Постройте график объема поршня как функции угла кривошипа на один оборот в пределах интервала [0 2*pi].

fplot(pistVol(150,50,theta,86),[0 2*pi])
xlabel('Crank angle (rad)')
ylabel('Volume (mm^3)')

Figure contains an axes. The axes contains an object of type functionline.

Объем поршня наименьший, когда поршень находится в TDC, а угол поворота кривошипа равен 0 или 2*pi. Объем поршня является наибольшим, когда поршень находится в BDC, а угол поворота кривошипа составляет pi.

Шаг 4: Оценка движения поршня для изменения угловой скорости

Предположим, что кривошип вращается при 30 об/мин в течение первых 3 секунд, затем постоянно увеличивается от 30 до 80 об/мин в течение следующих 4 секунд, а затем остается при 80 об/мин.

Определите угловую скорость как функцию времени, используя piecewise функция. Умножьте угловую скорость на 2δ/60, чтобы преобразовать скорость вращения из об/мин в рад/сек.

syms t0 t
rpmConv = 2*pi/60;
angVel(t0) = piecewise(t0<=3, 30, t0>3 & t0<=7, 30 + 50/4*(t0-3), t0>7, 80)*rpmConv
angVel(t0) = 

{π if  t03π25t02-15230 if  t0(3,7]8π3 if  7<t0piecewise(t0 <= 3, sym(pi), 3 < t0 & t0 <= 7, (sym(pi)*((25*t0)/2 - sym(15/2)))/30, 7 < t0, (8*sym(pi))/3)

Рассчитайте угол поворота кривошипа путем интегрирования угловой скорости с помощью int функция. Предположим, что начальный угол поворота кривошипа = 0. Вычислить интеграл угловой скорости из0 кому t.

angPos(t) = int(angVel,t0,0,t);

Найти высоту поршня как функцию времени, подставив выражение angPos для угла поворота кривошипа.

H(t) = pistHeight(150,50,angPos)
H(t) = 

{200 if  t=0100 if  t=320625+25 if  t=750cos(σ1)+22500-2500sin(σ1)2 if  7<t22500-2500sin(σ2)2-50cos(σ2) if  t(3,7]50cos(πt)+22500-2500sin(πt)2 if  t<0t(0,3]where  σ1=31π3+8πt-73  σ2=π5t+9t-324piecewise(t == 0, 200, t == 3, 100, t == 7, sqrt(sym(20625)) + 25, 7 < t, 50*cos((31*sym(pi))/3 + (8*sym(pi)*(t - 7))/3) + sqrt(22500 - 2500*sin((31*sym(pi))/3 + (8*sym(pi)*(t - 7))/3)^2), 3 < t & t <= 7, sqrt(22500 - 2500*sin((sym(pi)*(5*t + 9)*(t - 3))/24)^2) - 50*cos((sym(pi)*(5*t + 9)*(t - 3))/24), t < 0|0 < t & t <= 3, 50*cos(sym(pi)*t) + sqrt(22500 - 2500*sin(sym(pi)*t)^2))

Постройте график высоты поршня как функции времени. Обратите внимание, что колебание высоты поршня происходит быстрее от 3 до 7 секунд.

fplot(H(t),[0 10])
xlabel('Time (sec)')
ylabel('Height (mm)')

Figure contains an axes. The axes contains an object of type functionline.

Шаг 5: Создание анимации движущегося поршня

Создайте анимацию движущегося поршня с изменяющейся угловой скоростью.

Сначала создайте новую фигуру. Постройте график стенок цилиндра с фиксированным расположением. Задайте для осей X и Y одинаковую длину.

figure;
plot([-43 -43],[50 210],'k','LineWidth',3)
hold on;
plot([43 43],[50 210],'k','LineWidth',3)
plot([-43 43],[210 210],'k','LineWidth',3)
axis equal;

Затем создайте объект анимации останова головки поршня с помощью fanimator функция. По умолчанию fanimator создает анимационный объект путем генерации 10 кадров в единицу времени в диапазоне t от 0 до 10. Моделирование головки поршня в виде прямоугольника толщиной 10 мм и переменной высотой H(t). Постройте график головки поршня с помощью rectangle функция.

fanimator(@rectangle,'Position',[-43 H(t) 86 10],'FaceColor',[0.8 0.8 0.8])

Добавьте объекты анимации шатуна и кривошипа поршня. Добавьте фрагмент текста для подсчета прошедшего времени.

fanimator(@(t) plot([0 50*sin(angPos(t))],[H(t) 50*cos(angPos(t))],'r-','LineWidth',3))
fanimator(@(t) plot([0 50*sin(angPos(t))],[0 50*cos(angPos(t))],'g-','LineWidth',3))
fanimator(@(t) text(-25,225,"Timer: "+num2str(t,2)));
hold off;

Figure contains an axes. The axes contains 7 objects of type rectangle, line, text.

Используйте команду playAnimation для воспроизведения анимации движущегося поршня.