汽车电子
并联混合动力汽车的工作模式可以分为六种。纯电动模式、纯发动机模式、混合驱动模式、充电模式、再生制动模式、怠速停车模式。
当电池SOC较高且并联混合动力汽车处于低速或轻载等工况时,发动机停止工作,由电池提供能量驱动电机带动整车运动;
当电池SOC维持在正常范围内且并联混合动力汽车处于中高速或中等负荷时,电机停止工作,发动机带动整车运动(此时,发动机工作于高效区且排放性能好);
当并联混合动力汽车处于高爬坡或急加速等负荷且车辆所需功率超过发动机最大功率时,电机启动,对发动机进行助力;
当电池SOC较低且并联混合动力汽车处于中低负荷时,发动机除了要驱动车辆外,还需额外对电池进行充电;
当并联混合动力汽车制动或减速时,电机可回收再生制动能量;
当并联混合动力汽车停车或怠速时,若电池SOC较低,发动机为电池充电。
1、并联混合动力汽车仿真建模
以某型并联混合动力汽车为例,其基本参数为:
E_max = 1.7*1000*3600; % 电池尺寸
M_battery = E_max/46/3600; % 电池质量,kg
M_passenger = 250; % 乘客+驾驶员质量, kg
M_veh = 1746 + M_passenger + M_battery; % 整车质量, kg
C_D = 0.35; % 阻力系数
C_0 = 0.015; % 滚动阻力系数
A_F = 1.93; % 迎风面积, m^2
eta_ess = 0.7; % 储能系统效率
r_wheel = 0.2794; % 车轮半径, m
P_min_eng = 10000.0; % 发动机最小功率, W
P_max_eng = 80000.0; % 发动机最大功率, W
G_diff = 0.25; % 差速器传动比
G_trans_min = 0.3; % 最小传动比
% 单位换算
m_to_mi = 1/1609; % meters to miles
g_hr_to_gal_s = 9.778e-8; % g/hr to gal/s
mph_to_mps = 0.44704; % mi/hr to m/s
% 物理常数
rho = 1.225; % 空气密度,kg/m^3
g = 9.8; % 重力加速度,m/s^s
SOC_init = 0.5; % SOC初值
设置好参数后,基于动态工况仿真实验,验证并联混合动力汽车的相关性能。我们搭建的并联混合动力汽车模型如下图所示:
牵引力及功率计算公式如下所示:
Ftractive= Frolling_resistance + Faero + Facceleration , assuming grade = 0. (1)
Frolling_resistance = M_veh*g*C_0 (2)
Faero = 0.5*rho*Afrontal *C_D*v_veh^2 (3)
Facceleration = M_veh*a_veh (4)
Ptractive = Ftractive*v_veh (5)
电机转速和转矩计算公式如下所示:
ωlow=Gtrans*ωhigh (6)
ωright.wheel=ωleft.wheel (7)
uveh=rwheel*ωwheel (8)
ωlow=Gelecmach*ωelecmach (9)
并联混合动力汽车能量管理策略function函数如下所示:
v_min = 2.19; % 最小车速, in m/s
P_min = 10000; % 发动机最小功率 in W
P_max = 80000; % 发动机最大功率
G_trans_min = 0.3; % 最小传动比
G_diff = 0.25; % 差速器传动比
r_wheel = 0.2794; % 车轮半径 in m
%% 并联混合动力汽车工作模式
if (v_veh < v_min)
P_elecmach = P_tractive;
P_eng = 0;
fuel_rate = 0;
w_eng = 0;
G_trans = G_trans_min;
return
end
if(P_tractive < P_min)
P_elecmach = P_tractive;
fuel_rate = 0;
w_eng = 0;
P_eng = 0;
G_trans = G_trans_min;
return
end
if(P_tractive > P_max)
P_elecmach = P_tractive-P_max;
P_eng = P_max;
bsfc = interp1(eng_map(:,2), eng_map(:,3), P_eng/1000);
fuel_rate = bsfc*P_eng/1000; % g/hr
w_eng = interp1(eng_map(:,2), eng_map(:,1), P_eng/1000);
w_rad_p_s = w_eng*pi/30; % convert to rad/s
G_trans = v_veh/r_wheel/G_diff/w_rad_p_s;
return
end
P_elecmach = -(P_max-P_tractive)*(0.5-SOC);
P_eng = P_tractive-P_elecmach;
bsfc = interp1(eng_map(:,2), eng_map(:,3), P_eng/1000);
fuel_rate = bsfc*P_eng/1000; % g/hr
w_eng = interp1(eng_map(:,2), eng_map(:,1), P_eng/1000);
w_rad_p_s = w_eng*pi/30; % convert to rad/s
G_trans = v_veh/r_wheel/G_diff/w_rad_p_s;
if(P_eng< P_min)
P_eng = 0;
P_elecmach = P_tractive;
fuel_rate = 0;
w_eng = 0;
G_trans = G_trans_min;
return
end