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

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

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

Шаг 1: Опишите модель поршня

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

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

  • длина штриха цилиндра S

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

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

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

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

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

Шаг 2: Вычислите и постройте график высоты поршня

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

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

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

Примите, что длина шатуна L=150mm и радиус кривошипа a=50mm. Постройте график высоты поршня как функции от угла кривошипа на один оборот в интервале [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 и θ. Создайте объемную поверхностную диаграмму высоты поршня при помощи fsurf функция. Показать высоту поршня в интервале 30mm<a<60mm и 0<θ<2π.

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: Вычислите и постройте график объема поршневого цилиндра

Длина ёмкости сгорания равна различию между положением TDC и высотой поршня. Объем поршневого цилиндра может быть выражен как 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=150mm

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

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

Постройте график объема поршня как функции от угла кривошипа на один оборот в интервале [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) = 

{π если  t03π25t02-15230 если  t0(3,7]8π3 если  7<t0кусочно (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 если  t=0100 если  t=320625+25 если  t=750cos(σ1)+22500-2500sin(σ1)2 если  7<t22500-2500sin(σ2)2-50cos(σ2) если  t(3,7]50cos(πt)+22500-2500sin(πt)2 если  t<0t(0,3]where  σ1=31π3+8πt-73  σ2=π5t+9t-324кусочно (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 воспроизведение анимации движущегося поршня.