1. 增程式混合动力汽车技术概述
增程式混合动力汽车(Range-Extended Electric Vehicle, REEV)是一种特殊的混合动力架构,其动力系统由发动机、发电机、动力电池和驱动电机组成。与传统并联式混合动力不同,增程器(发动机+发电机)不直接驱动车轮,而是作为"移动充电宝"为电池组补充电能。
这种串联式架构的核心优势在于:
- 发动机始终工作在最佳效率区间(通常设定为固定转速),燃油经济性比传统汽车提升30-50%
- 纯电驱动特性使整车具备电动车般的平顺加速体验
- 电池组容量小于纯电动车(通常20-40kWh),成本更低且重量更轻
- 消除里程焦虑,综合续航可达500-800公里
在Matlab仿真环境中,我们需要对以下子系统进行建模:
- 发动机-发电机组的效率MAP图建模
- 锂离子电池的等效电路模型(包括SOC估算)
- 永磁同步电机的矢量控制模型
- 整车纵向动力学模型(含滚动阻力、空气阻力、坡道阻力等)
- 驾驶员操作模型(加速踏板/制动踏板特性)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 整车动力学建模关键技术
2.1 纵向动力学方程构建
整车受力分析遵循牛顿第二定律:
code复制F_tractive = m·a + F_roll + F_aero + F_grade
其中:
- m为整车质量(需考虑旋转部件等效质量)
- F_roll = m·g·cosθ·Cr (滚动阻力,Cr约0.01-0.015)
- F_aero = 0.5·ρ·Cd·A·v² (空气阻力,Cd约0.28-0.35)
- F_grade = m·g·sinθ (坡道阻力)
在Matlab中实现时,建议采用面向对象编程:
matlab复制classdef VehicleDynamics
properties
mass; % 整车质量 [kg]
C_d; % 风阻系数
frontal_A; % 迎风面积 [m²]
C_r; % 滚动阻力系数
end
methods
function F = calcResistance(obj, v, grade)
F_roll = obj.mass * 9.8 * obj.C_r * cos(grade);
F_aero = 0.5 * 1.225 * obj.C_d * obj.frontal_A * v^2;
F_grade = obj.mass * 9.8 * sin(grade);
F = F_roll + F_aero + F_grade;
end
end
end
2.2 轮胎-地面相互作用模型
轮胎力学采用魔术公式(Magic Formula):
code复制F_x = D·sin(C·arctan(B·κ - E·(B·κ - arctan(B·κ))))
其中κ为滑移率,参数B、C、D、E需通过试验数据拟合。在仿真中可简化为:
matlab复制function F_x = tireForce(kappa, F_z)
% 简化魔术公式模型
B = 10; C = 1.6; D = 0.8*F_z; E = 0.2;
F_x = D*sin(C*atan(B*kappa - E*(B*kappa - atan(B*kappa))));
end
3. 增程器系统建模
3.1 发动机MAP图建模
发动机特性通过三维插值表实现:
matlab复制% 发动机转速向量 [rpm]
engine_speed = [1000:500:4000];
% 发动机扭矩向量 [Nm]
engine_torque = [50:10:150];
% 燃油消耗率 [g/kWh]
fuel_map = [280 275 270 268 265;
270 266 263 260 258;
265 260 258 255 253;
260 255 252 250 248;
255 250 248 245 243];
% 创建插值函数
engine_bsfc = @(w,T) interp2(engine_torque,engine_speed,fuel_map,T,w,'spline');
3.2 发电机效率模型
永磁同步发电机效率η可表示为:
code复制η = 0.92 - 0.2*(P/P_rated - 0.7)²
其中P_rated为额定功率。Matlab实现:
matlab复制function eta = generatorEfficiency(P, P_rated)
% 发电机效率曲线模型
x = P/P_rated;
eta = 0.92 - 0.2*(x - 0.7).^2;
eta = max(min(eta, 0.95), 0.7); % 效率限幅
end
4. 电池系统建模
4.1 等效电路模型
采用二阶RC模型:
code复制U_ocv = U_bat - I·R_0 - U_p1 - U_p2
其中极化电压微分方程为:
code复制dU_p1/dt = I/C_p1 - U_p1/(R_p1·C_p1)
dU_p2/dt = I/C_p2 - U_p2/(R_p2·C_p2)
Simulink实现路径:
- 创建三个电压测量模块(U_ocv、U_p1、U_p2)
- 使用Transfer Fcn模块实现RC网络
- 通过Lookup Table实现OCV-SOC关系
- SOC估算采用Ah积分法:
matlab复制function soc = updateSOC(soc_prev, I, dt, Q_max) soc = soc_prev - (I*dt)/(3600*Q_max); soc = max(min(soc, 1), 0); % SOC限幅0-100% end
4.2 热耦合模型
电池温度变化模型:
code复制dT/dt = (I²·R_0 + Q_side - h·A·(T-T_amb))/(m·Cp)
参数建议值:
- h = 25 W/(m²·K) (对流换热系数)
- Cp = 1100 J/(kg·K) (比热容)
- Q_side ≈ 5%·I²·R_0 (副反应发热)
5. 驾驶员模型开发
5.1 预瞄跟随算法
采用经典PID控制策略:
matlab复制classdef DriverModel
properties
Kp = 0.8; % 比例增益
Ki = 0.05; % 积分增益
Kd = 0.1; % 微分增益
prev_error = 0;
integral = 0;
lookahead_time = 1.5; % 预瞄时间[s]
end
methods
function [throttle, brake] = control(obj, v_target, v_actual, dt)
% 速度误差计算
error = v_target - v_actual;
% PID控制
obj.integral = obj.integral + error * dt;
derivative = (error - obj.prev_error) / dt;
output = obj.Kp*error + obj.Ki*obj.integral + obj.Kd*derivative;
% 输出分配
if output >= 0
throttle = min(output, 1);
brake = 0;
else
throttle = 0;
brake = min(-output, 1);
end
obj.prev_error = error;
end
end
end
5.2 驾驶循环跟踪
建议采用NEDC或WLTC标准循环:
matlab复制% 生成WLTC速度曲线
t = 0:1800; % 1800秒循环
v_wltc = [zeros(1,20), linspace(0,15,10), 15*ones(1,15),...];
% 驾驶员模型调用示例
driver = DriverModel;
for k = 1:length(t)-1
dt = t(k+1) - t(k);
[throttle(k), brake(k)] = driver.control(v_wltc(k), v_actual(k), dt);
end
6. Simulink仿真框架搭建
6.1 顶层架构设计
建议采用如图所示的模块化结构:
code复制[驾驶员模型] → [整车控制器] → [增程器系统]
↓
[动力电池] → [驱动电机] → [传动系统] → [车辆动力学]
关键接口信号:
- 加速踏板位置(0-100%)
- 制动踏板位置(0-100%)
- 需求扭矩(Nm)
- 实际车速(km/h)
- 电池SOC(%)
6.2 批处理仿真技巧
利用MATLAB脚本自动化多工况仿真:
matlab复制% 创建参数组合
soc_init = [0.3, 0.5, 0.7]; % 初始SOC
payload = [0, 200, 400]; % 载重[kg]
% 批处理仿真
results = cell(length(soc_init), length(payload));
for i = 1:length(soc_init)
for j = 1:length(payload)
% 设置参数
set_param('REEV_Model/Battery', 'InitialSOC', num2str(soc_init(i)));
set_param('REEV_Model/Vehicle', 'Mass', num2str(1500+payload(j)));
% 运行仿真
simout = sim('REEV_Model', 'StopTime', '1800');
% 存储结果
results{i,j} = simout;
end
end
7. 模型验证与调试
7.1 典型问题排查
-
代数环问题:
- 现象:仿真报错"Algebraic loop detected"
- 解决方案:在反馈回路中加入Memory模块或Unit Delay
-
零 crossings过多:
- 现象:仿真速度极慢
- 调整方法:在Solver Configuration中禁用Zero-Crossing检测
-
电池SOC发散:
- 检查Ah积分算法的采样时间是否与仿真步长一致
- 验证电流传感器量程是否合理
7.2 关键指标验证
完成仿真后需检查:
- 能量流平衡:
code复制E_fuel + E_bat_initial = E_drive + E_bat_final + E_loss - 发动机工作点是否集中在高效区(通常30-40%负荷)
- 电池SOC波动范围是否合理(建议维持40-70%)
- 百公里电耗(kWh/100km)和油耗(L/100km)是否符合预期
我在实际项目中总结的调试经验:
- 先验证各子系统单独工作正常,再逐步集成
- 使用Simulink的Signal Logging功能记录关键信号
- 对于长时间仿真,适当放宽相对误差容限(如1e-3)可大幅提升速度
- 善用Fast Restart功能快速迭代参数调整
