汽车活塞的动画和模型
这个例子展示了如何使用MATLAB®和Symbolic Math Toolbox™建模汽车活塞的运动。
定义一个汽车活塞的运动,并创建一个动画来模拟活塞运动。
步骤1:描述活塞模型
下图是一个汽车活塞的模型。活塞的运动部件由连杆(红线)、活塞曲柄(绿线)和活塞缸盖(灰色矩形)组成。
通过定义参数来描述活塞的特性:
气缸行程长度
活塞内径
连杆的长度
曲柄半径
曲柄角度
在曲轴位置处定义坐标系的原点O。将活塞头与曲轴位置之间的最近距离标记为下死点(BDC)。下止点高度为 .将活塞头与曲轴位置之间的最远距离标记为上止点(TDC)。上止点高度为 .
步骤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);
设连杆长度为
曲柄半径是
.绘制活塞高度的函数曲柄角度为一个革命的区间内(0 2 *π)
.
fplot(pistHeight(150,50,theta),[0 2*pi]) xlabel(曲柄角度(弧度)) ylabel (的高度(毫米))
活塞在上止点处,曲柄角为时,活塞头最高0
或2 *π
.当活塞在下止点,曲柄角为时,活塞头最低π
.
您还可以绘制活塞高度的各种值
而且
.方法创建活塞高度的曲面图<一个href="//www.tatmou.com/es/help/symbolic/fsurf.html" data-docid="symbolic_ug#buzhv1f" class="a">fsurf
函数。在间隔内显示活塞高度
而且
.
fsurf(pistHeight(150,a,theta),[30 60 0 2*pi]) xlabel(曲柄半径(mm)) ylabel (曲柄角度(弧度)) zlabel (的高度(毫米))
步骤3:计算并绘制活塞缸容积
燃烧室的长度等于上止点位置与活塞高度之差。活塞缸的容积可以表示为 .
将活塞体积定义为符号函数,并将表达式替换为
与pistHeight
.
信谊pistVol (L,θ,B)pistVol (L,θ,B) =π* (B / 2) ^ 2 * (L + a-pistHeight)
pistVol(L, a, theta, B) =
接下来,定义以下参数的值:
连杆的长度
曲柄半径
内径
绘制活塞体积的函数曲柄角度为一个革命在区间内(0 2 *π)
.
fplot(pistVol(150,50,theta,86),[0 2*pi]) xlabel(曲柄角度(弧度)) ylabel (“体积(mm ^ 3)”)
活塞在上止点处,曲柄角为时,活塞体积最小0
或2 *π
.当活塞在下止点处,曲柄角为时,活塞体积最大π
.
第四步:评估活塞运动改变角速度
假设曲柄在前3秒内以30转/分的速度旋转,然后在接下来的4秒内从30转/分稳定增加到80转/分,然后保持在80转/分。
函数将角速度定义为时间的函数<一个href="//www.tatmou.com/es/help/symbolic/sym.piecewise.html" data-docid="symbolic_ug#bu_fdeh" class="a">分段
函数。角速度乘以
将转速从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) =
计算曲柄角积分角速度使用<一个href="//www.tatmou.com/es/help/symbolic/sym.int.html" data-docid="symbolic_ug#btybolt" class="a">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(的时间(秒)) ylabel (的高度(毫米))
步骤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)));持有从;
使用命令<一个href="//www.tatmou.com/es/help/symbolic/playanimation.html" data-docid="symbolic_ug#mw_d05e2de0-3c10-4ca8-93b5-a3e4a5107b51" class="a">那里
播放活塞运动的动画。