主要内容

汽车活塞的动画和模型

这个例子展示了如何使用MATLAB®和Symbolic Math Toolbox™建模汽车活塞的运动。

定义一个汽车活塞的运动,并创建一个动画来模拟活塞运动。

步骤1:描述活塞模型

下图是一个汽车活塞的模型。活塞的运动部件由连杆(红线)、活塞曲柄(绿线)和活塞缸盖(灰色矩形)组成。

通过定义参数来描述活塞的特性:

  • 气缸行程长度 年代

  • 活塞内径 B

  • 连杆的长度 l

  • 曲柄半径 一个

  • 曲柄角度 θ

在曲轴位置处定义坐标系的原点O。将活塞头与曲轴位置之间的最近距离标记为下死点(BDC)。下止点高度为 l - 一个 .将活塞头与曲轴位置之间的最远距离标记为上止点(TDC)。上止点高度为 l + 一个

步骤2:计算并绘制活塞高度

下图是曲柄和连杆的示意图。

活塞相对于原点的高度为 H 一个 因为 θ + l 2 - 一个 2 θ 2 函数将活塞高度定义为符号函数<一个href="//www.tatmou.com/es/help/symbolic/syms.html" data-docid="symbolic_ug#buod73_" class="a">信谊函数。

信谊pistHeight (L,θ)pistHeight(L,a,) = a*cos() +根号(L^2-a^2*sin()^2);

设连杆长度为 l 150 毫米 曲柄半径是 一个 50 毫米 .绘制活塞高度的函数曲柄角度为一个革命的区间内(0 2 *π)

fplot(pistHeight(150,50,theta),[0 2*pi]) xlabel(曲柄角度(弧度)) ylabel (的高度(毫米)

图中包含一个轴对象。axis对象包含一个functionline类型的对象。

活塞在上止点处,曲柄角为时,活塞头最高02 *π.当活塞在下止点,曲柄角为时,活塞头最低π

您还可以绘制活塞高度的各种值 一个 而且 θ .方法创建活塞高度的曲面图<一个href="//www.tatmou.com/es/help/symbolic/fsurf.html" data-docid="symbolic_ug#buzhv1f" class="a">fsurf函数。在间隔内显示活塞高度 30. 毫米 < 一个 < 60 毫米 而且 0 < θ < 2 π

fsurf(pistHeight(150,a,theta),[30 60 0 2*pi]) xlabel(曲柄半径(mm)) ylabel (曲柄角度(弧度)) zlabel (的高度(毫米)

图中包含一个轴对象。axis对象包含一个functionsurface类型的对象。

步骤3:计算并绘制活塞缸容积

燃烧室的长度等于上止点位置与活塞高度之差。活塞缸的容积可以表示为 V π B 2 2 l + 一个 - H

将活塞体积定义为符号函数,并将表达式替换为 H pistHeight

信谊pistVol (L,θ,B)pistVol (L,θ,B) =π* (B / 2) ^ 2 * (L + a-pistHeight)
pistVol(L, a, theta, B) =

π B 2 l + 一个 - 一个 因为 θ - l 2 - 一个 2 θ 2 4

接下来,定义以下参数的值:

  • 连杆的长度 l 150 毫米

  • 曲柄半径 一个 50 毫米

  • 内径 B 86 毫米

绘制活塞体积的函数曲柄角度为一个革命在区间内(0 2 *π)

fplot(pistVol(150,50,theta,86),[0 2*pi]) xlabel(曲柄角度(弧度)) ylabel (“体积(mm ^ 3)”

图中包含一个轴对象。axis对象包含一个functionline类型的对象。

活塞在上止点处,曲柄角为时,活塞体积最小02 *π.当活塞在下止点处,曲柄角为时,活塞体积最大π

第四步:评估活塞运动改变角速度

假设曲柄在前3秒内以30转/分的速度旋转,然后在接下来的4秒内从30转/分稳定增加到80转/分,然后保持在80转/分。

函数将角速度定义为时间的函数<一个href="//www.tatmou.com/es/help/symbolic/sym.piecewise.html" data-docid="symbolic_ug#bu_fdeh" class="a">分段函数。角速度乘以 2 π / 60 将转速从RPM转换为rad/sec。

信谊t0trpmConv = 2*pi/60;angVel(t0) =分段(t0<= 3,30, t0>3 & t0<= 7,30 + 50/4*(t0-3), t0> 7,80)*rpmConv
angVel (t0) =

π 如果 t 0 3. π 25 t 0 2 - 15 2 30. 如果 t 0 3. 7 8 π 3. 如果 7 < t 0

计算曲柄角积分角速度使用<一个href="//www.tatmou.com/es/help/symbolic/sym.int.html" data-docid="symbolic_ug#btybolt" class="a">int函数。的初始曲柄角 θ 0 .计算角速度的积分0t

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

将表达式代入,求出活塞高度随时间变化的函数angPos对于曲柄角。

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

200 如果 t 0 One hundred. 如果 t 3. 20625 + 25 如果 t 7 50 因为 σ 1 + 22500 - 2500 σ 1 2 如果 7 < t 22500 - 2500 σ 2 2 - 50 因为 σ 2 如果 t 3. 7 50 因为 π t + 22500 - 2500 π t 2 如果 t < 0 t 0 3. 在哪里 σ 1 31 π 3. + 8 π t - 7 3. σ 2 π 5 t + 9 t - 3. 24

绘制活塞高度随时间变化的函数图。请注意,活塞高度的振荡在3到7秒之间变得更快。

fplot(H(t),[0 10]) xlabel(的时间(秒)) ylabel (的高度(毫米)

图中包含一个轴对象。axis对象包含一个functionline类型的对象。

步骤5:创建移动活塞的动画

创建一个动画的移动活塞给定的角速度变化。

首先,创建一个新图形。画出有固定位置的圆筒壁。设置x设在和y-axis的长度相等。

图;地块([-43 -43],[50 210],“k”“线宽”, 3);地块([43 43],[50 210],“k”“线宽”,3) plot([-43 43],[210 210],“k”“线宽”3)轴平等的

下一步,创建一个定格动画对象的活塞头使用<一个href="//www.tatmou.com/es/help/symbolic/fanimator.html" data-docid="symbolic_ug#mw_50c42eff-e177-477e-ac88-e209c15b0819" class="a">fanimator函数。默认情况下,fanimator的范围内,通过在单位时间内生成10帧来创建动画对象t从0到10。将活塞头建模为一个矩形,厚度为10毫米,高度可变H (t).用图绘制活塞头<一个href="//www.tatmou.com/es/help/matlab/ref/rectangle.html" data-docid="matlab_ref#f66-515573" class="a">矩形函数。

fanimator (@rectangle“位置”,[-43 H(t) 86 10],“FaceColor”,[0.8 0.8 0.8])

添加连杆和活塞曲柄的动画对象。添加一段文本来计算经过的时间。

fanimator (@ (t)情节([0 50 *罪(angPos (t)], [H (t) 50 * cos (angPos (t))),的r -“线宽”3)) fanimator (@ (t)情节([0 50 *罪(angPos (t)], [0 50 * cos (angPos (t))),“g -”“线宽”,3)) fananimator (@(t) text(-25,225,计时器:“+ num2str (t, 2)));持有

图中包含一个轴对象。axis对象包含矩形、直线、文本类型的7个对象。

使用命令<一个href="//www.tatmou.com/es/help/symbolic/playanimation.html" data-docid="symbolic_ug#mw_d05e2de0-3c10-4ca8-93b5-a3e4a5107b51" class="a">那里播放活塞运动的动画。