这个例子展示了如何通过使用MATLAB®和符号数学工具箱™汽车活塞的运动建模。
定义一个汽车活塞的运动,并创建动画的活塞运动模型。
下图显示了一种汽车活塞的模型。活塞的移动部件由一连接杆(红线),活塞曲柄(绿线),和活塞气缸盖(灰色矩形)的。
通过定义参数描述了活塞的属性:
气缸行程长度
活塞孔直径
所述连接杆的长度
曲柄半径
曲柄角度
在曲轴位置定义坐标系的原点O。标记活塞头和曲轴位置为下止点(BDC)之间的最近距离。BDC的高度 。标记活塞头和曲轴位置为上止点(TDC)之间的最远距离。TDC的高度 。
下图是曲柄和连杆的示意图。
相对于活塞的原点的高度为
通过使用限定在活塞高度为符号函数<一个href="//www.tianjin-qmedu.com/help/symbolic/syms.html" class="a">SYMS
功能。
SYMSpistHeight(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,θ-),[0 2 *π)xlabel(“曲柄角(弧度)”)ylabel('高度(mm)')
活塞头是最高当活塞处于TDC并且曲柄角是0
要么2 * PI
。活塞头是最低当活塞处于BDC和曲柄角是PI
。
您也可以绘制了各种价值观的活塞高度
和
。通过使用创建的活塞高度的表面图<一个href="//www.tianjin-qmedu.com/help/symbolic/fsurf.html" class="a">fsurf
功能。显示间隔内的活塞高度
和
。
fsurf(pistHeight(150,,θ-),[30 60 0 2 *π)xlabel('曲柄半径(mm)')ylabel(“曲柄角(弧度)”)zlabel('高度(mm)')
燃烧室的长度等于所述TDC位置和活塞高度之间的差值。活塞缸的体积可表示为 。
限定活塞体积为符号函数,并代之以表达为
同pistHeight
。
SYMSpistVol(L,一个,θ,B)pistVol(L,一个,θ,B)= PI *(B / 2)^ 2 *(L +α-pistHeight)
pistVol(L,一个,θ,B)=
接下来,定义以下参数的值:
所述连接杆的长度
曲柄半径
孔直径
绘制活塞卷作为曲柄角的函数的间隔内的一个旋转[0 2 * PI]
。
fplot(pistVol(150,50,θ,86),[0 2 *π)xlabel(“曲柄角(弧度)”)ylabel('卷(毫米^ 3)')
活塞体积最小当活塞处于TDC并且曲柄角是0
要么2 * PI
。活塞体积是最大的,当活塞处于BDC和曲柄角是PI
。
假设在30rpm曲柄旋转的前3秒,然后稳定地从30增大到80转接下来4秒钟,然后保持在80rpm。
通过使用定义的角速度作为时间的函数<一个href="//www.tianjin-qmedu.com/help/symbolic/piecewise.html" class="a">分段
功能。乘以角速度由
于转速从转转换为弧度/秒。
SYMST0ŤrpmConv = 2 * PI / 60;angVel(T0)=分段(T0 <= 3,30,T0> 3&T0 <= 7,30 +四分之五十*(t0-3),T0> 7,80)* rpmConv
angVel(T0)=
通过使用积分角速度计算曲柄角<一个href="//www.tianjin-qmedu.com/help/symbolic/int.html" class="a">INT
功能。假定的初始曲柄角
。计算的角速度从积分0
至Ť
。
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('高度(mm)')
创建给定变化的角速度移动的活塞的动画。
首先,创建一个新的身影。剧情是有固定的地址在气缸壁上。设置X轴和ÿ- 轴以相等的长度。
数字;情节([ - 43 -43],[50 210],数k,'行宽'3)保持上;情节([43 43],[50 210],数k,'行宽',3)情节([ - 43 43],[210 210],数k,'行宽',3)轴等于;
接着,通过使用创建所述活塞头的停止 - 运动动画对象<一个href="//www.tianjin-qmedu.com/help/symbolic/fanimator.html" class="a">fanimator
功能。默认情况下,fanimator
通过的范围内产生每单位时间的10帧创建动画对象Ť
从0到10型号活塞头作为具有厚度为10毫米,可变高度的矩形H T)
。通过使用绘制活塞头<一个href="//www.tianjin-qmedu.com/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 * SIN(angPos(T))],[H(t)的50 * COS(angPos(T))]'R-','行宽',3))fanimator(@(t)的曲线图([0 50 * SIN(angPos(T))],[0 50 * COS(angPos(T))]'G-','行宽',3))fanimator(@(t)的文本(-25,225,“定时器”+ num2str(T,2)));保持离;
使用命令<一个href="//www.tianjin-qmedu.com/help/symbolic/playanimation.html" class="a">playAnimation
发挥移动活塞的动画。