吕德乾 李自成 李 奥 郝文杰 王国晶
(成都理工大学工程技术学院,四川 成都 614000)
汽车上坡受力分析具体如图1 所示。
图1 汽车上坡受力分析
1.根据牛顿第二定律,汽车受力公式为:
2.m 假定为汽车质量,我们取200。
3.Fi 为引擎动力,最大驱动力是2000,最大制动力是-3000,如下:
4.Fb 为空气阻力,它与汽车运动时的速度成正比,可得如下表达式:
“30sin(0.02a)”估算可能为“阵风”引起的,v 为汽车在水平路上的正常速度。
5.Fy 为重力向下分力,可得表达式:
表达式中的正弦项是因为坡和水平路之间有夹角α 变化所以引入的。
根据上述数学模型,我们可以建立汽车上坡时的Simulink 模型,如图2,图中参数模块的配置解释如下:
1.Int 模块:汽车驱动力Fx 的输入端口。
2.Snout 模块:汽车真实速度Sn 的输出端口。
3.Min模块:驱动力最小值,Constant value栏填:-3000。
4.LowLm 模块(MinMax 模块):在其参数设置中,在Function 栏填:max(缺省设置),Number of input ports栏填:2(缺省设置),这样的话,模块输出栏就是两个输入模块中的最大值,模块的图标可以命名为:max。
5.Max 模块:驱动力最大值,Constant value 栏填:2000。
6.UpLm 模块:在其参数设置中,在Function 栏填:min,这样,输出模块就是两个输入模块中的最小值,模块图标命名为:min。
7.ClockInt 模块:仿真时间a 的输入端口。
8.Fy 模块(Fcn 模块):在其参数设置中,完成重力向下的分量Fy,公式(1)-(4),这个模块的位移标量x,输出是重力分力:Fy,在Expression 栏中填:
40*sin(0.0002*u)
9.Fb 模块:完成空气的阻力Fb,公式(1)-(3)。这个模块的输入是由[v,a]构成的向量,因为Fcn 模块必须要遵循第一个原则,在参数设置中Expression 栏中填:
0.002*(u(1)+30*sin(0.02*u(2)))^2
比例控制器的工作原理:利用假设速度和真实速度的差值作为“指令”驱动力Fx,可以构建数学模型:
K 是比例系数,可取K=60,v1 是汽车的假设速度,v 是汽车的真实速度。“指令”驱动力Fx 和真实驱动力K 的区别就是,第一个只是理论上的驱动力,第二个则是经过物理限制后才能使用的力。
根据公式(1)-(5),我们可以得出下面的Simu link 模型,如图3:
SnInt-是假设速度的输入端口,SnInt+是真实速度的输入端口。FnOut 是驱动力Fx 的输出端口模块。
将图2 和图3 组合连接放在一个新的模型窗口中,就能得到图4 汽车上坡的完整模型,模型命名为Mod el_1.del。
图2 汽车上坡的Simulink 模型
图3 汽车速度的比例控制器Simulink 模型
在图4 中,SG 模块的功能可以完成我们想要的假设速度,打开它的操作窗口,调整里面的数据。Low(下限)填0。High(上限)填200,滑动键代表可以调整的增益值(图中是:70,即:假设中汽车的速度)。这个模块还需要“恒值”输入信号Ct 的激励。
因为我们需要更好地观察和比较,所以速度量需要被送到Dp(数值显示器)和Sc。这样,在仿真过程中我们就能在数值显示器上看到汽车的真实速度。
将图4 模型窗口的仿真结束时间设置为8000,在仿真前先分别打开SG 操作窗口和示波器窗口,开始仿真,仿真结果如图5,在仿真过程中,凡是在SG 操作窗口移动滑键,我们都能在SG 上看到相对应假设的速度。根据图形,我们能知道Dp 上的真实速度正在不断向假设的速度靠近[4]。
图4 汽车上坡的完整Simulink 模型
图5 仿真结果
打开Model_1.del 模型,在模型窗口中用鼠标左键选中整个汽车上坡仿真,然后鼠标右键选择“Create Subsystem”,将选中部分包装在一个名为Subsystem 的模块中,改名为Sub1,采用类似的操作,将比例控制器整理后改名为:Sub2,打开Sub2 子系统模块的模型窗口,将其两个输入端模块和一个输出端模块的缺省名改为In-,In+和Out,然后仿照更改Sub1 子系统输入模块和输出模块的缺省名分别为In,ClockIn1 和Out。
最后整理一下图中的信号线和图形,得到图6 生成子系统的完整仿真模型。
图6 生成子系统的完整仿真图
1.打开Sub1 子系统模块的模型窗口。
2.打开Max 模块参数设置对话框,在Constant value栏填Fmax(驱动力上限)。
3.打开Max Brake 模块参数对话框,在Constant 栏填Fmin(制动力下限)。
4.打开FB 模块参数对话框,在Expression 栏填:
0.02*(u(1)+wn*sin(0.02*u(2)))^2
wn 是“阵风”系数。
5.打开FY 模块参数对话框,在Expression 栏填:
fn*(0.0002*u)
fn 是路面起伏系数。
打开Sub1 模块,用鼠标左键单击Parameters 中的Spinbox,然后在Dialog parameters 区域依次增加4 个设计提示和设置的变量,参数更改如下:分别在它们的4 个Prompt 栏中填:largest driving force;largest braking force;road rough coefficient;flurry intensity coefficient。在所有Variable 栏中分别填相关联变量名:Fmax;Fmin;wn;fn。Type 栏中全部选取缺省:edit 类型,以方便使Fmax,Fmin,wn,fn4 个变量分别通过编辑框输入;最后选中Evaluate 和Tunable 栏。然后就完成了我们需要的设计提示和变量设置。如果想解开封装操作,就先选中该模块,鼠标左键双击选中“Mask...”,然后单击“Unmask”就行。
3.4.1 汽车封装子系统的参数设置对话框及其赋值
打开Sub1 子系统模块参数设置对话框,在Param eter 区域中按照下面参数所示完成赋值。
largest driving force 栏:填2000;
largest braking force 栏:填-3000;
road rough coefficient 栏:填40;
flurry intensity coefficient 栏:填30;
3.4.2 参数传播途径
MATLAB 命令窗口中的已经赋值好了的变量或直接给定的数值经过参数设置对话框直接传递给封装子系统,然后通过子系统中各模块的对话窗口传递给各个模块,在这里,封装子系统参数设置对话框是该系统从外界获得参数的唯一途径。
采用封装子系统,可以把Simulink 子系统封装成一个模块,这样便于我们清晰的观看到系统中每一个子系统模块的功能,这样很方便我们直接输入想要的数据,而系统也能够将结果以图形的形式给我们以更直观和简洁的形式表达出来。