资讯动态

基于Simulink的电动车制动能量回收控制策略与参数匹配实战

发布时间:2026/10/19 6:45:05 来源:尧图企业网站定制
去年参与了一个整车预研项目负责人扔给我一个任务基于MATLAB Simulink把电动车制动能量回收控制策略做出来并且把关键参数匹配好。一开始我以为只是给电机发个负转矩指令那么简单真正做起来才发现完全不是这回事。制动能量回收涉及整车纵向动力学、电驱动系统效率、电池充放电限制、液压制动动态响应、踏板感一致性等一系列耦合问题任何一个环节考虑不周仿真结果和实车体验都会差得离谱。这篇就把我当时的完整设计过程、踩过的坑以及最终参数匹配方案整理出来如果你想做类似的课题可以少走不少弯路。1. 制动能量回收里的三个核心矛盾安全、效率与电池寿命1.1 能量回收的基本原理与能量流先说原理。车辆减速时整车动能需要通过制动系统消耗掉。传统液压制动会把这一部分能量以热量的形式耗散掉而制动能量回收的思路是让电机以发电工况运行产生与运动方向相反的转矩把动能转化为电能回充到动力电池中。整个过程本质上是一个能量流方向反转。用公式来理解更直观。车辆在车速 v 下具备的动能是 E 0.5 * m * v^2减速制动时这部分动能一部分被滚动阻力、空气阻力消耗一部分被液压制动转化为热还有一部分被电机回收。假设一个整备质量 1500kg 的车辆从 50km/h 刹停动能大约是 0.5 * 1500 * (13.89)^2 ≈ 144,700J约 145kJ。如果系统综合回收效率按 70% 算能收回约 101kJ折算成电量大约是 0.028kWh。看起来很不起眼但城市工况频繁起停累计起来对续驶里程的贡献通常在 10% 到 20% 之间这也是为什么现在几乎所有量产电动车都在做这个功能。1.2 为什么不能简单地把电机当“发电机”用很多人下意识觉得减速时给电机一个负转矩不就行了吗实际上如果真这么干车辆在制动过程中会明显“点头”甚至车轮抱死。原因在于制动能量回收的本质是电机转矩叠加在液压制动力矩之上而车辆制动系统需要保证总制动力与驾驶员踏板请求一致同时要保证前后轴制动力分配符合稳定性要求。举个例子如果驾驶员踩下制动踏板期望的是一个 0.3g 的减速度但电机回收转矩已经提供了 0.25g 的前轴减速度那么液压系统就必须把这个请求计算进去否则总制动力就超过驾驶员预期制动距离虽然更短但乘员会强烈前倾。相反如果电机回收转矩因为某种原因突然退出比如 ABS 触发、电池 SOC 充满、电机过温而液压系统没有动态补偿总制动力就会瞬间跌落驾驶员会感觉“刹车变软”这在实际标定中是被严格禁止的。1.3 控制策略设计前必须明确的约束边界在做策略前我先拉了一个约束清单每一条都是后面建Simulink模型里必须体现的电机峰值转矩/峰值功率限制回收转矩不能超过当前转速下电机发电外特性。电池最大充电功率限制包括常温限制和低温降载后的限制否则会过流。电池SOC限制一般SOC在0.15到0.95之间允许回收超过上限立即退出避免过充。车速限制低于某个车速时电机发电效率极低而且会产生明显的拖动顿挫感此时应退出回收。制动强度限制轻缓制动时优先回收中等制动时协调回收紧急制动时只启用液压制动并可能触发ABS。踏板一致性回收介入和退出都必须平滑否则会造成踏板力突变。这些约束就像车辆周围的“围栏”控制策略不是单一追求回收能量最大而是在围栏内找到一个安全、平顺、不伤电池的方案。2. 控制策略选型逻辑门限还是查表法我是这么定的2.1 逻辑门限策略的建模逻辑与局限性最初我在Simulink里最朴素地搭了一个逻辑门限策略。思路是检测制动踏板位移和制动需求减速度当SOC低于上限、车速高于最低阈值、制动强度在某个区间内时激活一个固定比例的再生制动转矩。比如设定制动踏板开度 5% 且 50%判定为轻度制动车速 10km/hSOC 0.9满足以上条件时电机回收转矩 0.2 * 当前车速下的电机峰值发电转矩。这套逻辑用Stateflow很容易实现但很快发现两个问题一是门限临界处的转矩会出现阶跃平顺性很难调二是固定比例无法适配不同车速下驾驶员对制动响应的线性感知低速时回收感觉太强高速时又嫌回收不足。2.2 查表法工程里真正好用的方案后来我换成了查表法这也是很多量产项目里在用的做法。查表法的核心思路是以制动踏板位移或制动需求减速度为横坐标车速为纵坐标表格内部的值是电机再生制动力矩的分配比例或具体转矩值。比如我建立了一张二维MAP表横坐标是车速0到100km/h纵坐标是制动踏板开度表格里存储的是“电制动分配系数”取值范围0到1。控制器根据当前状态查表得到分配系数后乘以需求制动力矩得到电机回收转矩剩下的由液压系统补足。这张表的好处非常明显一是没有复杂的if-else逻辑边界连续配合二维线性插值转矩输出是平滑的二是标定工程师可以直观地调整表内的数值不用改代码。后期如果想优化不同工况的回收力度只需要标定一张表。我当时还试过模糊逻辑它的确能让输出更平滑但模糊规则和隶属度函数的标定完全依赖经验在工程迭代里很难量化而且实车标定工程师普遍不买账。最后我确认了这套项目用的是“规则二维查表动态补偿”的结构简单、可解释、可标定。2.3 基于规则的能量管理策略在Simulink中的实现路线具体到Simulink我用MATLAB Function模块写了一个状态机在里面做模式切换和条件判断。核心代码逻辑大致是function T_m calc_regen_brake(brake_pedal, v, soc, motor_temp_fraction) % 默认不回收 T_m 0; % 基础使能条件 if v 5 || v 150 return; end if soc 0.95 return; end if brake_pedal 5 return; end % 判断是否为紧急制动 decel_req brake_pedal * 0.01 * 10; % 简化换算 if decel_req 4 % 大约0.4g以上直接退出 return; end % 查表得到回收比例 rate interp2(v_table, b_table, rate_map, v, brake_pedal); % 电机可用转矩限制 T_avail interp1(spd_table, torque_table, v); T_m min(rate * T_avail, T_avail); end这个MATLAB Function会被嵌入到Simulink的Coder生成代码中后期可以直接在硬件在环平台上跑。加了一个电机温度折算系数温度过高时逐步降低回收比例这比突然全部退出要稳得多。3. Simulink模型搭建整车、电机、电池与制动系统的模块化拆解3.1 整车纵向动力学模型车速、坡度与制动力需求Simulink模型不是从“电机控制”开始而是从整车动力学开始。我搭建的模型是一维纵向动力学模型只考虑车辆的前进方向。车辆在行驶中受到驱动力/制动力、滚动阻力、空气阻力、坡度阻力和加速阻力m * dv/dt F_trac - F_roll - F_aero - F_grade其中F_roll m * g * f_rf_r是滚动阻力系数一般是常数或与车速弱相关F_aero 0.5 * ρ * Cd * A * v^2F_grade m * g * sin(alpha)alpha是坡度角。在Simulink里我用几个Constant、Product、Lookup Table和Integrator模块搭成闭环。这里最关键的几个地方是车速积分器需要设置初始状态并且为了防止出现负车速在积分器前加一个饱和模块把车速限制在0到v_max范围内。这些细节如果不处理仿真到后面会出现车辆倒退的诡异现象。3.2 永磁同步电机与逆变器的效率模型MAP图怎么进Simulink电机模型我用的是效率MAP外特性法。输入是电机转速 n_m 和转矩命令 T_m输出是电机实际转矩、电功率以及损耗。转速由车速和传动比得到n_m v / 3.6 * ig * 100 / (2 * pi * r_w)其中 ig 是传动系总减速比r_w 是车轮半径。为了把转速换算成rad/s我额外做了一步单位转换。电机效率 MAP 是二维表横轴为转速、纵轴为转矩或转矩/峰值转矩比表里存的是效率值。Simulink里直接用n-D Lookup Table读取。值得提醒的是MAP表的数据范围一定要覆盖电机实际工作区域插值方法我用的是“Linear interpolation with flat extrapolation”避免边界外推产生异常值。电功率 P_e T_m * n_m * sign(T_m) / η(T_m, n_m)当转矩为正时是电动状态转矩为负时是发电状态注意发电工况下 η 通常也在 MAP 中定义我习惯把发电效率也放进同一张表用另一个二维表描述。为了方便后续计算能量回收量我把每个时间步的电功率积分得到累计回收电能。3.3 电池模型与SOC估算回收电流对SOC的影响电池模型我用的是一阶内阻等效电路模型没有做过复杂的热模型因为控制策略仿真关心的是电压、电流、SOC边界不需要精确到电芯内部状态。模型公式是U_bat U_ocv(SOC) - I_bat * R_in(SOC)SOC估算采用安时积分法SOC SOC0 - 1 / Q_max * ∫ I_bat dt注意这里 I_bat 的符号放电为正充电为负。制动能量回收时 I_bat 为负SOC 会上升。但困难在于电池的最大允许充电电流不是一个常数它和 SOC、温度、SOH 都有关系。在项目里我用一个查表模块 CRC_max f(SOC, T_bat) 来表示最大充电倍率然后在控制策略里把电池请求的充电功率和最大允许功率比较。Simulink建模时需要把电池模型输出的允许充电功率 P_charge_lim 作为约束反馈给制动力分配模块这样电机转矩命令才不会超过电池承受能力。这个信号我在模型里用S-function或者MATLAB Function返回。如果忽略这个反馈很可能出现过度充电仿真曲线看着很漂亮实车上会直接触发电池保护回收功能全部退出。3.4 制动力分配模块电制动与液压制动的协调逻辑这是整个模型的核心我把制动力分配模块放到一个独立的子系统中输入信号有三个驾驶员需求制动力矩、车速、SOC、电池允许充电功率、电机当前可用回收转矩、ABS激活标志、踏板开度。输出信号是电机转矩命令和液压制动系统压力命令。制动力分配逻辑可以概括为三个模式轻度制动减速度约小于0.2g主要以电制动为主液压系统只提供很小的基础压力保证制动灯点亮中等制动减速度约0.2g至0.4g电制动优先不足部分由液压补充同时维持总制动力等于驾驶员请求紧急制动减速度大于0.4g或触发ABS电制动清零液压系统满制动安全优先。在Simulink实现时我用了一个简单的“优先级”机制电机转矩请求在满足约束的条件下尽量大液压制动从总需求中扣掉电机转矩。同时加入了一阶惯性环节模拟液压执行器的动态响应时间常数大约在0.05s到0.1s。这个动态特性非常关键很多仿真模型忽略它结果实车标定时发现总有半秒的制动力波动。4. 参数匹配回收强度、前后轴分配系数与SOC阈值的联动设计4.1 关键参数表哪些参数决定回收效率参数匹配这个词听着高大上本质就是把控制策略里每一个阈值和比例系数都给定出来。我整理了一个项目里用到的关键参数表这些参数相互影响单独调某一个没有意义参数名称典型取值范围影响目标最大再生制动力矩比例电机峰值转矩的30% - 70%回收效率、稳定性、平顺性电制动退出速度下限5 - 15 km/h低速拖动感、回收量电池SOC上限0.85 - 0.98电池寿命、回收可用时间电池SOC下限0.10 - 0.20电池寿命制动强度门限0.2g - 0.5g安全边界液压制动动态补偿系数0.8 - 1.2踏板一致性充电功率限制系数0.6 - 1.0电池保护电机过温降载斜率每10℃降10% - 30%耐久性这些参数里最矛盾的是“最大再生制动力矩比例”和“电池SOC上限”。前值设得越大回收能量越多但前轴制动力占比越大紧急制动时风险越高SOC上限设得越低电池越安全但在长途驾驶时回收功能在SOC 90%就退出实际回收机会变少。4.2 不同工况下参数敏感度分析为了搞清楚这些参数到底怎么影响结果我用Simulink Design Optimization做了一轮扫描其实手动改参数跑仿真也行只不过自动化更高效。我选了三个典型工况城市工况NEDC、CLTC、高速工况WLTC高速段、山区弯道工况频繁制动。主要评价指标有三个回收电能占驱动电能的百分比、制动距离变化量、主观平顺性这里我用电机转矩变化率来量化。扫描结果有几个有意思的结论第一回收电能对“最大再生制动力矩比例”不是单调递增的。当比例超过一定值后回收电能反而下降。原因是电机转矩过大导致前轴过早趋于抱死边界控制逻辑会限制回收或者提前触发防抱死条件回收被退出总回收量下降。我这组参数里最佳比例大约在电机峰值转矩的45%左右。第二SOC上限从0.90提高到0.95回收能量只增加了不到3%但电池应力明显增大。这说明单纯抬SOC上限的性价比很低。第三低速退出门限从15km/h降到8km/h回收能量增加5%左右但制动的平顺性评分恶化明显尤其是低速蠕行时乘员能清晰感到电机拖动顿挫。因此最终折中设定为10km/h。4.3 参数匹配的优化流程从DOE到响应面我最后的参数匹配流程大致如下先把整车参数固定下来整车质量、轴距、质心高度、轮胎型号、传动比、电机峰值转矩功率转速、电池容量和充放电MAP控制策略结构固定初始参数用经验值用Simulink里的参数扫描工具对每个维度单独扫描得到敏感性排序挑出最敏感的5到6个参数做全因子或部分因子DOE每次仿真都从同一初态开始记录三个评价指标用响应面模型或简单加权评分找到一组较优参数。我们最终选定的参数组合是最大再生制动力矩为电机峰值转矩的45%SOC上限0.92SOC下限0.12退出车速10km/h中等制动门限0.3g紧急制动门限0.4g液压补偿系数1.0。用这套参数三个工况下回收电能占比都在12%到18%之间制动距离与纯液压制动相比增加了不超过0.5%主观平顺性评价中上。5. 仿真结果怎么解读从曲线到实车标定的差距在哪5.1 一个典型城市工况仿真结果曲线解读用最终参数跑了一遍CLTC城市工况我把几个关键信号录制下来车速、制动踏板开度、电机转矩、SOC、液压制动力、总制动力。在制动过程中可以清晰看到电机转矩在负数区间变化SOC在每次制动阶段出现一个小幅上升台阶。印象最深的一个减速段车速从60km/h降到30km/h持续约4秒电机回收功率大约稳定在8kW左右SOC上升了0.4%而液压制动力一直保持在很低水平说明大部分制动力来自电制动。不过别被曲线骗了。仿真里SOC上升看起来很平滑实车电池模型如果用的是简化内阻模型实际电压动态和温度效应会让SOC变化更加复杂尤其低温下回收功率会被限制曲线会明显不同。所以我建议仿真阶段重点关注控制策略逻辑和参数趋势别把仿真绝对能量值当实车实测值。5.2 常见坑力矩突变、满电保护、低速拖转仿真和后续硬件在环测试中我踩过几个比较典型的坑都是靠看曲线加查逻辑才定位的。第一个坑是力矩突变。最开始我设置的回收退出条件是“SOC大于0.95立即退出”对SOC等于0.95附近没有任何迟滞。仿真跑到中后段电池SOC在0.95附近反复跳变电机转矩在0和负值之间频繁切换总制动力跟着波动。这个问题的根源是阈值判断没有加迟滞或平滑过渡。后来我改成SOC到0.95时触发“退出回收”标志直到SOC降到0.92以下才恢复同时在退出过程中让回收转矩按斜率缓降效果立刻好了。第二个坑是低速时的“拖转顿挫”。车速低于10km/h后电机发电效率已经很低但转矩如果依然保留车辆在低速快停时会有明显的拖拽感乘员会感觉顿一下。解决办法是提前开始减小回收转矩到5km/h时彻底清零液压系统顺势接管剩下的制动力。这里要注意必须提前减速不要到快停了才突然清0。第三个坑是ABS触发信号。在仿真模型里ABS触发时我把电制动直接置0但液压制动信号是通过一阶滞后模型传递的导致ABS触发瞬间总制动力出现一个瞬态跌落。后面我改为在ABS触发前一段就预降低回收转矩并且把液压补偿动态信号同步联动这才彻底消除尖峰。5.3 如何把仿真策略推向实车仿真跑通只是第一步。从Simulink模型到实车中间还需要走FMI接口、自动代码生成、硬件在环HIL测试、台架标定、实车标定。我在这个项目里只做到硬件在环阶段但这个过程已经暴露了很多问题。Simulink模型里所有时间都认为是理想零延迟但实际控制器有采样周期、通信总线延迟、液压执行机构响应延迟。所以我在模型里给每个信号比如踏板开度、SOC、电机转矩都加了不同的延迟模块用来模拟信号传输滞后。这样HIL测试时动态响应才更接近实车。另一个关键是液压制动模型不能只用一个常数增益最好拟合一个阶跃响应或一阶惯性加延迟的传递函数否则标定数据没有参考价值。这个环节我的体会是仿真模型越接近实际物理系统的动态特性后期转实车时就越顺滑。如果只在逻辑层面验证多半会被标定工程师拉着改很多轮。6. 最后想说的做好这个项目的几点经验这个项目做下来我最大的感触是制动能量回收控制策略的难点不在算法多先进而在如何让一个“听起来很简单”的转矩指令跟整车所有子系统协调好。整理几个我实际用到的经验希望能帮到正在做类似课题的同学。第一先把约束条件列全再谈策略。我见过不少方案一上来就用强化学习之类的黑箱算法最后因为没有考虑电池充电功率限制仿真结果上天到了实车根本不可用。控制策略设计的前置工作是列清楚所有约束边界最好做成一张表贴在工位旁边。第二参数标定和策略结构同样重要。同样的策略参数匹配得好坏可以让回收率差出5到8个百分点。用DOE做参数扫描是值得投入时间的事别靠手感瞎试。第三液压制动的动态补偿一定要做。这是很多仿真教程里不提但实车却会出大问题的地方。一个简单的办法是在Simulink里让电机回收转矩和液压制动压力都通过同一种动态延迟模块处理保证台阶处同步。第四低速退出的处理决定主观感受。中高速的综合效率再高如果低速时顿挫测试员给的主观评价也会直接拉低。建议把低速回收退出来一个缓降阶段同时叠加很小的液压预压力保证停车柔和。第五也是我后面才注意到的电机过温降载一定要纳入策略。电机连续发电工况下温度升高很快如果策略不感知温度长时间下坡路段会导致电机温度超限触发硬保护回收功能突然全退驾驶员瞬间感觉刹车踏板变重。早期策略里加入温度折算系数之后整个回收过程在连续工况下能更稳定维持。这个项目后续我打算把制动能量回收策略和整车能量管理进一步融合想在电池热管理与回收功率限制之间做一个联动让低温时也能安全地回收更多能量。就项目本身来说我认为最有价值的产出不是最终那组参数而是一套可追踪、可标定、可解释的控制策略模型。希望这篇分享对你做类似课题有参考价值。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑