前言:由于后续要从事汽车行业,所以这段时间对《汽车理论》这本书进行了系统的学习,并利用Matlab、Simulink对汽车的动力性、操纵稳定性、平顺性等进行了仿真,加深了对汽车理论的理解。开启这个系列是对自己学习内容的一个总结,也希望能够和优秀的前辈们多学习经验。本系列的全部代码及模型(带注释)都会放到百度云盘里共享,欢迎大家一起交流。
一、汽车的动力性指标
汽车的动力性主要可由三方面的指标来评定:
- 汽车的最高车速 umax:在水平良好的直线道路(混凝土或沥青)上汽车能达到的最高行驶稳定车速。
- 汽车的加速时间 t:原地起步加速时间(汽车由I档或Ⅱ档起步,并以最大的加速强度逐步换至最高档后到某一预定的距离或车速所需的时间)、超车加速时间(由最高档或次高档由某一较低车速全力加速至某一高速所需的时间)。
- 汽车的最大爬坡度 imax: 表征汽车的上坡能力。
二、汽车驱动力-行驶阻力平衡图
汽车的驱动力
驱动力 Ft 是由发动机的转矩 Ttq 经传动系统传至驱动轮上得到的。用Tt 表示驱动轮上的转矩,用ig表示变速器的传动比,i0表示主减速器的传动比,nt表示传动系统的机械效率,则有:
T t = T t q ⋅ i g ⋅ i 0 ⋅ n t T_t = T_{tq}\cdot i_g\cdot i_0\cdot nt Tt=Ttq⋅ig⋅i0⋅nt
F t = T t / r F_t = T_t / r Ft=Tt/r
因此有: F t = T t q ⋅ i g ⋅ i 0 ⋅ n t / r F_t = T_{tq}\cdot i_g\cdot i_0\cdot nt / r Ft=Ttq⋅ig⋅i0⋅nt/r
发动机转矩曲线
由试验测得的转矩特性曲线如下:
发动机转速 n/(r/min) | 1000 | 1500 | 2000 | 2500 | 3000 | 3500 | 4000 | 4500 | 5000 |
---|---|---|---|---|---|---|---|---|---|
发动机转矩 Ttq /(N.m) | 78.6 | 83.0 | 85.0 | 86.6 | 87.1 | 85.9 | 84.7 | 82.5 | 80.5 |
利用matlab的工具 Curve Fitting Tool可模拟出发动机转矩与转速的关系函数
在matlab命令行中输入:cftool,即可调用曲线拟合工具箱。利用“X data”和“Y data”下拉菜单读入转速数据和转矩数据T,选择多项式函数“Polynomial”,再选择拟合阶数“3”;自动拟合,就会在结果窗口和曲线窗口显示出拟合结果,如下图所示:
由此可得转矩与转速的关系函数:
Tq = 65.07 + 0.01756 * n - (4.225e-6) * n.^2 + (2.714e-10) * n.^3; % 计算发动机转矩
发动机转速与汽车行驶速度之间的关系式为:
u a = 0.377 ∗ r ∗ n / ( i g ∗ i 0 ) u_a = 0.377*r*n/(i_g*i_0) ua=0.377∗r∗n/(ig∗i0) 其中,r为车轮半径(m),n为发动机转速(r/min),ig 表示变速器的传动比,i0 表示主减速器的传动比。
汽车的行驶阻力
汽车在水平道路上等速行驶时,必须克服来自地面的滚动阻力 Ff 和来自空气的空气阻力 Fw 。当汽车在坡道上上坡行驶时,还必须克服重力沿坡道的分力,称为坡道阻力 Fi 。当汽车加速时,还需克服加速阻力 Fj 。因此汽车行驶的总阻力为:
Σ F = F f + F w + F i + F j ΣF = F_f +F_w+F_i+F_j ΣF=Ff+Fw+Fi+Fj
- 滚动阻力: F f = m ∗ g ∗ f F_f = m*g*f Ff=m∗g∗f 其中,f为滚动阻力系数。
- 空气阻力: F w = C D ∗ A ∗ u a 2 / 21.15 F_w = C_D * A * u_a^2 / 21.15 Fw=CD∗A∗ua2/21.15 其中,CD为空气阻力系数,A为汽车迎风面积,单位为m^2,ua为汽车行驶速度,单位为km/h。
- 坡道阻力: F i = m ∗ g ∗ s i n a F_i = m*g*sina Fi=m∗g∗sina 其中a为坡道角度。
- 加速阻力:汽车加速行驶时,需要克服其质量加速运动时的惯性力,就是加速阻力Fj。
F j = d e l t a ∗ m ∗ d u / d t F_j = delta*m*du/dt Fj=delta∗m∗du/dt 其中delta为汽车旋转质量换算系数,主要与车轮的转动惯量、传动比有关,delta>1,du/dt为行驶加速度,单位为m/s2。
实例Matlab代码
%% 1、绘制驱动力-行驶阻力平衡图
% 发动机转矩与转速曲线
% n = [1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000];
% T = [78.6, 83.0, 85.0, 86.6, 87.1, 85.9, 84.7, 82.5, 80.5];% 通过matlab的cftool工具箱,拟合出转速与转矩的三阶函数。
n = 800:10:6800; % 定义转速范围
Tq = 65.07 + 0.01756 * n - (4.225e-6) * n.^2 + (2.714e-10) * n.^3; % 计算发动机转矩% 汽车参数赋值
m = 936; % 汽车质量
g = 9.8; % 重力加速度
r = 0.272; % 车轮半径
nt = 0.9; % 传动效率
CD = 0.3; % 空气阻力系数
A = 1.75; % 迎风正面面积
f = 0.012; % 滚动阻力系数
i0 = 4.388; % 主减速比
ig = [3.416, 1.894, 1.28, 1.00, 0.757]; % 变速器各档传动比% 通过转矩来计算驱动力
Ft1 = Tq * ig(1) * i0 * nt / r; % 计算一档驱动力
Ft2 = Tq * ig(2) * i0 * nt / r; % 计算二档驱动力
Ft3 = Tq * ig(3) * i0 * nt / r; % 计算三档驱动力
Ft4 = Tq * ig(4) * i0 * nt / r; % 计算四档驱动力
Ft5 = Tq * ig(5) * i0 * nt / r; % 计算五档驱动力% 通过转速来计算速度
ua1 = 0.377 * r * n / ig(1) / i0; % 计算一档速度
ua2 = 0.377 * r * n / ig(2) / i0; % 计算二档速度
ua3 = 0.377 * r * n / ig(3) / i0; % 计算三档速度
ua4 = 0.377 * r * n / ig(4) / i0; % 计算四档速度
ua5 = 0.377 * r * n / ig(5) / i0; % 计算五档速度ua = 0 : 5 : 200; % 设置速度范围
Ff = m * g * f; % 计算滚动阻力
Fw = CD * A * ua.^2 / 21.15; % 计算空气阻力
F = Ff + Fw; % 计算滚动阻力与空气阻力之和% 绘制汽车驱动力-行驶阻力平衡图
figure(1)
plot(ua1, Ft1, ua2, Ft2, ua3, Ft3, ua4, Ft4, ua5, Ft5, ua, F);
xlabel('车速 / (km/h)');
ylabel('汽车驱动力/行驶阻力 / N')
text(35, 4100, 'Ft1'), text(55, 2300, 'Ft2'), text(100, 1600, 'Ft3'), text(140, 1200, 'Ft4'), text(200, 900, 'Ft5');
text(175, 1150, 'Ff + Fw');% 求出最高速度umax
Fw5 = CD * A * ua5.^2 / 21.15; % 计算五档空气阻力
Fz1 = Ff + Fw5; % 计算五档滚动阻力与空气阻力之和(求最高速度时只考虑滚动阻力和空气阻力)
k = find(abs(Ft5 - Fz1) < 1.5);
umax = ua5(k);
fprintf('最高车速 Vmax = %.2f km/h\n', umax);%% 2、绘制各档加速度曲线图
dt1 = 1.03 + 0.04 * ig(1); % 计算一档旋转质量换算系数
dt2 = 1.03 + 0.04 * ig(2); % 计算二档旋转质量换算系数
dt3 = 1.03 + 0.04 * ig(3); % 计算三档旋转质量换算系数
dt4 = 1.03 + 0.04 * ig(4); % 计算四档旋转质量换算系数
dt5 = 1.03 + 0.04 * ig(5); % 计算五档旋转质量换算系数Fw1 = CD * A * ua1.^2 / 21.15; % 计算一档空气阻力
Fw2 = CD * A * ua2.^2 / 21.15; % 计算二档空气阻力
Fw3 = CD * A * ua3.^2 / 21.15; % 计算三档空气阻力
Fw4 = CD * A * ua4.^2 / 21.15; % 计算四档空气阻力a1 = (Ft1 - Ff - Fw1) / dt1 / m; % 计算一档加速度
a2 = (Ft2 - Ff - Fw2) / dt2 / m; % 计算二档加速度
a3 = (Ft3 - Ff - Fw3) / dt3 / m; % 计算三档加速度
a4 = (Ft4 - Ff - Fw4) / dt4 / m; % 计算四档加速度
a5 = (Ft5 - Ff - Fw5) / dt5 / m; % 计算五档加速度% 绘制各档加速度曲线图
figure(2)
plot(ua1, a1, ua2, a2, ua3, a3, ua4, a4, ua5, a5);
xlabel('车速 / (km/h)');
ylabel('加速度 / (m/s^2)');
text(35, 3.7, '一档');
text(55, 2.2, '二档');
text(85, 1.3, '三档');
text(120, 0.8, '四档');
text(150, 0.3, '五档');%% 3、计算爬坡度曲线
i1 = asin((Ft1 - Ff - Fw1) / m / g); % 计算一档爬坡度
i2 = asin((Ft2 - Ff - Fw2) / m / g); % 计算二档爬坡度
i3 = asin((Ft3 - Ff - Fw3) / m / g); % 计算三档爬坡度
i4 = asin((Ft4 - Ff - Fw4) / m / g); % 计算四档爬坡度
i5 = asin((Ft5 - Ff - Fw5) / m / g); % 计算五档爬坡度
figure(3)
plot(ua1, i1, ua2, i2, ua3, i3, ua4, i4, ua5, i5);
xlabel('车速 / (km/h)');
ylabel('爬坡度 / rad');
text(35, 0.45, '一档');
text(55, 0.25, '二档');
text(85, 0.15, '三档');
text(120, 0.1, '四档');
text(150, 0.05, '五档');
结果如下图所示:
三、汽车动力特性图
利用汽车驱动力-行驶阻力平衡图可以确定汽车的动力性,但不能直接用来评价不同种类汽车的动力性。因为汽车的种类不同,其重量或外形也有所不同,因此各行驶阻力也不同,也就是说即使驱动力相近的汽车,其动力性也不相近。因此需要找一个既考虑驱动力,又兼顾汽车自重和空气阻力的综合性参数:汽车动力因数。
通常把汽车动力因数作为表征汽车动力特性的指标,表示单位车重所具有的克服道路阻力和加速阻力的能力。汽车动力因数表达式如下:
D = ( F t − F w ) / m g D = (F_t - F_w) / mg D=(Ft−Fw)/mg 汽车动力因数D和速度u的关系图称为汽车动力特性图。
由汽车驱动力-行驶阻力平衡关系式可得: Σ F = F f + F w + F i + F j ΣF = F_f +F_w+F_i+F_j ΣF=Ff+Fw+Fi+Fj F t − F w = F f + F i + F j F_t - F_w = F_f +F_i+F_j Ft−Fw=Ff+Fi+Fj ( F t − F w ) / m g = ( F f + F i + F j ) / m g (F_t - F_w)/mg = (F_f +F_i+F_j)/mg (Ft−Fw)/mg=(Ff+Fi+Fj)/mg 加速时不考虑坡道阻力,则汽车的加速度与动力因数的关系式为: D = f + d e l t a / g ∗ d u / d t D = f+delta/g * du/dt D=f+delta/g∗du/dt d u / d t = ( D − f ) ∗ g / d e l t a du/dt = (D-f)*g/delta du/dt=(D−f)∗g/delta
实例Matlab代码
%% 4、汽车动力特性图
Dt1 = (Ft1 - Fw1) / m / g; % 计算一档动力因数
Dt2 = (Ft2 - Fw2) / m / g; % 计算二档动力因数
Dt3 = (Ft3 - Fw3) / m / g; % 计算三档动力因数
Dt4 = (Ft4 - Fw4) / m / g; % 计算四档动力因数
Dt5 = (Ft5 - Fw5) / m / g; % 计算五档动力因数
f = (F - Fw) / m / g; % 滚动阻力系数填进和ua维度一致的矩阵% 汽车动力特性图
figure(4)
plot(ua1, Dt1, ua2, Dt2, ua3, Dt3, ua4, Dt4, ua5, Dt5, ua, f);
xlabel('车速 / (km/h)');
ylabel('汽车动力因数');
text(50, 0.45, '一档');
text(50, 0.28, '二档');
text(100, 0.2, '三档');
text(150, 0.1, '四档');
text(170, -0.05, '五档');
text(180, 0.03, '滚动阻力系数');f = 0.012;
k = find(abs(Dt5 - f) < 0.001);
uamax = ua5(k);
fprintf('最高车速 Vmax = %.2f km/h \n', umax);a1 = g * (Dt1 - f) / dt1; % 计算一档加速度
a2 = g * (Dt2 - f) / dt2; % 计算一档加速度
a3 = g * (Dt3 - f) / dt3; % 计算一档加速度
a4 = g * (Dt4 - f) / dt4; % 计算一档加速度
a5 = g * (Dt5 - f) / dt5; % 计算一档加速度
figure(5)
plot(ua1, a1, ua2, a2, ua3, a3, ua4, a4, ua5, a5);
xlabel('车速 / (km/h)');
ylabel('加速度 / (m/s^2)');
text(35, 3.7, '一档');
text(55, 2.2, '二档');
text(85, 1.3, '三档');
text(120, 0.8, '四档');
text(150, 0.3, '五档');% 计算爬坡度曲线
i1 = asin(Dt1 - f.*(1 - Dt1.^2 + f.^2).^0.5) ./ (1+f.^2); % 计算一档爬坡度
i2 = asin(Dt2 - f.*(1 - Dt2.^2 + f.^2).^0.5) ./ (1+f.^2); % 计算一档爬坡度
i3 = asin(Dt3 - f.*(1 - Dt3.^2 + f.^2).^0.5) ./ (1+f.^2); % 计算一档爬坡度
i4 = asin(Dt4 - f.*(1 - Dt4.^2 + f.^2).^0.5) ./ (1+f.^2); % 计算一档爬坡度
i5 = asin(Dt5 - f.*(1 - Dt5.^2 + f.^2).^0.5) ./ (1+f.^2); % 计算一档爬坡度
figure(6)
plot(ua1, i1, ua2, i2, ua3, i3, ua4, i4, ua5, i5);
xlabel('车速 / (km/h)');
ylabel('爬坡度 / rad');
text(35, 0.45, '一档');
text(55, 0.25, '二档');
text(85, 0.15, '三档');
text(120, 0.1, '四档');
text(150, 0.05, '五档');
四、汽车功率平衡图
将汽车行驶方程式两边乘以行驶车速ua,并经单位换算整理得出汽车功率平衡方程式。
发动机功率为: P e = F t ∗ u a / 3600 P_e = F_t*u_a/3600 Pe=Ft∗ua/3600 滚动阻力功率为: P f = m ∗ g ∗ f ∗ u a ∗ c o s ( a l p h a ) / 3600 P_f = m*g*f*u_a*cos(alpha) / 3600 Pf=m∗g∗f∗ua∗cos(alpha)/3600 空气阻力功率为: P w = C D ∗ A ∗ U 3 / 76140 P_w = C_D*A*U^3/76140 Pw=CD∗A∗U3/76140 坡道阻力功率为: P i = m ∗ g ∗ u a ∗ s i n ( a l p h a ) / 3600 P_ i= m*g*u_a*sin(alpha)/3600 Pi=m∗g∗ua∗sin(alpha)/3600 加速阻力功率为: P j = d e l t a ∗ m ∗ u a / 3600 ∗ d u / d t P_j = delta*m*u_a/3600 * du/dt Pj=delta∗m∗ua/3600∗du/dt
当坡度较小时,sin(alpha) = tan(alpha) = i; cos(alpha) = 1;
实例Matlab代码
%% 5、利用功率平衡图进行汽车动力性仿真
Pe1 = Ft1 .* ua1 ./ 3600; % 计算一档发动机功率
Pe2 = Ft2 .* ua2 ./ 3600; % 计算二档发动机功率
Pe3 = Ft3 .* ua3 ./ 3600; % 计算三档发动机功率
Pe4 = Ft4 .* ua4 ./ 3600; % 计算四档发动机功率
Pe5 = Ft5 .* ua5 ./ 3600; % 计算五档发动机功率Pf = m * g * f * ua / 3600; % 计算滚动阻力功率
Pw = CD * A * ua .^ 3 / 76140; % 计算空气阻力功率
P = Pf + Pw;
figure(7)
plot(ua1, Pe1, ua2, Pe2, ua3, Pe3, ua4, Pe4, ua5, Pe5, ua, P);
xlabel('车速 /(km/h)');
ylabel('汽车功率 / (kW)');
text(50, 50, '一档');
text(80, 50, '二档');
text(120, 50, '三档');
text(150, 50, '四档');
text(200, 50, '五档');
text(150, 60, '阻力功率');% 根据功率求最大速度
Pw5 = CD * A * ua5 .^ 3 / 76140; % 计算五档空气阻力功率
Pf5 = m * g * f * ua5 / 3600; % 计算五档滚动阻力功率
Pz = Pw5 + Pf5;
k = find(abs(Pe5 - Pz) < 0.1);
umax = ua5(k);
fprintf('最高车速 Vmax = %.2f km/h\n', umax);
五、Simulink建模
参考B站尚禾师兄的视频,将以上的关系式用simulink进行建模也非常方便。可以用matlab做一遍在用simulink做一遍,加深理解。
B站视频链接:
B站汽车动力性Simulink建模
模型如下图所示:
六、总结
- 汽车的动力性主要包括三个参数:最高车速、加速时间及最大爬坡度。在求最高速度的时候,只考虑滚动阻力及空气阻力;求加速度的时候,不考虑坡道阻力;求爬坡度的时候,不考虑加速阻力。
- Matlab和Simulink只是工具,使用工具可以加深我们对理论的理解,掌握一种建模方法即可。