ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

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

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 × η_batt,T_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混动仿真这几年,我最大的体会是:模型精度的天花板往往不在数学算法层面,而在底层数据质量和信号定义规范上。再生制动和最优制动力分配这两套逻辑,策略结构本身并不复杂,复杂的是它们与整车机械系统、液压系统、电池系统的耦合边界。把这些边界一个不漏地建模出来、一个不错地对齐符号方向,仿真结果自然就“精准”起来了。

最后再分享一个日常习惯:每完成一个版本的模型迭代,我会强制自己跑一轮“无工况差异对照”——用同一套模型连续跑两次相同工况,结果必须严格一致,确保没有随机项混进确定性仿真。这个小检查花不了几分钟,但能拦截掉大量隐性问题,建议有条件的朋友都养起来。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进