这个例子展示了如何使用MATLAB®和Symbolic Math Toolbox™建模汽车活塞的运动。
定义一个汽车活塞的运动,并创建一个动画模型的活塞运动。
下图显示了汽车活塞的模型。活塞的运动部件由连杆(红线)、活塞曲柄(绿线)和活塞缸盖(灰色矩形)组成。
通过定义参数描述活塞的特性:
气缸行程长度
活塞内径
连杆的长度
曲柄半径
曲柄角度
定义坐标系统的原点O在曲轴位置。将活塞头与曲轴位置之间最近的距离标记为下死点(BDC)。BDC的高度是 .将活塞头与曲轴位置之间的最远距离标记为上止点(上止点)。TDC的高度是 .
下图是曲柄和连杆的示意图。
活塞相对原点的高度是
将活塞高度定义为符号函数<一个href="//www.tianjin-qmedu.com/it/help/symbolic/syms.html" class="a">信谊
函数。
信谊pistHeight (L,θ)pistHeight(L,a,theta) = a*cos(theta) +√(L^2-a^2*sin ^2);
设连杆长度为
曲柄半径是
.绘制活塞高度作为一个函数的曲柄角度为一转内的间隔(0 2 *π)
.
fplot (pistHeight(150、50、θ),[0 2 *π])包含(“曲柄角(rad)”) ylabel (的高度(毫米))
活塞在上止点和曲柄角时活塞头最高0
或2 *π
.活塞在下止点处,曲柄角为时,活塞头最小π
.
也可以绘制活塞高度的不同值
和
.创建一个表面图的活塞高度使用<一个href="//www.tianjin-qmedu.com/it/help/symbolic/fsurf.html" class="a">fsurf
函数。显示活塞在间隔内的高度
和
.
fsurf(pistHeight(150,a,theta),[30 60 0 2*pi]) xlabel(曲柄半径(mm)的) ylabel (“曲柄角(rad)”) zlabel (的高度(毫米))
燃烧室的长度等于上止点位置与活塞高度之差。活塞缸的体积可以表示为 .
将活塞体积定义为符号函数,并用表达式代入
与pistHeight
.
信谊pistVol (L,θ,B)pistVol (L,θ,B) =π* (B / 2) ^ 2 * (L + a-pistHeight)
pistVol(L, a, theta, B) =
接下来,定义以下参数的值:
连杆的长度
曲柄半径
孔直径
图活塞体积作为一个函数曲柄角度为一转内的间隔(0 2 *π)
.
fplot (pistVol(150年,50岁,θ,86),[0 2 *π])包含(“曲柄角(rad)”) ylabel (“体积(mm ^ 3)”)
当活塞处于上止点时,曲柄角为时,活塞体积最小0
或2 *π
.当活塞处于下止点,曲柄角为时,活塞体积最大π
.
假设曲柄旋转在30转前3秒,然后稳步增加从30到80转下4秒,然后保持在80转。
将角速度定义为时间的函数<一个href="//www.tianjin-qmedu.com/it/help/symbolic/piecewise.html" class="a">分段
函数。乘以角速度
将转速从RPM转换为rad/秒。
信谊t0trpmConv = 2 *π/ 60;drawtext (t0<= 3,30, t0>3 & t0<= 7,30 + 50/4*(t0-3), t0> 7,80)*rpmConv . drawtext (t0<= 3,30, t0>3 & t0<= 7,30 + 50/4*(t0-3), t0> 7,80), colorred
angVel (t0) =
计算曲柄角积分角速度使用<一个href="//www.tianjin-qmedu.com/it/help/symbolic/sym.int.html" 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) 10[0])包含(的时间(秒)) ylabel (的高度(毫米))
创建一个移动活塞的动画给定一个变化的角速度。
首先,创建一个新图形。画出有固定位置的圆柱体壁。设置x设在和y-轴的长度相等。
图;情节(-43 [-43],[210],“k”,“线宽”, 3)在;情节([43 43],[210],“k”,“线宽”,3) plot([- 443 43],[210 210],“k”,“线宽”3)轴平等的;
接下来,创建一个活塞头的定格动画对象使用<一个href="//www.tianjin-qmedu.com/it/help/symbolic/fanimator.html" class="a">fanimator
函数。默认情况下,fanimator
的范围内以单位时间生成10帧的方式创建动画对象t
从0到10。模型的活塞头作为一个矩形,厚度为10毫米和可变高度H (t)
.用标尺画出活塞头<一个href="//www.tianjin-qmedu.com/it/help/matlab/ref/rectangle.html" 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)) fanimator (@ (t)文本(-25225年计时器:“+ num2str (t, 2)));持有从;
使用命令<一个href="//www.tianjin-qmedu.com/it/help/symbolic/playanimation.html" class="a">那里
播放运动活塞的动画。