资讯动态

轮毂电机电液复合制动平顺性控制:冲击度抑制策略与仿真实现

发布时间:2026/9/7 6:31:49 来源:尧图企业网站定制
简介面向车辆工程、控制工程及机电一体化背景的电动汽车制动系统研发者和研究生这份PDF资料围绕轮毂电机驱动车辆的电液复合制动系统聚焦液压与电机制动响应特性差异导致的制动力跟踪误差大、制动冲击高等问题完整给出基于CarSim与Simulink联合仿真的协调控制策略包括液压介入预测、电机制动力补偿与退出预测以及结合路面识别和PID控制的逻辑门限值库复合制动防抱死方案并在低附、中附、高附路面下进行验证分析。文档内含详细可运行的MATLAB代码与逐步解释覆盖制动力矩分配、一阶延迟动态响应模拟、冲击度计算与结果可视化可进一步扩展至路面自适应识别与防抱死控制模块便于读者在仿真平台上动手复现和二次开发。资源为单份PDF文档共1个文件大小约891KB目前已有63人学习下载适合作为课题研究、论文复现或工程方案设计的实用参考。 轮毂电机驱动车型这两年越来越常见但真正在实车上把制动系统调到“无感”的团队并不多。电液复合制动系统和平顺性控制听起来是两件事落到工程上就是一个共同的硬骨头电机再生制动响应极快液压制动却天然存在几十毫秒的滞后两种制动力在模式切换过程中一旦交接不干净总制动力突变反映到车身上就是让乘客很明显的“咯噔”一下专业说法叫制动冲击度过大。下面我从工程实现的角度完整拆一遍这个项目从冲击度怎么产生的、怎么建模到控制策略怎么设计再到能直接跑的仿真代码和逐行解释最后是实车标定中踩过的坑。整个方案围绕轮毂电机驱动车辆的模式切换过程展开适合正在做电液复合制动控制策略的工程师、刚接触车辆纵向动力学平顺性控制的研究生参考也适合想搞清楚复合制动系统协调逻辑的入门读者。1. 项目背景与整体控制思路1.1 电液复合制动系统的核心矛盾轮毂电机驱动车辆的制动系统正常工作时会有两套制动力来源一套是电机再生制动通过电机反拖产生制动力矩同时回收能量另一套是传统液压制动通过制动主缸建立压力推动卡钳夹紧制动盘。两套系统各有特点电机响应速度快力矩建立时间通常在10毫秒到20毫秒级别而且力矩可以精确控制液压系统响应慢从制动踏板踩下到轮缸压力真正建立起来一般要经过50毫秒到150毫秒加上电磁阀的开关延迟、管路充液时间整体动态特性明显滞后。这个响应速度的差异就是模式切换过程出现冲击度的根源。举个例子车辆在中高速时处于复合制动模式电机制动力承担一部分需求制动力液压制动力承担另一部分。如果此时因为电池SOC过高、电机转速过低或者电制动系统故障需要把电机制动力退出、全部转由液压系统承担电制动瞬间撤掉而液压压力还没跟上来总制动力就会出现一个明显的“缺口”这个缺口让车辆制动力发生跳变冲击度自然就超标了。反过来也一样液压制动力在建立过程中如果有超调、抖动同样会让整车的减速度波动。所以做平顺性控制本质上是解决两套执行器在时间尺度上的不匹配问题。控制策略的目标很明确在任何模式切换过程中保证总制动力电制动力矩换算到轮边的力 液压制动力随时间连续变化并且变化率被约束在一个可接受的范围内。1.2 冲击度指标的工程定义与设计目标冲击度英文叫jerk定义为加速度的变化率也就是车辆纵向加速度对时间的导数单位是m/s³。这个指标直接反映人体对制动过程的主观感受。人对于加速度本身有一定耐受性但对加速度的突变非常敏感就像电梯启动和停止时的“失重感”和“压迫感”本质上就是加加速度过大。工程上对冲击度的限值不同标准和不同车型有差异。行业里常被引用的是日本JSAE的标准建议冲击度不超过17.64 m/s³但这其实是比较宽松的上限。现代电动乘用车做舒适性标定时工程上通常按10 m/s³作为设计上限主攻舒适性的车型会更严苛做到5 m/s³以内。我们在这个项目里定的是8 m/s³目标是在保证制动距离不大幅增加的前提下让乘客几乎感觉不到模式切换的发生。有了这个量化指标控制问题就清晰了设整车质量为m总制动力为F_total冲击度j (dF_total/dt) / m。只要限制总制动力变化率不超过 j_max × m理论上就能保证冲击度不超标。这个看起来简单难点在于F_total是电制动和液压制动两条通道共同叠加的结果两条通道的动态特性完全不同怎么协调它们各自的输出变化率才是整个策略的核心。2. 冲击度来源分析与系统建模2.1 制动力分配模型做控制策略前需要建立合适的模型。车辆纵向动力学模型可以简化为m · a F_total F_motor F_hyd - F_res其中F_motor是电机制动力等效到轮边的力F_hyd是液压制动力等效到轮边的力F_res是滚动阻力、空气阻力等这里在控制模型中作为扰动处理由上层算法补偿本文简化忽略。电机制动力矩T_motor经过减速机构和车轮半径换算到轮边力F_motor T_motor × i_gear / r_wheel轮毂电机方案一般没有额外减速机构或减速比很小简化处理为F_motor T_motor / r_wheel。液压制动力F_hyd与轮缸压力P相关F_hyd K_brake × PK_brake是制动效能系数由制动器结构参数决定卡钳活塞面积、制动盘有效半径、摩擦系数等通常通过台架实验标定得到。这个参数在不同温度、不同磨损状态下会有漂移工程上一般做成在线标定或查表修正这是后话。2.2 冲击度的数学表达与约束转化冲击度j da/dt (1/m) × dF_total/dt。把F_total F_motor F_hyd代入得到j (1/m) × (dF_motor/dt dF_hyd/dt)这说明冲击度由电机制动力变化率和液压制动力变化率共同决定。理想情况是电机制动力下降的斜率恰好被液压制动力上升的斜率补偿使得dF_motor/dt dF_hyd/dt ≈ 0。这就是模式切换平顺性的核心数学条件。但因为液压响应延迟dF_hyd/dt无法瞬间跟上所以实际工程做法是给电机制动力退出设计一条过度曲线给液压力建立设计一条补偿曲线两条曲线的斜率之和在任何时刻都不超过 j_max × m同时设计液压预填充阶段来消除响应延迟。这就是整个控制策略的三层逻辑。2.3 液压系统动态特性简化建模液压制动系统从命令到轮缸压力建立的过程可以简化成一阶惯性加纯延迟模型P(s) / P_cmd(s) e^(-τ·s) / (T_hyd·s 1)τ是纯延迟时间主要由电磁阀响应和管路传播决定通常20毫秒到80毫秒T_hyd是压力建立时间常数反映充液过程快慢通常30毫秒到120毫秒。这两个参数随制动液温度、管路长度、制动器磨损程度变化实车标定时需要做温度补偿。建立这个模型不是为了精确仿真而是为了在设计补偿策略时心里有数液压力的真实建立时间总比命令晚一拍。如果没有这一拍的认知做出来的切换逻辑在仿真里可能没问题一上实车就露馅。3. 核心优化策略与关键代码实现3.1 策略总体架构整个控制策略按层级划分为三部分模式决策层根据车速、电池SOC、制动踏板开度、制动强度需求判断当前应该处于哪种制动模式并规划模式切换时刻力矩分配层在模式切换过程中把总需求制动力按照既定策略分配给电制动通道和液压制动通道核心是保证两条通道力矩之和平滑变化执行补偿层针对液压系统的延迟和非线性特性加入预填充控制、压力滞环补偿和前馈补偿让液压实际输出尽量贴近力矩分配层给出的目标。这三层缺一不可。模式决策层如果频繁切换后面两层做得再好也没用所以实际工程中还需要加入切换迟滞带和最小驻留时间约束。力矩分配层是核心下面给出关键代码。3.2 冲击度约束与力矩变化率限制函数首先实现一个冲击度约束函数输入目标制动力、上一时刻实际制动力、整车质量和冲击度限值输出经过限制后的制动力目标function F_out limit_force_by_jerk(F_cmd, F_prev, m, j_max, dt) % 根据冲击度限制总制动力变化率 % F_cmd: 控制周期内的目标制动力需求(N) % F_prev: 上一控制周期实际总制动力(N) % m: 整车质量(kg) % j_max: 冲击度上限(m/s^3) % dt: 控制周期(s) dF_max j_max * m * dt; % 单个周期内允许的最大制动力变化量 dF F_cmd - F_prev; % 实际需求变化量 if abs(dF) dF_max dF sign(dF) * dF_max; % 超限则钳位 end F_out F_prev dF; end这个函数是整个平顺性控制的安全底兜。不管上层怎么分配力矩最后叠加到总制动力都经过这道限制确保任何情况下冲击度都不会超过设定值。实际项目中这个限制不是简单做一次钳位就完了因为F_cmd和F_prev本身带有噪声直接求差容易被高频噪声干扰。我在工程代码里还会对dF做一个一阶低通滤波同时把滤波截止频率设计成和液压系统带宽匹配避免限制函数本身引入振荡。3.3 电机制动力退出曲线设计模式切换过程中电机制动力的退出曲线决定了总制动力变化的“形状”。如果直接阶跃退出即使后面的补偿做得再好瞬时的力矩突变也无法完全消除。我们采用余弦过渡曲线让电机制动力在切换窗口内平滑降为零并且退出曲线的起点和终点斜率都为零这样可以避免“切换开始”和“切换结束”这两个时刻产生新的冲击function T_motor_out motor_torque_exit_profile(t, t_sw_start, t_sw_end, T_motor_init) % 电机制动力余弦过渡退出曲线 % 输入: 当前时间t, 切换开始时刻t_sw_start, 切换结束时刻t_sw_end, 初始电机力矩 % 输出: 当前时刻电机制动力矩指令 if t t_sw_start T_motor_out T_motor_init; elseif t t_sw_end tau (t - t_sw_start) / (t_sw_end - t_sw_start); % 归一化时间 0~1 % 余弦函数: 从1平滑过渡到0且两端导数为0 T_motor_out T_motor_init * (0.5 * (1 cos(pi * tau))); else T_motor_out 0; end end为什么选余弦而不是直线斜坡因为直线斜坡在起点和终点处斜率突变对应冲击度阶跃虽然数值不大但在高精度平顺性评价中很容易被乘客感知为两次轻微“拉动”。余弦曲线在两端导数为零力矩变化率从零逐渐增大再逐渐归零过渡过程更接近人体能适应自然变化曲线。理论上也可以用S形曲线或者五次多项式实际效果差距不大但余弦函数实现最简单、参数最少。切换窗口长度t_sw_end - t_sw_start的选取很关键。窗口过短电机制动力退出太快液压补偿压力上升速率必须很大容易超出液压系统能力边界窗口过长电机长时间在低效率区工作能量回收收益下降。我采用的方法是先按液压系统最大压力变化率估算最短可行时间再乘以1.5倍的安全系数。比如液压系统压力变化率上限为40 MPa/s切换需要补偿的压力差为6 MPa那么最短窗口为0.15秒实际选择0.22秒左右。3.4 液压补偿压力前馈计算电机制动力退出的同时液压通道要同步建立补偿压力。补偿压力的目标值就是“总需求制动力减去当前电机制动力后剩余需要由液压承担的部分”。这里采用前馈计算加闭环修正的组合function P_hyd_cmd hydraulic_compensation_ctrl(T_total_des, T_motor_act, r_wheel, brake_eff) % 液压补偿压力计算 % T_total_des: 总需求制动力矩(Nm) % T_motor_act: 当前电机制动力矩实际值(Nm) % r_wheel: 车轮滚动半径(m) % brake_eff: 液压制动效能系数(N/MPa), 即1MPa轮缸压力对应多少轮边制动力 F_total_des T_total_des / r_wheel; % 期望总制动力(N) F_motor_act T_motor_act / r_wheel; % 当前电机制动力(N) F_hyd_des F_total_des - F_motor_act; % 需要液压承担的力(N) % 防止负值电机制动力超过总需求时液压不需要工作 if F_hyd_des 0 F_hyd_des 0; end P_hyd_cmd F_hyd_des / brake_eff; % 换算为目标轮缸压力(MPa) end这段代码的核心逻辑就是“缺多少补多少”。但实际执行时有两个问题要处理。第一液压系统存在延迟直接按当前时刻的T_motor_act计算压力指令等到液压力真正建立时电机制动力可能又退出了一截导致压力始终追不住力矩缺口。所以工程实现上前馈计算使用的不是当前T_motor_act而是经过电机力矩规划曲线推算出来的“未来t_sw_end时刻的电机力矩值”相当于做了一步超前补偿。第二轮缸压力建立还需要克服制动器回位弹簧、摩擦片间隙压力指令需要叠加一个预填充阶段先用较小压力快速消除间隙再进入正常的补偿压力控制。3.5 模式切换主循环完整示例把上面几个模块组合起来构成一个完整的仿真主循环。我给出的是可以独立运行的MATLAB脚本框架%% 模式切换平顺性控制仿真主循环 clear; clc; % ---------- 参数初始化 ---------- m 1400; % 整车质量 kg r_wheel 0.307; % 车轮滚动半径 m j_max 8; % 冲击度限值 m/s^3 dt 0.001; % 控制周期 1ms brake_eff 2500; % 液压制动效能 N/MPa t_total 2.0; % 仿真总时长 s t (0:dt:t_total); % 时间序列 N length(t); % 设定模式切换窗口: 0.8s~1.02s t_sw_start 0.8; t_sw_end 1.02; % 总需求制动力矩: 恒定工况, 模拟中等强度制动 T_total_des 600; % Nm % 分配系数: 切换前电机承担60%, 液压承担40% alpha_motor_init 0.6; T_motor_init T_total_des * alpha_motor_init; T_hyd_init T_total_des * (1 - alpha_motor_init); % ---------- 存储变量 ---------- F_total_actual zeros(N,1); % 实际总制动力 T_motor_cmd zeros(N,1); % 电机制动力矩指令 T_motor_act zeros(N,1); % 电机实际力矩(简化:一阶延迟) P_hyd_cmd zeros(N,1); % 液压压力指令 P_hyd_act zeros(N,1); % 液压实际压力(简化:一阶惯性延迟) jerk zeros(N,1); % 冲击度 F_prev 0; % 上一周期总制动力 % 电机力矩响应时间常数 tau_motor 0.01; % 10ms % 液压系统模型参数 tau_hyd 0.06; % 压力建立时间常数 60ms delay_hyd 0.04; % 液压延迟 40ms delay_buf zeros(round(delay_hyd/dt), 1); % ---------- 仿真开始 ---------- for i 1:N % 1. 根据总需求力和当前模式计算电机制动力矩指令 if t(i) t_sw_start T_motor_cmd(i) T_motor_init; elseif t(i) t_sw_end % 用余弦曲线规划电机退出 T_motor_cmd(i) motor_torque_exit_profile(... t(i), t_sw_start, t_sw_end, T_motor_init); else T_motor_cmd(i) 0; end T_motor_act(i) T_motor_cmd(i); % 简化为立即响应 % 2. 液压补偿前馈计算 F_hyd_des (T_total_des - T_motor_act(i)) / r_wheel; F_hyd_des max(F_hyd_des, 0); P_cmd_now F_hyd_des / brake_eff; % 3. 经过冲击度限制的总目标制动力校验 F_total_cmd T_motor_act(i)/r_wheel P_cmd_now*brake_eff; F_limited limit_force_by_jerk(F_total_cmd, F_prev, m, j_max, dt); F_prev F_limited; % 4. 液压执行器动态模型 (一阶惯性延迟) delay_buf [P_cmd_now; delay_buf(1:end-1)]; P_cmd_delayed delay_buf(end); P_hyd_act(i) P_hyd_act(max(i-1,1)) ... dt/tau_hyd * (P_cmd_delayed - P_hyd_act(max(i-1,1))); % 5. 实际总制动力与冲击度计算 F_total_actual(i) T_motor_act(i)/r_wheel P_hyd_act(i)*brake_eff; if i 1 jerk(i) (F_total_actual(i) - F_total_actual(i-1)) / (m*dt); end end这段代码把前面几个模块串起来了为了展示核心逻辑对电机响应和液压执行器做了简化建模。实际项目中电机力矩响应可以加入电流环的传递函数液压模型可以换成查表模型甚至直接接硬件在环实验台。但作为理解控制逻辑的框架这个脚本已经足够。运行完这段代码可以画出三个关键曲线电机制动力矩指令、液压轮缸压力、总制动力和冲击度。观察总制动力曲线在0.8秒到1.02秒之间是否平滑过渡、冲击度曲线是否全程低于8 m/s³就能直观验证策略的有效性。4. 仿真验证与参数整定经验4.1 典型仿真工况设置仿真验证不能只跑一种工况。模式切换在不同制动强度、不同车速下的表现差异很大我通常设置三个标准工况来验证策略工况名称制动强度切换前电机占比切换触发条件重点关注轻中度制动切换0.2g60%SOC达到充电上限冲击度峰值、压力跟随误差强制动紧急切换0.5g40%电制动系统故障降级总制动力下降量、制动距离增加低附着路面切换0.15g50%电机转速过低退出车轮是否抱死、冲击度震荡第一个工况验证常规情况下的平顺性第二个工况验证极端情况下的安全性第三个工况验证低附着系数路面上的鲁棒性。三个工况对控制策略的考核点完全不同第一个看舒适性第二个看安全性第三个看稳定性。在低附着路面工况中即使总制动力变化率被限制住了轮胎附着力也可能不足以支撑目标减速度此时控制策略必须结合滑移率进行制动力波动限制必要时降低总需求制动力。这个逻辑在仿真里通过附加滑移率修正项实现实车上则需要结合ABS系统的状态信号做仲裁。4.2 不同过渡曲线效果对比同样的工况下我对比了三种过渡曲线阶跃退出无控制、直线斜坡退出斜率恒定、余弦曲线退出两端斜率归零。结果很有代表性。阶跃退出方案不用多说冲击度直接爆表到40 m/s³左右完全不可接受。直线斜坡方案能把冲击度压缩到12 m/s³左右但切换开始和结束两个时刻仍然有尖峰。余弦曲线方案整体冲击度控制在7.2 m/s³以内全过程平顺符合我们设定的8 m/s³目标。有趣的是直线斜坡方案如果配合液压超前补偿也能把冲击度压到8 m/s³以下但控制参数的鲁棒性很差。液压延迟参数稍微漂移20%冲击度就容易重新冲高。余弦曲线方案则平滑得多因为过渡段两端的力矩变化率天然趋近于零对液压补偿的相位误差容忍度更高。这个特点在实际车辆上非常重要因为液压参数随温度和使用磨损时刻在变化控制策略必须留有足够的鲁棒性裕量。4.3 参数整定方法与优先级控制参数整定遵循一个从粗到细的流程。第一步确定冲击度限值j_max这是最顶层的设计目标根据车型定位定死后续所有参数都基于它推导。第二步根据液压系统台架测试得到延迟时间和时间常数估算最短切换窗口。第三步确定电机制动力退出曲线的窗口长度原则是保证液压压力变化率不超过系统能力上限的70%留出30%裕量。第四步微调预填充压力和时间主要目的是抵消制动器间隙和回位弹簧的影响。我踩过的坑是在第一步和第二步之间跳步想直接把j_max和切换窗口同时调好结果调了两天都不收敛。后来老老实实按顺序来先把液压参数摸准后面的参数几乎是一次调通的。液压系统参数的获取不能只看供应商手册同一型号制动器在不同管路过长、不同助力器型号下的延迟时间能差一倍必须以实际台架或整车数据为准。5. 常见问题排查与工程化避坑指南5.1 液压响应延迟导致的“先空后顶”现象仿真里策略表现很好一上实车就出现一个典型问题切换过程中车辆先有一瞬间制动“空掉”然后突然又“顶”一下。这对应用户感受就是制动力先变弱再突然加强。排查后发现原因在液压预填充补偿。仿真模型中液压延迟是固定的40ms实车上从制动主缸到轮缸的管路较长温度较低时制动液粘度大实际延迟达到了70ms预填充阶段结束时刻压力还没建立起来真正的补偿压力来得晚造成了“先空”的窗口。等补偿压力真正到达时电机制动力已经接近退出完毕压力又需要快速爬升补缺口于是“后顶”。解决办法是把预填充的触发时刻提前并增加一个基于压力传感器反馈的闭环启动条件只有当轮缸压力实际值达到预设门槛时才进入正式的补偿压力控制阶段。这个改动让策略对延迟时间的变化不再敏感实测在20ms到80ms延迟范围内都保持了冲击度低于10 m/s³。5.2 电磁阀滞环造成的压力阶梯波动液压电磁阀在压力控制过程中存在滞环特性同样一个压力指令增压过程中达到的值和减压过程中达到的值不一致差值通常在0.2MPa到0.5MPa之间。这个滞环在普通制动中问题不大但在模式切换这种需要精确压力跟随的场合会让液压压力出现阶梯状波动反映到车身上就是持续的轻微抖动冲击度数值不高但乘客主观感受很明显。处理方式有两个层面控制层面在压力闭环中增加一个滞环补偿项方向切换时叠加一个偏置电压执行层面选用低滞环的高速开关阀或线性压力调节阀但成本会明显上升。项目早期受成本约束用了前者效果也不错但需要针对不同温度标定补偿系数。后来升级了阀件压力控制精度提升了近一个数量级控制策略也简化了不少。5.3 低速时电机制动力衰减导致的切换反复轮毂电机在极低转速下再生制动能力急剧下降这和电机的反电动势特性有关。当车速低于某一阈值大约5km/h电机可输出的制动力矩已经很小如果此时还处于复合制动模式电机制动力会自动衰减到零。问题在于这个过程不受模式切换状态机控制会打断已经规划好的切换时序导致状态机来回切换冲击度虽然没有瞬间超标但车辆减速过程会变得不平稳。处理方案是在状态机中增加一个“强制液压接管”条件当车速低于设定阈值时不管当前处于什么模式直接触发一次快速切换把全部制动力转移给液压系统。因为此时车速低、动能小总制动力需求也不大即使冲击度稍高对舒适性影响也不明显。我给这个逻辑起的名字叫“低速强制降级保护”实车验证下来非常可靠。5.4 工程化落地前需要补齐的周边模块上面所有代码和策略在真正上车之前还有几块拼图要补齐。一是故障诊断模块电制动系统或液压系统出现故障时模式切换必须在故障状态下也能安全执行这涉及冗余制动的仲裁逻辑。二是路面附着估计低附着路面上冲击度约束必须让位于防抱死需求两者需要协调仲裁。三是软件架构层面控制算法必须满足AUTOSAR架构的周期任务调度要求尤其注意力矩指令要经过监控层的合理性校验防止单点故障导致误指令。基于我实际调试过的经验如果能把本文的冲击度约束逻辑、电机退出规划、液压补偿前馈这三块做好模式切换平顺性项目已经完成了80%的算法工作。剩下的20%工作量基本都在鲁棒性、故障安全和实车标定上。建议拿到代码后先在仿真环境下跑一遍标准工况生成曲线再把曲线和实车数据对比能极大缩短后续标定周期。最后再分享一个小技巧仿真时把液压延迟参数人为拉偏±50%各跑一遍如果策略依然稳定再上实车能省掉很多来回返工的时间。本文还有配套的精品资源点击获取

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

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

免费获取报价