1. P2构型混合动力系统概述
P2构型并联混合动力系统是目前主流的混动架构之一,其核心特征是将电机布置在发动机与变速器之间(P2位置)。这种布局允许系统实现多种工作模式:纯电驱动、发动机单独驱动、混合驱动、行车充电以及再生制动。与串联或功率分流构型相比,P2构型在结构紧凑性和成本效益方面具有显著优势。
在实际工程开发中,我们通常采用"V模式"开发流程。这意味着需要在硬件制造前,先通过仿真手段验证控制策略的有效性。Cruise+Simulink的联合仿真方案之所以成为行业标准工具链,主要基于以下三个技术优势:
- Cruise提供经过工程验证的车辆动力学模型库,包含发动机、电机、电池等200+个参数化模块
- Simulink支持从算法设计到代码生成的完整控制开发流程
- 两者通过DLL接口实现的联合仿真,能够保持μs级的时间同步精度
2. 整车动力学模型搭建
2.1 Cruise平台建模要点
在Cruise中搭建P2构型模型时,需要特别注意几个关键模块的连接关系。以下是典型的模块配置清单:
| 模块类型 | 关键参数 | 工程经验值 |
|---|---|---|
| 发动机 | 外特性曲线、油耗MAP | 根据实际台架数据导入 |
| P2电机 | 峰值功率/扭矩、效率MAP | 通常选用30-60kW电机 |
| 电池包 | 容量、内阻曲线、SOC窗口 | 建议SOC工作窗口20%-80% |
| 变速器 | 速比、效率 | 保留原车变速器参数 |
| 整车 | 质量、风阻系数、滚阻 | 需考虑电池增加的重量 |
特别注意:P2电机的安装位置需要精确配置在发动机飞轮与变速器输入轴之间,这个位置的离合器状态直接影响工作模式切换。
2.2 参数化建模技巧
-
发动机建模:建议导入实测的万有特性曲线,至少包含5个转速点的扭矩-油耗数据。Cruise支持.csv格式直接导入:
code复制RPM[Nm], Torque[Nm], FuelConsumption[g/kWh] 1000, 80, 240 1500, 110, 230 ... -
电池参数设置:除了常规容量参数外,需要特别注意内阻的温度特性。建议采用二阶RC等效电路模型,在不同SOC点设置不同的内阻值。
-
传动效率配置:每个机械连接点都要设置效率损失,典型值为:
- 发动机到电机:98%
- 电机到变速器:97%
- 变速器各档位:95%-97%
3. 控制策略开发详解
3.1 模式切换状态机设计
P2构型有6种基本工作模式,其切换逻辑需要满足ISO 26262功能安全要求。建议采用有限状态机(FSM)实现:
mermaid复制stateDiagram
[*] --> EV: SOC>30% & 需求扭矩<电机峰值
EV --> Series: SOC<25% & 车速稳定
Series --> Parallel: 需求扭矩>电机能力
Parallel --> Regen: 制动踏板信号
Regen --> EV: 车速>10km/h & 制动解除
实际Simulink实现时,建议使用Stateflow模块,并添加以下保护逻辑:
- 模式切换时的扭矩协调(ramp up/down)
- 离合器接合时的转速同步控制
- 故障状态下的降级模式
3.2 再生制动算法实现
再生制动需要解决两个核心问题:制动力分配和电机发电控制。推荐采用基于ECE法规的分配策略:
python复制def regen_braking(vehicle_speed, brake_pedal, soc):
# 计算总制动力需求
total_brake = brake_pedal * max_brake_force
# 根据法规要求的前后轴分配
front_ratio = min(0.7, 0.2 + 0.8*(vehicle_speed/100))
front_brake = total_brake * front_ratio
# 可用的再生制动力
avail_regen = min(
motor_max_regen_torque / wheel_radius,
battery_max_charge_power / vehicle_speed
)
# 实际再生制动
actual_regen = min(avail_regen, front_brake*0.8) # 保留20%机械制动
return {
'mechanical_front': front_brake - actual_regen,
'mechanical_rear': total_brake - front_brake,
'regen': actual_regen
}
3.3 扭矩分配优化
采用基于效率最优的扭矩分配算法时,需要建立发动机和电机的等效燃油消耗模型:
code复制min Σ (ṁ_fuel + λ * P_batt)
s.t.
T_req = T_ice + T_motor
ω_ice = ω_motor = ω_input
0 ≤ T_ice ≤ T_ice_max(ω)
T_motor_min(ω) ≤ T_motor ≤ T_motor_max(ω)
在Simulink中可通过PID控制器实现实时优化,采样时间建议设为10ms。
4. 联合仿真技术实现
4.1 DLL接口配置
Cruise 2019版本后支持两种接口方式:
- 标准DLL接口:通过CRUISE_DLL模块实现,采样时间固定
- FMI接口:支持变步长仿真,但需要额外license
推荐采用标准DLL接口,配置步骤如下:
- 在Simulink中设置固定步长求解器(如0.01s)
- 生成代码时选择"C++"语言和"Exported functions"选项
- 在Cruise中配置DLL路径和函数映射表
4.2 仿真精度提升技巧
-
数据同步问题:在DLL中添加缓冲区,处理Cruise和Simulink的步长不一致
c复制static double speed_buffer[10]; void set_vehicle_speed(double v) { memmove(speed_buffer+1, speed_buffer, 9*sizeof(double)); speed_buffer[0] = v; } -
过零检测:对于离合器状态等离散信号,建议在Simulink中启用过零检测
-
日志记录:配置Cruise的Result Manager同时记录原始信号和中间变量
5. 典型工况仿真分析
5.1 WLTC循环仿真设置
在Cruise中配置WLTC工况时,需要注意:
- 选择标准的Class3b速度曲线
- 环境温度设为23±3℃
- 初始SOC设置为60%
- 开启空调负载(约3kW)
典型结果分析指标:
- 燃油消耗量(L/100km)
- 电量平衡(ΔSOC)
- 模式切换次数
- 电机工作效率分布
5.2 加速性能测试
0-100km/h加速仿真建议设置:
- 踏板开度100%
- 初始SOC 50%
- 路面附着系数0.8
- 关闭ESP等电子辅助系统
性能优化方向:
- 换挡策略优化(电机助力换挡)
- 扭矩协调控制(避免动力中断)
- 电池放电功率限制调整
6. 常见问题排查
6.1 典型报错解决方案
| 错误类型 | 可能原因 | 解决方案 |
|---|---|---|
| DLL加载失败 | 路径包含中文 | 改用全英文路径 |
| 仿真崩溃 | 变量初始化问题 | 在Simulink中添加Zero-Hold模块 |
| 结果异常 | 单位制不统一 | 检查Cruise和Simulink的单位设置 |
6.2 模型验证技巧
-
静态验证:在MATLAB命令行运行控制策略的单元测试
matlab复制result = test_brake_distribution(50, 0.5); assert(result.regen > 0, '再生制动未激活'); -
动态验证:在Cruise中运行step工况,检查模式切换瞬态
-
实车对标:采集实车CAN数据与仿真结果对比,重点看:
- 电机扭矩响应延迟(应<100ms)
- SOC变化趋势一致性
- 换挡时的冲击度
7. 工程经验分享
经过多个项目的实践验证,我们总结了以下经验:
- 参数敏感度分析:电池内阻对能耗影响最大,±10%的变化可能导致油耗差异2-3%
- 实时性优化:将控制策略中的查表操作替换为多项式拟合,可提升DLL运行速度30%
- 异常处理:在DLL接口中添加看门狗定时器,避免仿真卡死
- 协同开发:使用Git管理Simulink模型时,建议关闭slxc缓存文件版本控制
某量产项目中的实测数据表明,通过仿真优化后的控制策略,WLTC工况油耗从5.2L/100km降低到4.7L/100km,同时0-100km/h加速时间缩短0.3秒。这充分验证了仿真模型的有效性。
