cruise仿真模型,四轮驱动。 轮毂电机,轮边电机驱动cruise动力性经济性仿真模型,base模型,适用轮边电机驱动及轮毂电机驱动。 可进行动力性经济性仿真分析,控制策略包含扭矩控制及能量回收控制使用c-code编写,提供策略说明文档,模型均为本人原创搭建
最近在搞四轮驱动电动车仿真模型,踩了不少坑也攒了些经验。今天聊的这个Cruise模型支持轮毂电机和轮边电机两种驱动形式,重点在动力性和经济性仿真这块有点意思。先放个模型架构图镇楼(假装有图),咱们边看代码边唠。
模型底层用Cruise自带的轮边减速器模块魔改了个通用驱动桥,通过参数切换就能实现轮毂/轮边两种模式。核心在于这个C语言写的控制策略模块,直接决定了车辆能不能撒欢儿跑还省电。来看段扭矩分配的关键代码:
void Torque_Distribution(float total_torque, int drive_mode) { float front_ratio = 0.6f; //前轴扭矩占比 float rear_ratio = 0.4f; if(drive_mode == HUB_MOTOR) { //轮毂模式 front_torque = total_torque * front_ratio / 2; rear_torque = total_torque * rear_ratio / 2; applyTorque(FL_Motor, front_torque); applyTorque(FR_Motor, front_torque); applyTorque(RL_Motor, rear_torque); applyTorque(RR_Motor, rear_torque); } else { //轮边模式 float left_ratio = 0.55f; //左右差速补偿 applyTorque(FrontAxle, total_torque * front_ratio); applyTorque(RearAxle, total_torque * rear_ratio); axleDiffCompensation(left_ratio); //差速补偿算法 } }这段代码藏着两个玄机:轮毂模式直接四轮独立控制,每个电机吃自己那份扭矩;轮边模式得分轴控制,还得处理传统差速器的问题。那个left_ratio参数是实测出来的玄学值,不同车型得重新标定,不信你拿五菱宏光EV的数据跑跑看,绝对哭给你看。
能量回收策略更是个技术活,看这个滑行回收的条件判断:
int Energy_Recovery_Check(float brake_pedal, float speed) { static float speed_threshold = 15.0f; //最低回收速度 static float pedal_threshold = 0.15f; //踏板开度阈值 if((brake_pedal > pedal_threshold) && (speed > speed_threshold)) { return FULL_RECOVERY; //全功率回收 } else if(brake_pedal < 0.05f) { //完全松开油门 return COASTING_RECOVERY; //滑行回收 } else { return NO_RECOVERY; } }这里有个新手容易掉进去的坑——速度阈值设太低会导致低速时反复触发回收,整车一窜一窜跟打嗝似的。建议先在仿真里把阈值从10kph到20kph扫一遍,找个平顺性和回收效率的甜蜜点。
模型验证环节才是重头戏,拿某款实测车的数据对比,0-100kph加速仿真误差控制在0.3秒内,NEDC工况能耗误差±2%。不过轮毂电机模型在高速过弯时总有点扭矩震荡,后来发现是没考虑轮毂电机的转动惯量影响,加上下面这段惯量补偿才搞定:
float inertia_compensation(float torque, float rpm) { float J = 1.2f; //电机转动惯量 float alpha = 0.8f; //补偿系数 return torque - J * rpm * alpha; }玩仿真模型的都知道,参数标定能要人命。建议新手先拿base模型跑个百八十遍,把电机效率MAP图、电池内阻曲线这些基础数据吃透了再魔改。下次可以聊聊怎么用这个模型做双电机联调,那才是真·骚操作现场。