增程式电动车(EREV)作为串联式混合动力的典型代表,其建模复杂度远超传统燃油车。我在参与某车企EREV开发项目时,曾用MATLAB/Simulink搭建过完整的整车模型,今天就把这套经过量产验证的建模方案拆解给大家。
EREV建模的特殊性在于需要精确模拟"发动机-发电机-电池-电机"的能量流闭环。不同于并联混动,发动机完全不参与直接驱动,而是作为"移动充电宝"为电池供电。这种独特架构带来三个建模难点:
推荐采用分层建模架构,自顶向下分为:
code复制└─顶层(整车级)
├─中层(系统级)
│ ├─工况选择模块
│ ├─驾驶员模型
│ └─模式控制器
└─底层(部件级)
├─动力总成
│ ├─发动机模型
│ ├─ISG电机模型
│ └─驱动电机模型
├─能量系统
│ ├─电池模型
│ └─DC/DC转换器
└─车辆动力学
├─传动系统
└─纵向动力学
关键技巧:使用Simulink的Model Reference功能实现模块化开发,每个子系统保存为独立.slx文件。这样既方便团队协作,又能通过加速模式(Accelerator)提升仿真速度。
各模块间通过标准总线(Simulink Bus)通信,主要信号包括:
matlab复制% 动力总线定义
Bus.Drive = struct(...
'torque_req', 0, ... % Nm
'speed_actual', 0, ... % rpm
'power_limit', 0 ... % kW
);
% 能量总线定义
Bus.Energy = struct(...
'voltage', 0, ... % V
'current', 0, ... % A
'soc', 0 ... % 0-1
);
不同于传统PID速度跟踪,EREV需要同时考虑加速踏板和制动踏板的双重输入。建议采用双闭环结构:
code复制速度误差 → PID控制器 → 扭矩需求
↓
[制动信号] → 混合器 → 最终扭矩指令
实测参数整定经验:
matlab复制Kp = 0.8; % 比例系数(城市工况建议0.6-1.2)
Ki = 0.05; % 积分系数(防止SOC振荡)
Kd = 0.1; % 微分系数(高速工况可增至0.15)
避坑指南:积分饱和是常见问题,务必加入抗饱和处理(Anti-windup)。我曾遇到因急刹车导致扭矩指令反向积分的情况,最终通过限制积分项范围解决。
核心状态机逻辑应包含:
实现示例:
matlab复制function [mode] = ModeController(SOC, brake, fault)
if fault ~= 0
mode = 4; % 故障模式
elseif brake > 0.1
mode = 3; % 制动回收
elseif SOC > 0.3
mode = 1; % 纯电
else
mode = 2; % 增程
end
end
推荐采用准静态模型(Quasi-static),平衡精度与速度:
code复制燃油消耗率 = f(转速, 扭矩) + 冷启动补偿
使用二维查表实现MAP图,数据来源:
典型参数:
matlab复制engine.speed_range = [800 4500]; % rpm
engine.torque_max = [120 130 125 110 90]; % Nm@[800 1500 2500 3500 4500rpm]
engine.bsfc_map = [320 300 290; ... % g/kWh
310 280 275; ...
305 270 265];
二阶RC等效电路模型已能满足多数场景:
code复制Uocv - Rp*Ip - Rs*Is = Vterminal
Ip = (Uocv - Up)/Rp
Is = C*dUp/dt
参数辨识建议:
实测发现:电池模型在低温工况(-10℃以下)误差会显著增大,此时需要增加温度补偿项。
建议内置三种典型工况:
实现方法:
matlab复制function [v_ref] = SelectCycle(cycle_type)
switch cycle_type
case 1
load('WLTC.mat');
case 2
load('CLTC.mat');
otherwise
v_ref = evalin('base','custom_cycle');
end
end
变步长设置:
并行计算:
matlab复制parpool('local',4);
spmd
sim('EREV_Model.slx');
end
代码生成:
matlab复制rtwbuild('EREV_Model'); % 生成C代码加速
现象:仿真时SOC持续下降/上升无法稳定
排查步骤:
现象:纯电/增程模式频繁切换
解决方案:
优化方案对比:
| 方法 | 加速比 | 适用场景 |
|---|---|---|
| 加速器模式 | 3-5x | 常规调试 |
| 代码生成 | 10-15x | 参数扫描 |
| 固定步长+并行 | 8-12x | 批量仿真 |
| 简化模型 | 20x+ | 早期概念验证 |
某项目对标数据示例:
| 指标 | 仿真值 | 实测值 | 误差 |
|---|---|---|---|
| 百公里电耗 | 15.2kWh | 15.8kWh | +4% |
| 增程油耗 | 5.3L/100km | 5.5L/100km | +3.8% |
| 0-100加速 | 8.7s | 8.9s | +2.3% |
matlab复制λ = SOC权重因子
m_fuel = m_actual + λ*P_batt/Hu
matlab复制[J_opt, U_opt] = dp_energy_opt(v_cycle, θ_init);
搭建HIL平台要点:
matlab复制webApp('EREV_Model','Viewer','simulation');
这套模型架构已经过三个量产项目验证,最新版本在i7-11800H处理器上运行WLTC工况仅需37秒(真实时间)。建议初次搭建时先从简化模型开始,逐步增加子系统复杂度。如果遇到电池模型发散问题,可以尝试改用Simscape Battery模块替代自定义模型。