依据工况数据计算整车驱动力
任务要求:给一段行驶工况(车速随时间的曲线)和整车参数求解驱动力。用simulink实现并绘制曲线。
一、脚本输入simulink建模所需参数
这一部分加载后,参数就会出现在工作区。具体代码如下
%程序要多写注释,方便日后理解与修改
%%定义参数
clear
veh_gravity=9.81; %重力加速度
veh_mass=1180;%整车最大质量 kg
wh_rrc=0.012;%滚动阻力系统
wh_a=0;%坡道
veh_CD=0.335;%CD值
veh_FA=2;%m^2
%%导入行驶工况
load('cyc_chtc_p.mat')%加载工况数据,中国工况
%第一列为时间,第二列为车速,km/h
二、simulink建模
simulink是模块化建模,打开matlab2021a。点击主页->新建->Simulink model->Blank Model
点击Library Browser->Simulink->Sources
对模块不熟悉的时候,可以先想清楚要用什么样功能的模块,再去百度搜或者帮助中搜。如我们可以搜“simulink从工作区导入随时间变化的数据”。
按照这个上面的教程可以完成你想要的功能。
导入后双击该模块,
出现如下图的界面,在data这里输入工作区的工况变量,cyc_kmh。Sampletime这里填写1.因为我们的数据是1s一个数据。
点击ok。我们想看一下数据是不是我们想要的,就用示波器Scope看一下。点击Library Browser->Simulink->Sinks
选择Scope。拖动Scope到模型中。
如果对模块比较熟悉,记得名字。直接在模型空白处,双击便会出现搜索框,输入scope,选择第一个就可以把示波器模块加入到模型中。将两个模块连接起来。箭头表示数据传输方向。
设置模型Stope Time为1800s
点击模型的RUN,双击scope模块,便可以看到scope显示的数据。
导入常参量,双击空白处,搜索constant。将工作区的常参量都导入。
开始计算四种阻力。
F f = G F f c o s ( α ) F_f=GF_fcos(\alpha) Ff=GFfcos(α)
要用乘法和三角函数,双击空白处,搜product
同样也可以搜cos。把需要运算的数连接起来,质量乘以重力加速度,坡度给cos。
乘法模块要设置多少个输入,这里是4个。同样用示波器看一下得到的数据。
点击RUN后,双击SCOPE模块,查看数据。
计算空气阻力,用到了一个gain(增益)模块,就是乘以一个常数。
计算加速阻力。应用差分(difference)模块计算加速度,差分表示当前时刻数据减去上一时刻的数据。因此速度计算加速度,应该是
a = v t − v t − 1 Δ t a=\frac{v_t-v_{t-1}}{\Delta t} a=Δtvt−vt−1
Δ t \Delta t Δt 是1s。所以没有乘。
再计算加速阻力和坡道阻力,就不详细讲了,再做这里的时候,先不看图上的模块,自己想一想怎么计算。试着操作下。然后再看图。
将四种阻力加起来就是驱动力了,同学们自己做一下吧。
当模块多了后会比较杂乱,可以建立子系统(create subsystem)
最终结果
代码所需的mat文件。mat文件是matlab用来存储数据的。
链接:https://pan.baidu.com/s/1fCvWrzZkLvCh5TK7jZA9BQ
提取码:a61a