主要内容

汽车活塞动画与模型

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

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

步骤1:描述活塞模型

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

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

  • 气缸行程长度 年代

  • 活塞内径 B

  • 连杆的长度 l

  • 曲柄半径 一个

  • 曲柄角度 θ

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

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

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

活塞相对原点的高度是 H 一个 因为 θ + l 2 - 一个 2 θ 2 将活塞高度定义为符号函数<一个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);

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

fplot (pistHeight(150、50、θ),[0 2 *π])包含(“曲柄角(rad)”) ylabel (的高度(毫米)

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

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

也可以绘制活塞高度的不同值 一个 θ .创建一个表面图的活塞高度使用<一个href="//www.tianjin-qmedu.com/it/help/symbolic/fsurf.html" class="a">fsurf函数。显示活塞在间隔内的高度 30. 毫米 < 一个 < 60 毫米 0 < θ < 2 π

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

图中包含一个坐标轴。坐标轴包含一个函数曲面类型的对象。

第三步:计算并绘制活塞缸容积

燃烧室的长度等于上止点位置与活塞高度之差。活塞缸的体积可以表示为 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 (信谊(π)* B ^ 2 * (L + - * cosθ-√(L ^ 2 - a ^ 2 *罪(θ)^符号(2))))/ 4

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

  • 连杆的长度 l 150 毫米

  • 曲柄半径 一个 50 毫米

  • 孔直径 B 86 毫米

图活塞体积作为一个函数曲柄角度为一转内的间隔(0 2 *π)

fplot (pistVol(150年,50岁,θ,86),[0 2 *π])包含(“曲柄角(rad)”) ylabel (“体积(mm ^ 3)”

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

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

步骤4:评估活塞运动改变角速度

假设曲柄旋转在30转前3秒,然后稳步增加从30到80转下4秒,然后保持在80转。

将角速度定义为时间的函数<一个href="//www.tianjin-qmedu.com/it/help/symbolic/piecewise.html" class="a">分段函数。乘以角速度 2 π / 60 将转速从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) =

π 如果 t 0 3. π 25 t 0 2 - 15 2 30. 如果 t 0 3. 7 8 π 3. 如果 7 < t 0 分段(t0 < = 3,信谊(π),3 < t0 & t0 < = 7,(信谊(pi) * ((25 * t0) / 2 -信谊(15/2)))/ 30日7 < t(8 *信谊(π))/ 3)

计算曲柄角积分角速度使用<一个href="//www.tianjin-qmedu.com/it/help/symbolic/sym.int.html" 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 分段(t = = 0 200 t = = 3, 100年,t = = 7, sqrt(信谊(20625))+ 25日7 < t, 50 * cos((31 *信谊(pi)) / 3 +(8 *信谊(pi) * (t - 7)) / 3) + sqrt(22500 - 2500 *罪((31 *信谊(pi)) / 3 +(8 *信谊(pi) * (t - 7)) / 3) ^ 2), 3 < t & t < = 7, sqrt(22500 - 2500 *罪((信谊(pi) * (5 t + 9) * * (t - 3)) / 24) ^ 2) - 50 * cos((信谊(pi) * (5 t + 9) * * (t - 3)) / 24), t < 0 | 0 < t & t < = 3,50 * cos(信谊(π)* t +√(22500 - 2500 *罪(信谊(π)* t) ^ 2))

画出活塞高度作为时间的函数。注意,活塞高度的振荡在3到7秒之间变得更快。

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

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

步骤5:制作移动活塞的动画

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

首先,创建一个新图形。画出有固定位置的圆柱体壁。设置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)));持有

图中包含一个坐标轴。轴包含7个对象的类型为矩形,行,文本。

使用命令<一个href="//www.tianjin-qmedu.com/it/help/symbolic/playanimation.html" class="a">那里播放运动活塞的动画。