增程式混合动力汽车(串联式混动构型)Cruise整车仿真模型。 1.基于Cruise平台搭建整车部件等动力学模型,基于MATLAB Simulink平台完成整车控制策略的建模,策略模型具备再生制动,行车驱动等功能,实现增程式构型车辆全部工作模式; 2.采用DLL联合仿真方式,完全采用正向建模思维,仿真模型具备较高精度; 3.可进行循环工况油耗,等速油耗,加速性能,爬坡性能,最高车速等动力性经济性计算仿真,cruise模型与Simulink策略
踩下油门时增程式混动车的发动机不直接驱动车轮——这事儿听起来反直觉,但正是串联式混动的精髓。我们在Cruise里搭整车模型时,第一个拦路虎就是传动链的拓扑结构。传统燃油车的动力传递像接力赛,而增程混动更像是充电宝给手机供电的玩法。搭建前轴驱动电机模型时,得特别注意这个参数:
[ElectricMachine] Torque_Characteristic = 0:0, 200:180, 400:200 Max_Speed = 6000这段配置定义了电机在0rpm时零扭矩,200rpm爆发180Nm的特性曲线。有趣的是,当车速超过80km/h时,电机的铁损会突然变成能耗大户,这时候就得靠Simulink里的模糊控制策略来平衡动力分配。
增程式混合动力汽车(串联式混动构型)Cruise整车仿真模型。 1.基于Cruise平台搭建整车部件等动力学模型,基于MATLAB Simulink平台完成整车控制策略的建模,策略模型具备再生制动,行车驱动等功能,实现增程式构型车辆全部工作模式; 2.采用DLL联合仿真方式,完全采用正向建模思维,仿真模型具备较高精度; 3.可进行循环工况油耗,等速油耗,加速性能,爬坡性能,最高车速等动力性经济性计算仿真,cruise模型与Simulink策略
再生制动策略的代码最能体现控制逻辑的精妙。下面这段状态机代码在车速高于20km/h时才会激活能量回收:
function RegenBrake = fcn(v, brake_pedal) persistent regen_flag; if isempty(regen_flag) regen_flag = false; end if v > 20 && brake_pedal > 0.1 regen_flag = true; RegenBrake = min(brake_pedal*0.7, 0.3); else regen_flag = false; RegenBrake = 0; end end这里有个工程师们私下交流的trick:0.7的系数不是拍脑袋定的,而是实测发现超过这个值会导致制动踏板脚感变"虚"。联合仿真时最头疼的是DLL的时钟同步问题,某次在WLTC工况下出现0.5秒的时差,直接导致油耗仿真偏差2.3%,后来用这个时间对齐代码才搞定:
void sync_timestamps(double cruise_time, double simulink_time) { static double offset = 0; if (fabs(cruise_time - simulink_time) > 0.001) { offset = cruise_time - simulink_time; } current_time = simulink_time + offset; }做爬坡度仿真时发现个反常识的现象:电池SOC在30%时爬坡性能反而比满电时稳定。后来追踪到BMS的功率限制策略,在低电量时增程器会提前进入高功率模式。验证加速性能时,用Simulink生成了个骚操作:
parfor i=1:10 set_param('VehicleModel/Throttle','Value',num2str(i/10)); simout = sim('VehicleModel'); acceleration_curve(i) = max(simout.accel); end这个并行循环把油门踏板从10%到100%扫了一遍,跑完直接输出扭矩阶梯图。有个坑是Cruise的变步长求解器遇到Simulink的定步长会炸毛,后来改用RKF45算法才让联合仿真稳如老狗。
最后测试等速油耗时,发现120km/h工况下增程器效率反而比城市工况低15%。拆解数据发现是高速时电机始终工作在高转速区,导致系统效率的"微笑曲线"变成了"苦笑曲线"。这些仿真结果后来直接影响了整车控制策略的标定方向,原来搞混动不仅要懂机械,还得是个会写代码的时间管理大师。