Этот пример показывает, как смоделировать движение автомобильного поршня с помощью MATLAB ® и Symbolic Math Toolbox™.
Задайте движение автомобильного поршня и создайте анимацию, чтобы смоделировать перемещение поршня.
Следующий рисунок показывает модель автомобильного поршня. Подвижные части поршня состоят из шатуна (красная линия), поршневого кривошипа (зеленая линия) и головки поршневого цилиндра (серый прямоугольник).
Опишите свойства поршня путем определения параметров:
длина штриха цилиндра
диаметр отверстия поршня
длина шатуна
радиус кривошипа
угол кривошипа
Задайте источник O системы координат в месте расположения коленчатого вала. Отметьте ближайшее расстояние между головкой поршня и положением коленчатого вала как нижнюю мертвую точку (BDC). Высота BDC составляет . Пометьте самое дальнее расстояние между головкой поршня и положением коленчатого вала как верхнюю мертвую точку (TDC). Высота TDC составляет .
На следующем рисунке представлена схема кривошипа и шатуна.
Высота поршня относительно источника Определите высоту поршня как символическую функцию при помощи syms
функция.
syms pistHeight(L,a,theta)
pistHeight(L,a,theta) = a*cos(theta) + sqrt(L^2-a^2*sin(theta)^2);
Примите, что длина шатуна и радиус кривошипа . Постройте график высоты поршня как функции от угла кривошипа на один оборот в интервале [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
функция. Показать высоту поршня в интервале и .
fsurf(pistHeight(150,a,theta),[30 60 0 2*pi]) xlabel('Crank radius (mm)') ylabel('Crank angle (rad)') zlabel('Height (mm)')
Длина ёмкости сгорания равна различию между положением TDC и высотой поршня. Объем поршневого цилиндра может быть выражен как .
Задайте объем поршня как символическую функцию и замените выражение на с 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
на 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
воспроизведение анимации движущегося поршня.