В этом примере показано, как моделировать движение автомобильного поршня с помощью Toolbox™ MATLAB ® и Symbolic Math.
Определите движение автомобильного поршня и создайте анимацию для моделирования движения поршня.
На следующем рисунке показана модель автомобильного поршня. Подвижные части поршня состоят из шатуна (красная линия), кривошипа поршня (зелёная линия), головки поршневого цилиндра (серый прямоугольник).

Опишите свойства поршня, определив параметры:
длина хода цилиндра
диаметр отверстия поршня
длина шатуна
радиус кривошипа
угол поворота кривошипа
Определите начало O системы координат в месте расположения коленчатого вала. Отметьте ближайшее расстояние между головкой поршня и местом расположения коленчатого вала в качестве нижней мертвой точки (BDC). Высота BDC равна . Отметьте самое дальнее расстояние между головкой поршня и местом расположения коленчатого вала в качестве верхней мертвой точки (TDC). Высота TDC равна a.
На следующем рисунке схематично показаны кривошип и шатун.

Высота поршня относительно начала координат равна ) 2. Определите высоту поршня как символическую функцию с помощью syms функция.
syms pistHeight(L,a,theta)
pistHeight(L,a,theta) = a*cos(theta) + sqrt(L^2-a^2*sin(theta)^2);Предположим, что длина шатуна равна мм, а радиус кривошипа 50 мм. Постройте график высоты поршня как функции угла кривошипа для одного оборота в пределах интервала[0 2*pi].
fplot(pistHeight(150,50,theta),[0 2*pi]) xlabel('Crank angle (rad)') ylabel('Height (mm)')

Головка поршня является самой высокой, когда поршень находится при TDC и угол поворота кривошипа составляет 0 или 2*pi. Головка поршня является самой низкой, когда поршень находится на BDC, а угол поворота кривошипа составляет pi.
Можно также построить график высоты поршня для различных значений и . Создайте график поверхности высоты поршня с помощью команды fsurf функция. Покажите высоту поршня в интервале 60 мм
fsurf(pistHeight(150,a,theta),[30 60 0 2*pi]) xlabel('Crank radius (mm)') ylabel('Crank angle (rad)') zlabel('Height (mm)')

Длина камеры сгорания равна разности между расположением ВМТ и высотой поршня. Объем поршневого цилиндра может быть выражен как + a-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) =
Затем определите значения для следующих параметров:
длина шатуна мм
радиус кривошипа мм
диаметр отверстия мм
Постройте график объема поршня как функции угла кривошипа на один оборот в пределах интервала [0 2*pi].
fplot(pistVol(150,50,theta,86),[0 2*pi]) xlabel('Crank angle (rad)') ylabel('Volume (mm^3)')

Объем поршня наименьший, когда поршень находится в TDC, а угол поворота кривошипа равен 0 или 2*pi. Объем поршня является наибольшим, когда поршень находится в BDC, а угол поворота кривошипа составляет pi.
Предположим, что кривошип вращается при 30 об/мин в течение первых 3 секунд, затем постоянно увеличивается от 30 до 80 об/мин в течение следующих 4 секунд, а затем остается при 80 об/мин.
Определите угловую скорость как функцию времени, используя piecewise функция. Умножьте угловую скорость на , чтобы преобразовать скорость вращения из об/мин в рад/сек.
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) =
Рассчитайте угол поворота кривошипа путем интегрирования угловой скорости с помощью int функция. Предположим, что начальный угол поворота кривошипа = 0. Вычислить интеграл угловой скорости из0 кому t.
angPos(t) = int(angVel,t0,0,t);
Найти высоту поршня как функцию времени, подставив выражение angPos для угла поворота кривошипа.
H(t) = pistHeight(150,50,angPos)
H(t) =
Постройте график высоты поршня как функции времени. Обратите внимание, что колебание высоты поршня происходит быстрее от 3 до 7 секунд.
fplot(H(t),[0 10]) xlabel('Time (sec)') ylabel('Height (mm)')

Создайте анимацию движущегося поршня с изменяющейся угловой скоростью.
Сначала создайте новую фигуру. Постройте график стенок цилиндра с фиксированным расположением. Задайте для осей 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;

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