横向稳定性控制最优力矩分配(联合仿真,算法对比) 软件使用:Matlab/Simulink2021a+Carsim2019.0(必须) 适用场景:采用模块化建模方法,搭建联合仿真模型,以分布式驱动电动汽车为整车仿真验证平台,目前适用于双移线工况。 包含模块:期望值计算模型、速度跟踪模块、力矩分配模块,其中力矩分配模块如简介图所示有平均分配算法、比例分配算法和最优分配算法。 包含:Matlab/Simulink源码文件,详细建模说明文档,对应参考资料及相关文献
分布式驱动电动车在双移线工况下玩漂移有多刺激?咱们今天不聊怎么把车开上墙,重点说说怎么让车在高速变道时保持优雅姿态。横向稳定性控制这事儿,本质上就是让四个轮子合理分配扭矩,避免车辆变成旋转的陀螺。
先看整体模型架构。Carsim负责输出车辆运动状态,Simulink这边搭建的控制模块就像给车装了个人工智能小脑。速度跟踪模块用PID闭环把车速死死咬住目标值,核心戏肉还是力矩分配模块的三套算法比武。
平均分配算法简单粗暴到令人发指:
function torque = AverageAllocation(total_torque) torque = ones(4,1) * total_torque/4; end这种雨露均沾的策略在低速工况还能混混,速度超过80km/h时外侧轮抓地力吃紧,分分钟让你体验什么叫推头甩尾二重奏。
比例分配开始动点脑子了,根据垂向载荷动态调整:
function torque = RatioAllocation(Fz) total = sum(Fz); torque = Fz / total * total_torque; torque = max(min(torque,250),-250); //限制电机输出范围 end这里Fz是实时计算的轮胎垂向力,用Carsim的Tire Subsystem输出数据喂给Simulink。实测中发现前轴载荷突变时会导致力矩阶跃,得在代码里加个一阶惯性环节平滑处理。
最优分配算法直接掏出二次规划大招。在横向动力学约束下求解最小能量损耗:
cvx_begin variables T(4) minimize( norm(T,2) + 0.1*norm(T-T_prev,2) ) //兼顾能耗和平顺性 subject to A_control*T == M_desired //动力学等式约束 T >= -T_max //电机扭矩边界 T <= T_max cvx_end这个QP问题在Matlab里用quadprog求解时要注意数值稳定性,特别是当车辆处于摩擦圆边缘时,系数矩阵容易出病态条件。实测中加了个正则化项才搞定。
联合仿真时遇到个坑:Carsim的仿真步长默认10ms,Simulink用固定步长5ms会导致数据异步。解决办法是在Vehicle Dynamics模块里插个零阶保持器,再套个速率限制模块防信号跳变。
算法对比数据很有意思:平均分配在80km/h工况下横向误差峰值0.35m,最优分配能压到0.18m,但代价是能耗增加13%。有趣的是比例分配在干燥路面表现接近最优算法,但在低附着路面反而容易翻车——因为垂向载荷突变时扭矩分配滞后。
最后给个实用建议:量产项目可以白天用比例分配省电,晚上偷偷切换最优分配提升操控。代码里留个后门函数,检测到方向盘转角突变时自动触发QP算法,用户根本察觉不到背后的刀光剑影。