P2构型混动再生制动与最优制动力分配的Cruise仿真实践

发布时间:2026/10/20 16:11:21
P2构型混动再生制动与最优制动力分配的Cruise仿真实践
1. P2构型的结构红利与仿真难点为什么偏偏选它1.1 P2构型在工程上的实际意义先把这个名字拆开说清楚。P2构型里的“P”指的是电机在动力总成中的位置P2意味着电机被布置在发动机与变速箱之间电机前端通过一个离合器工程里常叫K0离合器与发动机曲轴相连后端直接连到变速箱输入轴。这个位置相当巧妙K0离合器一断开发动机就能与整个传动系统完全脱开车辆进入纯电模式K0闭合发动机就能参与驱动或与电机扭矩耦合。同时这种架构保留了传统变速箱和驱动桥对很多习惯用成熟变速箱平台的项目来说改造成本远低于全新混动专用架构。我在实际项目中喜欢用这张表给新同事讲P2构型的工作模式覆盖范围模式K0离合器发动机状态电机状态典型场景纯电驱动分离停机驱动低速起步、倒车、市区蠕行发动机直驱闭合驱动空转或发电中高速巡航并联混合驱动闭合驱动驱动急加速、大负荷爬坡行车发电闭合驱动发电电池SOC偏低时巡航再生制动分离/闭合停机/断油发电减速、下坡驻车充电闭合驱动发电停车状态下补电正是这种“一块电机、一个离合器换来全工况覆盖”的特性让P2构型在量产混动项目里非常常见。但仿真工作的麻烦也从这里开始了——模式多了状态切换就多切换时刻的扭矩路径变化、离合器滑摩状态、制动与驱动的交叉耦合每一项都会直接影响仿真精度。1.2 仿真建模中最容易出问题的三个环节在Cruise平台里把P2构型跑起来本身并不困难真正考验人的是下面三件事。第一工作模式切换时序。纯电与发动机直驱之间的切换关键在K0离合器的分离与闭合逻辑。如果控制策略里离合器状态切换的触发条件写得粗糙仿真里会出现发动机被带转、扭矩瞬间波动、或者动力中断的假象。很多模型“跑得通”但“对不上试验数据”问题往往就出在这个时序上。第二再生制动与机械制动的耦合。这是P2构型仿真里最核心也最容易被低估的一块。电机回收扭矩作用在前轴必然改变整车前后轴制动力分配。一旦分配结果突破了法规边界线ECE R13-H对前后轴制动力分配有明确限制仿真数据看起来能量回收效率很高但实车根本不可能这样标定。所以建模时不能只盯着“回收了多少能量”还要同步盯制动力分配是否合法、是否平顺。第三转矩路径与信号链路的歧义。Cruise里机械连接靠齿轮副和轴控制信号靠Data Bus两者是两条独立的链路。很多模型建完后不收敛、扭矩不传递或者信号符号反了基本都是因为机械层面连上了、控制层面却走错了总线节点。尤其是电机扭矩方向在驱动与发电两个方向上的符号定义如果不统一后面做再生制动时排查起来特别费劲。这类问题通常不会在建模阶段暴露而是在仿真结果对标时集中爆发。如果前面的信号定义不够规范你将面对的是几个星期逐条查曲线的噩梦。2. 基于Cruise平台搭建整车骨架参数、部件与信号链路2.1 整车与动力部件参数表精度从源数据开始Cruise建模的第一步不是画模型拓扑而是把整车和各部件的参数表整理清楚。仿真模型的精度上限由参数表的精度决定这句话一点不夸张。整车模型里要输入质量、风阻系数、迎风面积、滚动阻力系数、轴距、质心高度和离地高度其中质心高度直接影响制动工况下的轴荷转移计算而这个参数在很多项目早期并不准确往往要等实车称重后才能拿到可靠数据。发动机建模需要外特性曲线和万有特性图BSFC此外转动惯量这个参数经常被忽略——它决定了加速过程中发动机转速的响应速度而在并联混合驱动、行车发电模式下发动机转速是由整车车速和挡位决定的转动惯量偏差会直接影响瞬态油耗。电机建模则需要外特性包络线、效率MAP、峰值功率与持续功率曲线持续功率曲线在长途爬坡工况中特别重要如果只用峰值功率仿真里电机过热限功率的工况完全无法复现。电池方面我推荐用等效电路模型至少包含开路电压OCV随SOC的变化曲线、充电内阻和放电内阻两条曲线以及容量与温度修正因子。有些工程师为了省事只给一个恒定内阻加一个固定OCV这种做法在稳态工况下还能凑合但再生制动本身就是瞬态大电流充电过程内阻偏差几个毫欧SOC回升量的误差就可能放大到5%以上。变速箱要定义各挡速比、传动效率、换挡时间、换挡规律。制动器则需要前后制动器参数和液压响应时间常数——这个时间常数在再生制动协调控制里极其重要后面会展开说。2.2 机械连接与控制信号动力流和控制流要分开走Cruise的建模逻辑可以概括成两套网络机械网络和控制网络。机械网络通过齿轮副、轴连接把发动机、K0离合器、电机、变速箱、主减速器、车轮串成一个功率传输闭环。电气网络把电池与电机控制器连起来保证电能可以双向流动。控制网络则通过Data Bus、传感器信号和控制器模块把油门踏板、制动踏板、挡位信号、转速信号、扭矩请求等连到策略层。这里有一条原则机械连接保证物理功率流畅通信号连接保证控制逻辑生效两者不能混为一谈。很多初学者在Cruise里放了一个电机模块双击进去填了参数表然后只在机械层面接好齿轮副却忘了在电机控制器输入端口接扭矩请求信号仿真结果自然是电机不出力还以为是电机参数填错了。控制策略的接入方式有两种主流方案一是直接在Cruise里用Function模块编写逻辑适合简单策略和快速验证二是通过API接口或MATLAB DLL/Simulink联合仿真接口把外部模型嵌进来适合完整的混合动力控制策略。我做P2再生制动和最优制动力分配时采用的是Simulink联合仿真方案——策略复杂度高涉及状态机、查表、限幅、滤波放在Simulink里维护要方便得多。联合仿真有个关键设置控制信号采样步长必须固定。Cruise与Simulink交换数据时如果Cruise端采用变步长控制信号采样而Simulink端用固定步长两者时序错位会导致控制信号呈锯齿状抖动这在再生制动扭矩请求曲线上表现尤其明显。我在做联合仿真初期被这个问题坑过很久后面统一把两端都设成固定步长1ms或10ms之后信号瞬间就干净了。关于参数表还有一个经验用实验数据直接导入时一定要检查数据覆盖度。比如发动机万有特性图的低速低负荷区域、电机效率MAP的高速弱磁区很多台架实验数据是稀疏的。直接让求解器用线性插值得到的仿真结果在稀疏区域会出现明显棱角甚至负效率的荒谬情况。我的做法是用双三次样条对原始MAP做预插值把网格加密后再导入并且人工检查插值后的等效率线是否平滑。这套流程多花半天时间但能省下后面一个星期的排错时间。3. 再生制动集成能量回收边界与制动力协调3.1 制动强度的分级策略与再生制动使能条件再生制动不是“只要踩刹车就回收”这么简单。实际工程中按制动强度把制动过程分成不同层级来处理是整车厂最常用的做法。制动强度z通常定义为减速度与重力加速度之比即z a/g。轻度制动z 0.1对应日常缓慢减速和长下坡维持车速这时候减速度需求不大纯靠电机回收就能满足而且回收效率高是收益最大的区域。中度制动0.1 z 0.3对应常规路口减速电机回收扭矩已经不够满足全部减速度需求需要前轴液压制动力从零开始介入补充同时电机继续工作。重度制动及紧急制动z 0.3必须转向以液压制动为主回收功能快速退出这时候安全距离和制动稳定性远比那点能量回收重要。对应的使能条件我在工程里按这个清单管理SOC上限电池电量高于某值如95%时禁止回收防止过充电池温度过冷或过热都会限制充电功率一般取-10℃~45℃区间并做温度降额车速下限车速低于某阈值如10km/h时回收力矩线性退出因为低速时电机发电效率低且扭矩精度变差制动强度上限紧急制动发育自动关闭回收通道整车稳定性状态ABS激活、ESP介入时必须立即切断回收扭矩这套使能条件在仿真模型里全部要显式建模不能靠“反正电池SOC没满一直开着就行”的简化处理。原因在于仿真要复现的是真实逻辑而不是理想逻辑——如果模型里没有SOC上限和温度降额冬季低温工况的回收量会被高估对标时这个偏差非常难解释。3.2 与液压制动的协调力矩响应差如何补再生制动进入工程级精度的最大难点其实在“协调”两个字上。电机扭矩响应快扭矩建立时间通常50~200ms而液压制动系统由于制动液建压过程响应要慢一些约150~300ms。这两者的时间常数不一样如果控制策略同时在t0时刻给电机发送满扭矩回收请求、给液压系统发送撤压请求整车的实际减速度会先跌后涨车上乘员的感觉就是“刹车一顿一顿的”。解决思路有几个层次。基础做法是斜波补偿——电机回收扭矩按斜波函数快速上升液压制动力按反向斜波同步撤出两者的合成力矩曲线尽量保持平直。进阶做法是把电机响应模型直接放进控制策略里做前馈即在发出扭矩请求时预先考虑电机的实际响应特性把扭矩目标值做一个动态修正。Cruise里的实现路径是这样的驾驶员模型输出制动踏板行程或请求减速度经过协调模块计算后生成三路请求——电机回收扭矩请求、前轴液压制动力请求、后轴液压制动力请求。电机扭矩请求通过Data Bus发给电机控制器液压制动力请求则直接接入前后制动器模块。协调模块内部需要增加前置滤波处理避免扭矩请求信号在模式切换瞬间产生阶跃跳变。制动平顺性的好坏最后基本都能从“合成减速曲线是否围绕目标减速度小幅波动”上看出来。波形越平坦说明协调逻辑越到位。4. 最优制动力分配从动态规划到工程可落地的查表4.1 目标函数、约束条件与可解性说“最优制动力分配”之前先明确一点最优的目标是什么不同场景下定义不同。我做这个项目时制动能量回收量最大是主导目标即在满足制动减速度需求和安全边界的前提下让电机尽可能多地把整车动能转化为电能存进电池。但“每个控制步都让电机扭矩拉满”并不等于全局最优——电机在高速区效率高低速区效率下降电池在大功率充电时内阻损耗变大制动强度很高时强制电机全力回收还可能让液压系统撤压过猛导致制动距离增加。这些因素交织在一起你面对的是一个典型的动态优化问题。目标函数可以写成max J ∫ P_rec(t) dt其中P_rec T_mot × ω_mot × η_mot × η_battT_mot是电机回收扭矩ω_mot是电机转速η_mot是电机发电效率η_batt是电池充电效率。优化变量是每个离散时刻的电机回收扭矩约束条件包括总制动力等于需求制动力F_f F_r m × a_des法规约束前后轴制动力分配必须落在ECE法规边界线允许范围之内即后轴不能先于前轴抱死电机外特性约束0 ≤ T_mot ≤ T_mot_max(ω_mot)电池充电功率约束T_mot × ω_mot × η ≤ P_chg_max(SOC, Temp)制动平顺性约束回收扭矩变化率受限防止突然接入或退出这套问题用解析法求解很费劲但用动态规划DP离线求解非常合适。把车速和SOC做成状态变量把电机回收扭矩做成控制变量从每个制动工况的终点车速为0倒推就能得到一组“当前车速当前SOC需求减速度 → 最优扭矩分配”的完整决策规则。4.2 从DP离线解到查表MAP的落地过程动态规划算出来的是一组离线最优解不能直接搬到实车或联合仿真里用——因为DP需要知道整个制动过程的未来信息这在在线实时控制中不现实。工程落地的方法是把DP结果抽稀成可查的表。具体操作流程是在Simulink里搭建完整的P2混动模型做离线仿真覆盖不同初始车速、不同SOC、不同制动强度的组合工况在每个工况用DP求解器算出最优的分配方案记录下来后做回归分析。最后形成两个核心MAP电机回收扭矩MAP输入为当前车速和请求制动强度输出为电机回收扭矩请求值液压分配系数MAP输入为当前车速和请求制动强度输出为前轴液压占前轴总制动力需求的比例实际做的时候还要加几个修正系数——电池SOC修正、电池温度修正、低温效率修正。这些修正系数在DP求解时没有显式建模但标定阶段一定要补上否则夏季标定的MAP在零下环境直接套用回收扭矩会超出电池允许的充电功率边界。关于MAP的维度选择我的体会是表越简越好够用即可。早期我试着做了一个三维MAP车速×制动强度×SOC效果确实更精细但标定工作量成倍增加而且相邻区域的数据稍有不平滑整车减速度就会出现可见波动。后来改成“二维主表一维修正系数”的结构数据量小、易标定实际表现也干净很多。这里顺带说一句DP实现时的典型细节DP求解需要把制动过程按固定周期离散化我常用10ms或50ms的步长。步长太大最优解的精度明显下降步长太小计算时间会从几分钟膨胀到几小时。对离线标定来说10ms步长和50ms步长最后的查表结果差异小到可以忽略所以先用大时间步长算出初版MAP再根据实测曲线做局部修正是性价比最高的路径。5. 仿真置信度验证工况、指标与对标修正5.1 动力与经济性验证仿真和台架先对齐模型搭完了分配策略也进去了这时候最怕的事情是“仿真自己跑得很欢但一和试验数据对比就露馅”。所以我把验证工作分成三个层级来做。第一层级是部件级对标把发动机外特性、电机外特性、电池内阻分别拿去和台架试验数据对比。这一步是基础——如果电机效率MAP在仿真里的误差有3%到整车油耗计算时误差可能被放大到8%甚至更多。部件级对标通常能过滤掉80%的参数输入错误。第二层级是整车动力性验证跑0-100km/h加速时间、最高车速、最大爬坡度和转毂台架的数据对比。这几个指标对转动惯量、风阻系数、传动效率非常敏感。我做这个项目时最早算出的0-100km/h加速时间比试验值快了0.6秒排查后发现问题出在整车模型里没把传动轴的转动惯量计入——变速箱、半轴、车轮的惯量加在一起对加速过程的影响比预想中大得多。第三层级是经济性验证在CLTC/WLTC/NEDC工况下分别跑电量消耗CD和电量维持CS两种模式对比油耗和电耗。经济性对标如果偏差超过5%基本都要往回找参数表的问题不要急着怀疑策略。5.2 再生制动与能量回收率的对标细节再生制动效果的对标我常用的方法是固定减速度重复制动工况在转毂台架上让车辆以某个固定减速度如0.15g从80km/h刹车停重复几次后记录总SOC变化和总回收能量。仿真模型里复现同一个工况对比SOC曲线和回收能量总量。这个工况看起来简单实际对标的细节非常多。第一个坑是SOC测不准——电池SOC是估算值实车上基于开路电压或安时积分估算本身就有误差。如果拿整车仪表显示的SOC去对标误差可能比模型误差还大。我在项目里的做法是把试验记录的电池电流和电压积分算出来的“真实放电电量”作为基准而不是直接比较SOC百分比。第二个坑是初始SOC状态。电池在不同SOC点上的充电内阻差异明显高SOC时充电效率相对低对标前一定要保证仿真与试验的初始SOC一致偏差控制在1%以内。第三个坑是附件消耗。实车再生制动回收的能量要扣除转向助力泵、真空泵、空调压缩机等附件的消耗仿真模型如果忽略了这部分回收能量会比试验值偏高。对P2混动车型来说电动真空泵在制动过程中工作频繁附件功率能在短时间内达到1kW以上在重复制动工况里累积效应不可忽略。从我的实测经验看仿真与试验的能量回收率偏差控制在10%以内是可以通过标定修正达成的偏差大于15%时一定要回去检查电机效率MAP或电池充电功率限制的建模是否准确。6. 建模踩坑记录六个值得写下来的问题6.1 “SOC不涨反跌”与制动扭矩符号的坑先讲一个看起来特别荒诞的问题明明在做制动回收仿真结果里SOC不但没上升反而下降了。第一次遇到这个现象时我还以为是电池模型出了问题花了半天时间排查OCV曲线和内阻参数结果都没毛病。后来把电机的扭矩请求信号、电流信号、SOC信号三张曲线放到同一个时间轴下对比真相才浮现再生制动模块输出的扭矩请求方向定义与控制策略里电机扭矩方向的定义正好相反。驱动工况下正扭矩定义为加速发电工况下应该输出负扭矩但因为两个模块分别由不同工程师维护符号约定没统一导致仿真里电机收到的是一个正向驱动扭矩请求——结果是制动时电机反而在输出动力SOC自然不涨反跌。排查这种问题有个捷径把电机转速、扭矩和电池电流画在同一张图里看正负号关系是否满足物理定义。驱动时转速与扭矩同向发电时转速与扭矩反向如果符号关系反了一眼就能看出来。踩完这个坑之后我在项目里定了一条规矩所有信号交接文档里扭矩方向必须写明坐标约定并用“驱动为正/发电为负”这种无歧义的表述统一。这个习惯帮后面几个项目省了大量沟通成本。6.2 离合器时序、降挡转速超限与低温MAP第二个坑是关于K0离合器的。纯电起步模式下发动机不工作扭矩都由电机提供但仿真结果显示发动机转速从0被拖到接近1500rpm白白增加摩擦损耗。问题定位到控制策略里的离合器分离条件当时的策略用车速小于某个阈值比如5km/h作为分离判断条件但车辆从0起步加速时车速超过5km/h之前扭矩请求已经足够大K0离合器在这种状态下进入了滑摩状态发动机硬生生被摩擦扭矩带转了。解决办法是把离合器状态判断从“纯车速阈值”改成“模式状态车速阈值的复合逻辑”在纯电模式下不管车速多少都强制分离等模式切换指令真正下达后再闭合。第三个坑出现在再生制动过程中。强回收时变速箱执行了降挡动作电机转速瞬间飙升超过最高转速限制仿真直接报错。根子在于换挡策略沿用了普通燃油车的逻辑——基于油门踏板和车速判断降挡时机没有考虑制动工况的特殊性。修复方案很直接在制动模式下禁用降挡或者把换挡MAP在制动工况下强制切换为“禁止降挡”版本。第四个坑关于低温MAP。北方冬季试验的数据回收率比常温低了一大截对比仿真曲线发现模型用常温电机效率MAP直接外推到低温区导致回收能量高估。解决方法是准备一套低温专用效率MAP或者至少给回收扭矩加一个温度修正系数。6.3 步长不一致、驾驶员模型平滑与仿真抖动第五个坑是联合仿真步长不一致导致的控制信号抖动。现象是电机扭矩请求曲线在Cruise里看起来像锯齿状每一个控制周期都在波动减速度曲线也跟着起伏。排查后确认Cruise端控制信号采样用了变步长而Simulink端的策略模型用固定步长两者交换数据的时序无法对齐。把两端统一设为固定步长我用10ms后信号立刻平滑了。第六个坑属于低级错误但依然很有代表性驾驶员模型的PID参数没调好制动减速度曲线围绕目标值反复振荡。Cruise自带的驾驶员模型默认参数偏向保守如果直接用在再生制动协调这种对减速度跟随精度要求很高的场景就会暴露问题。我当时的做法是把PID中的比例项调大一点、积分时间缩短一点让速度误差死区收窄振荡自然消除。这里建议按目标车型的实际驾驶习惯做一轮参数标定不要迷信默认值。踩坑经验汇总方便大家查阅序号现象根因修复方式1制动时SOC反降扭矩方向符号约定不统一统一信号方向定义用“驱动为正/发电为负”2纯电起步发动机被带转离合器分离条件过于依赖车速阈值改为“模式状态车速”复合条件3制动降挡导致电机超速换挡策略未考虑制动工况制动模式下禁止降挡4低温回收率仿真偏高常温电机MAP外推到低温失真建立低温专用MAP或加温度修正5控制信号锯齿状抖动联合仿真步长不一致两端统一设为固定步长6减速度曲线振荡驾驶员模型PID参数不当重标定PID参数调小误差死区做P2混动仿真这几年我最大的体会是模型精度的天花板往往不在数学算法层面而在底层数据质量和信号定义规范上。再生制动和最优制动力分配这两套逻辑策略结构本身并不复杂复杂的是它们与整车机械系统、液压系统、电池系统的耦合边界。把这些边界一个不漏地建模出来、一个不错地对齐符号方向仿真结果自然就“精准”起来了。最后再分享一个日常习惯每完成一个版本的模型迭代我会强制自己跑一轮“无工况差异对照”——用同一套模型连续跑两次相同工况结果必须严格一致确保没有随机项混进确定性仿真。这个小检查花不了几分钟但能拦截掉大量隐性问题建议有条件的朋友都养起来。