汽车上坡物理模型与仿真
2022-07-07吕德乾李自成李奥郝文杰王国晶
吕德乾 李自成 李 奥 郝文杰 王国晶
摘 要 隨着国家的经济越来越发达,各种基础设施越修越好,尤其是公路这一块,几乎连通了每家每户,又随着人们的生活水平越来越高,使得汽车在每家每户也越来越普及。但是,绝大多数人都只知道怎么使用它,却从没想过了解和认识它。现在,我们选择对汽车上坡这个过程进行研究,通过MATLAB[1-2]仿真设计一个速度比例控制器并且通过封装子系统技术来让我们更为简洁地了解在各种设定速度的条件下汽车上坡的过程。
关键词 MATLAB仿真 比例控制器 封装子系统
中图分类号:U461 文献标识码:A 文章编号:1007-0745(2022)06-0001-04
1 汽车模型设计
1.1 汽车上坡受力分析图
汽车上坡受力分析具体如图1所示。
1.2 根据汽车受力分析构建数学模型
1.根据牛顿第二定律,汽车受力公式为:
ma=Fi-Fb-Fy (1)
2.m假定为汽车质量,我们取200。
3.Fi为引擎动力,最大驱动力是2000,最大制动力是-3000,如下:
-3000<=Fi<= 2000 (2)
4.Fb为空气阻力,它与汽车运动时的速度成正比,可得如下表达式:
Fb=0.002(v+30sin(0.02a))2 (3)
“30sin(0.02a)”估算可能为“阵风”引起的,v为汽车在水平路上的正常速度。
5.Fy为重力向下分力,可得表达式:
Fy=40sin(0.0002vx) (4)
表达式中的正弦项是因为坡和水平路之间有夹角α变化所以引入的。
1.3 汽车上坡的Simulink模型及其参数配置[3]
根据上述数学模型,我们可以建立汽车上坡时的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
1.4 比例控制器及其Simulink模型
比例控制器的工作原理:利用假设速度和真实速度的差值作为“指令”驱动力Fx,可以构建数学模型:
Fx=K(v1-v) (5)
K是比例系数,可取K=60,v1是汽车的假设速度,v是汽车的真实速度。“指令”驱动力Fx和真实驱动力K的区别就是,第一个只是理论上的驱动力,第二个则是经过物理限制后才能使用的力。
根据公式(1)-(5),我们可以得出下面的Simu link模型,如图3:
SnInt-是假设速度的输入端口,SnInt+是真实速度的输入端口。FnOut是驱动力Fx的输出端口模块。
1.5汽车上坡的完整Simulink模型
将图2和图3组合连接放在一个新的模型窗口中,就能得到图4汽车上坡的完整模型,模型命名为Mod el_1.del。
2 汽车仿真
在图4中,SG模块的功能可以完成我们想要的假设速度,打开它的操作窗口,调整里面的数据。Low(下限)填0。High(上限)填200,滑动键代表可以调整的增益值(图中是:70,即:假设中汽车的速度)。这个模块还需要“恒值”输入信号Ct的激励。
因为我们需要更好地观察和比较,所以速度量需要被送到Dp(数值显示器)和Sc。这样,在仿真过程中我们就能在数值显示器上看到汽车的真实速度。
将图4模型窗口的仿真结束时间设置为8000,在仿真前先分别打开SG操作窗口和示波器窗口,开始仿真,仿真结果如图5,在仿真过程中,凡是在SG操作窗口移动滑键,我们都能在SG上看到相对应假设的速度。根据图形,我们能知道Dp上的真实速度正在不断向假设的速度靠近[4]。
3 汽车封装
3.1 子系统创建
打开Model_1.del模型,在模型窗口中用鼠标左键选中整个汽车上坡仿真,然后鼠标右键选择“Create Subsystem”,将选中部分包装在一个名为Subsystem的模块中,改名为Sub1,采用类似的操作,将比例控制器整理后改名为:Sub2,打开Sub2子系统模块的模型窗口,将其两个输入端模块和一个输出端模块的缺省名改为In-,In+和Out,然后仿照更改Sub1子系统输入模块和输出模块的缺省名分别为In,ClockIn1和Out。
最后整理一下图中的信号线和图形,得到图6生成子系统的完整仿真模型。
3.2 把汽車上坡仿真进行子系统封装
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是路面起伏系数。
3.3 为子系统设计提示和设置变量
打开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 封装子系统使用
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命令窗口中的已经赋值好了的变量或直接给定的数值经过参数设置对话框直接传递给封装子系统,然后通过子系统中各模块的对话窗口传递给各个模块,在这里,封装子系统参数设置对话框是该系统从外界获得参数的唯一途径。
4 结语
采用封装子系统,可以把Simulink子系统封装成一个模块,这样便于我们清晰的观看到系统中每一个子系统模块的功能,这样很方便我们直接输入想要的数据,而系统也能够将结果以图形的形式给我们以更直观和简洁的形式表达出来。
参考文献:
[1] 李根强,龚文胜,肖要强,等.MATLAB及Ma the matica软件应用[M].北京:人民邮电出版社,2016:1-170.
[2] 马东梅.Simulink仿真软件在自动控制原理教学中的应用[J].现代电子技术,2005:34-35,38.
[3] 胡寿松.自动控制原理基础教程第四版[M].北京:科学出版社,2017:1-333.
[4] 吴晓燕,张双选.MATLAB在自动控制中的应用[M].西安:西安电子科技大学出版社,2006:256-259.