В этом примере показано, как смоделировать движение автомобильного поршня при помощи 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
. Поршневой объем является самым большим, когда поршень в TDC, и углом заводной рукоятки является 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;
Затем создайте объект Animation движения остановки поршневой головы при помощи fanimator
функция. По умолчанию, fanimator
создает объект Animation путем генерации 10 систем координат в единицу времени в области значений t
от 0 до 10. Смоделируйте поршневую голову как прямоугольник с толщиной 10 мм и переменной высотой H(t)
. Постройте поршневую голову при помощи rectangle
функция.
fanimator(@rectangle,'Position',[-43 H(t) 86 10],'FaceColor',[0.8 0.8 0.8])
Добавьте объекты Animation шатуна и поршневой заводной рукоятки. Добавьте часть текста, чтобы считать прошедшее время.
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
проигрывать анимацию движущегося поршня.