增程式混动Cruise整车建模与仿真全流程解析 增程式混合动力车型这两年话题度一直没降过但真正上手去搭建一套能用的整车仿真模型很多朋友还是卡在“不知道从哪开始”。我前段时间刚好完完整整地做了一遍增程式串联式混动构型的Cruise整车建模与仿真分析从查参数、搭模型、写控制策略到跑CLTC工况、看油耗电耗结果整个过程踩了不少坑也实打实摸清了很多建模细节。这篇就围绕“串联式增程构型到底怎么在Cruise里落地”这件事把整套思路、关键步骤和避坑经验都捋一遍给同样在做混动仿真或者准备入门的工程师一些参考。1. 增程式“串联”构型为什么发动机只发电、不驱动1.1 一条能量路径上的两次转换增程式混动的核心结构理解起来并不复杂发动机不直接驱动车轮而是带动发电机发电发出的电能一部分给驱动电机另一部分存在电池里。车轮从头到尾只由驱动电机带动发动机的机械能先变成电能电能再变回机械能这就是串联式构型名字的由来——能量链路是一条串联路径。很多第一次接触这种构型的朋友都会有个疑问既然能量多转换了一次效率岂不是会打折扣确实如此机械能→电能→机械能这两次转换肯定有损耗。但增程式真正的优势在于发动机不再需要跟着车速和路况频繁变化转速和扭矩。传统燃油车发动机必须覆盖从怠速到高速的宽泛工况区间而增程式的发动机可以一直工作在高效区间附近转速、负荷基本保持在一个很有利的状态。打个不太严谨但容易理解的比方传统燃油车相当于让一个运动员既要短跑又要长跑还要爬山每个项目都得应付增程式则相当于让发动机只干“匀速发电”这一件事专挑运动员最舒服的配速来跑整体效率自然就上去了。尤其是在市区走走停停、平均车速很低的场景下传统发动机大量工况落在低效区而增程式发动机以恒定高效点工作综合油耗优势非常明显。1.2 增程式能效的黄金区间与明显短板既然增程式在市区工况有优势那它有没有不擅长的地方有而且是构型本身带来的天然短板——持续高速巡航场景。当车速稳定在120km/h左右时整车需求功率很高驱动电机必须持续输出大功率这时如果电池电量足够可以靠电池放电顶着但如果电池SOC掉到阈值以下发动机就必须发电。高速场景下系统需求功率本身就超过了发动机的高效发电区间或者刚好卡在边界上发动机被迫在偏离最佳油耗点的位置运行。再加上“机械→电能→机械”两次转换损耗高速工况下增程式的油耗往往不如同级别的并联混动或者直驱构型。所以在做仿真模型之前心里要先清楚增程式不是万能方案它的优势场景是城市工况和综合工况短板场景是持续高速。后面所有建模参数选择、控制策略标定都要紧扣这个特性。理解了这一点再看Cruise里各个部件的参数设定才能明白为什么很多增程车型发动机功率只需要30~60kW而驱动电机功率要拉到100kW以上——因为发动机只需要覆盖“平均功率”级别的发电需求电机才需要覆盖“峰值功率”级别的驱动需求。1.3 串联构型与并联构型、功率分流构型的分工边界做混动仿真的人经常会对比三种主流构型串联式增程、并联式、混联式功率分流。在Cruise里这三种构型的建模方式差异很大。并联构型里发动机和电机都可以单独驱动车轮也可以通过离合器耦合共同驱动建模时需要考虑扭矩耦合路径和多种工作模式的切换逻辑功率分流构型比如行星齿轮方案则涉及动力分配机构的动力学建模机械连接关系复杂得多而串联构型是最“干净”的——发动机和发电机只是通过机械连接同轴运转和驱动端没有任何机械耦合整车层面只有一条机械传动链驱动电机→减速器→车轮。这种结构上的简化反映到Cruise建模上就是机械连接关系清晰、模式切换逻辑简单、控制策略容易落地。但同时也要注意串联构型的能量管理策略设计空间其实很大电池SOC怎么用、发动机什么时候启动、发电功率怎么分配这些问题直接决定了整车油耗和电耗表现也是仿真工作中最有技术含量的部分。2. 建模前的数据准备一份参数表怎么变成可跑的整车模型2.1 整车基础参数的整理逻辑在Cruise里新建模型之前先把整车参数整理好这一步偷懒后面全都会找回来。Cruise建模的第一步是搭Vehicle整车子系统需要输入整备质量、迎风面积、风阻系数、滚动阻力系数、轴距等参数。这些参数看起来基础但每一个都会直接影响仿真结果。比如迎风面积和风阻系数直接决定了高速巡航工况的需求功率。很多仿真结果高速油耗偏高排查下来发现是风阻系数或者迎风面积填错了或者轮胎参数没校准。我自己的习惯是建一个Excel参数表把整车参数、动力参数、电池参数分成三个sheet每项后面标注数据来源实测、公告值、估算值这样后面不管是自己查问题还是跟别人对数据都能很快定位。2.2 发动机与电机的特性数据从哪来发动机模型在Cruise里需要输入外特性曲线油门全开时的扭矩-转速曲线和万有特性数据不同转速、扭矩点对应的燃油消耗率。没有实测台架数据的话可以用同排量、同技术路线的已知机型数据做近似但必须清楚这是“近似”而不是“真实”后续如果要发出公告值或者做控制策略优化建议尽早换用实测数据。电机模型需要的是外特性曲线峰值扭矩/峰值功率随转速变化、效率MAP不同转速、扭矩点下的电机效率。这个数据同样优先选实测或者厂商提供的MAP图。需要特别注意电机在发电模式和电动模式下的效率MAP是两套数据Cruise里通常用ElectricMachine模块可以通过设置运行模式来区分发电机和驱动电机角色但每个模块只能有一套效率MAP。有些朋友把发电机的效率MAP套到了驱动模式上结果整车电耗仿真数据明显偏差这种错误很难一眼看出来最终是通过对比电机工作点温度场才发现的。2.3 电池模型的简化与标定电池模块在Cruise里用EnergyStorageSystem表示核心输入包括单体电压、内阻充电内阻/放电内阻、容量以及SOC-OCV曲线。建模新手最容易犯的错误是把电池当成一个完美电压源内阻设为常数0。这样仿真出来的结果是SOC变化非常“理想”但实际电池在大倍率充放电时电压降和内阻发热都会影响整车性能尤其是增程式在低SOC区间启动发动机强充时内阻增大导致的充电功率受限会被完全忽略产线策略开发时会直接踩雷。电池参数标定方面SOC-OCV曲线必须用实测数据或者至少是高精度的估算数据这条曲线直接决定SOC估算的准确性进而影响能量管理策略的触发逻辑。内阻参数最好区分充电内阻和放电内阻别用同一个值凑合。温度对电池性能的影响在Cruise里可以通过Thermal模块实现但如果做的是常温策略仿真可以先忽略温度维度把模型复杂度控制在合适的水平后面再做热耦合版本。建模这件事适度简化是合理的但关键参数不能乱填否则后面对标实车时会发现模型完全不可信。3. Cruise模型搭建从元件拖拽到能量路径的正确连接3.1 系统布局与机械连接进入Cruise模型搭建阶段后第一件事是搭出系统拓扑图。增程式串联构型的典型布局是发动机模块带一个发电机模块两者用机械连接同轴相连驱动电机模块通过机械连接接到减速器Final Drive再连到车轮。电池模块通过电气连接分别接到发电机逆变器和驱动电机逆变器。拖拽元件这件事看起来简单但连接关系非常容易出错。Cruise里的连接分为三种机械连接蓝色、电气连接红色、信号连接黄色。机械连接表示物理轴系传输扭矩和转速电气连接表示高压电气网络信号连接用于控制信号和数据交换。增程式模型最容易犯的机械连接错误是把发动机和驱动电机之间也加了机械连接。有些并联构型的模型搭多了会下意识觉得发动机必须连到驱动轮上结果拓扑图上出现了一条本不该存在的机械路径仿真时发动机扭矩莫名其妙地参与了驱动。对应到增程式模型里发动机和驱动桥之间必须完全是电气连接的路径这一点在搭模型时就要反复确认。3.2 电气连接的层级关系电气连接在增程式模型里承担着能量传输的核心职责。电池的高压正负极分别接到发电机逆变器和驱动电机逆变器的直流侧逆变器交流侧再通过电气连接接到各自电机模块。这样发电机发出的交流电经逆变器变成直流电汇入电池直流母线再从母线取电驱动电机。这里有个容易被忽略的点Cruise里电气连接要形成完整的回路也就是正极连正极、负极连负极不能只连一条线。有些新手只连了正极负极没连仿真直接报错还有一种错误是电池正负极端子命名搞反导致电气连接逻辑错乱仿真时出现“电池一直在放电但电机功率不足”的诡异现象。3.3 信号连接与控制总线信号连接在Cruise里是最灵活也最容易出问题的一环。增程式模型里需要传递的信号包括整车需求扭矩、驱动电机实际转速、电池SOC、发动机启停命令、发电功率请求、制动踏板信号、加速踏板信号等。Cruise里的信号连接通过Data Bus数据总线实现每个模块都有输入/输出端口矩阵。比如驱动电机需要接收“需求扭矩”信号整车控制器需要接收“实际车速”信号和“SOC”信号发动机控制模块需要接收“启动/停止命令”和“功率请求”。我自己的经验是在搭信号连接之前先画一张信号流图把“谁产生信号、谁接收信号、信号名称叫什么”都列清楚再回到Cruise里逐条对应。没有这张图搭着搭着就会漏掉某条信号仿真时各种诡异报错排查起来费时费力。4. 控制策略落地发动机启停逻辑与功率跟随的实现4.1 恒温器式控制与功率跟随式控制的取舍增程式混动的能量管理策略最常见的两种思路是恒温器式控制和功率跟随式控制。恒温器式控制逻辑很简单当SOC降到设定下限比如30%发动机启动并以固定功率发电当SOC充到设定上限比如60%发动机关闭。这种策略实现起来非常简单发动机工作点完全固定可以标定到最优油耗点但缺点也很明显——发动机只有“开”和“关”两个状态功率不随整车需求变化电池要反复承担大功率充放电系统综合效率并不一定最优。功率跟随式控制则是让发动机发电功率跟随整车需求功率去动态调节车辆需求功率大发电机功率跟着增大需求功率小发电机功率跟着减小。这样电池的充放电负担更小系统效率更高。但缺点是需要发动机在较宽的功率范围内都能保持较高效率对发动机万有特性要求更高控制逻辑也更复杂。实际项目中往往取折衷方案在SOC较高时尽量纯电行驶在SOC降到阈值后进入“功率跟随小幅充电”模式同时保持发动机在高效区内工作。仿真模型里可以用Cruise的Function模块编写这套逻辑核心变量就是SOC、整车需求功率、发动机工作点限制。4.2 SOC滞环的工程设置发动机启停控制如果没有滞环会出现非常尴尬的现象SOC刚降到30%触发启动发了一会儿电SOC升到30.5%又触发停机过一会儿SOC又掉到30%再启动……发动机在短时间内反复启停不仅油耗崩坏还会让仿真结果极不真实。所以在控制逻辑里必须设置滞环区间。比如典型设置SOC下降到30%时允许发动机启动SOC上升到45%时允许发动机停机中间这15%的SOC区间就是滞环带。这样发动机每次启动后至少工作一段时间不会频繁启停。滞环宽度的选择要权衡太窄会启停频繁太宽会让电池SOC工作区间变窄导致电池可用能量减少。在Cruise的Function模块里实现滞环逻辑有一个小技巧用两个独立的阈值变量分别判断启动和停止条件通过状态锁存来实现——一旦SOC低于启动阈值状态置1即使SOC回升也不立即清零必须等到停止阈值才清零。这个看起来简单的逻辑用代码写起来很容易犯错但逻辑本身并不复杂。4.3 在Cruise Function里写控制逻辑的思路Cruise的Function模块是内置的编程接口相当于可以在模型里写一段自定义的控制逻辑。常用的是MATLAB脚本语法当然也支持其他语言接口。我一般把控制逻辑拆成几步来写第一步读取信号获取当前SOC、车速、整车需求扭矩、挡位、制动信号等输入数据第二步判断模式根据SOC和车速判断当前应该纯电行驶、增程行驶、还是发动机强制启动第三步计算功率请求根据整车需求功率和电池SOC状态计算发动机发电功率请求和目标转速第四步输出控制信号把启动/停止命令、发电功率请求、发动机目标转速写回到输出端口。Cruise的Function模块在仿真每个步长都会被调用所以逻辑要写成“每个时间步都执行一遍”的格式保证状态能够持续更新。由于增程式构型本身没有变速器换挡逻辑整车主控制逻辑比并联混动简单不少但依然建议把控制策略单独放在一个Function模块里别散落多个模块这样后续调整参数会方便很多。关于联合仿真如果控制策略比较复杂比如要跑A2C算法或者多目标优化Function模块不一定够用就需要把Cruise和MATLAB/Simulink做联合仿真在Simulink里写控制策略Cruise作为车辆模型引擎。联合仿真能跑出更精细的结果但配置起来比较繁琐数据交互和步长设置都得仔细对齐属于进阶玩法。5. 仿真工况配置与结果分析CLTC跑下来的数据怎么解读5.1 工况选择的差异与影响增程式混动的仿真验证标准工况是非常重要的一环。国内乘用车目前用得最多的是CLTC工况它覆盖了低速、中速、高速三段整体平均车速相对较慢、停车比例高和城市路况契合度较高对增程式车型来说比较友好。之前欧洲常用NEDC工况因为加减速平缓、匀速段多测试结果普遍偏乐观WLTC工况更激进、高速占比更高对增程式是不友好的工况高速段的短板会被放大。如果要做全面的性能评估我的建议是CLTC和高速工况比如WLTC高速段一起跑CLTC看综合油耗电耗高速工况看增程模式下的油耗边界值。两个结果一对比就能知道这款车型的城市和高速适应性到底怎么样后面如果要做能量管理策略优化也有了方向。5.2 油耗、电耗、续驶里程这些结果从哪里读CLTC工况跑完Cruise会输出很多结果文件主要看这几个指标百公里综合油耗L/100km这个是最直观的燃油经济性指标百公里电耗kWh/100km看电池电量消耗情况纯电续驶里程SOC从100%掉到触发增程阈值时行驶的距离SOC轨迹看整个工况过程中电量怎么波浪式变化发动机工作点分布图这个最重要能看出发动机是否在高效区工作。在Cruise的Result Manager里可以查看这些数据曲线。油耗输出在Engine模块的油耗量结果中电耗则要走电池模块的累计能量输出SOC轨迹在电池模块的SOC结果里。如果多跑几个工况把结果导到Excel里整理成对比表格分析起来会更高效。5.3 发动机工作点分布图——判断策略好坏的核心指标增程式控制策略标定得好不好最直观的判断方法就是看发动机工作点分布。Cruise可以把仿真中发动机运行过的所有转速、扭矩点统计出来画在发动机万有特性图上上面叠加燃油消耗率等高线。如果工作点密集分布在低油耗区通常在中低转速、中等偏高负荷的“经济圈”内说明控制策略让发动机很好地工作在高效区如果工作点散落在低效区或者分布范围过大说明功率跟随逻辑没做好发动机被逼到差工况运行了。增程发动机的工作区间其实应该是“一条带”而不是“一片区”——围绕最优工作线上下小幅波动转速集中在较小范围。我看到过有的仿真模型跑出来的工作点分布是很大一片散点做出来的原因就是发电功率直接跟驾驶员踏板走发动机完全没经过优化整车油耗数据高得离谱。通过观察工作点分布再反推控制逻辑哪里不合理是增程式仿真标定里最常用也最有效的方法。6. 实测中踩过的坑与调参经验6.1 SOC跳变和续驶里程异常的问题建好模型第一次跑仿真时最常见的BUG就是SOC曲线出现阶梯式跳变或者续驶里程显示异常。我排查过几次基本都是电池参数设置的问题要么单体电池容量和电池系统容量概念没区分导致SOC计算基数错误要么SOC-OCV曲线输入的是开路电压曲线但Cruise内部计算时按端电压SOC去查表两者数据不匹配。这类问题排查起来挺需要耐心的。我的建议是模型搭完先做一次最基本的“纯电行驶仿真”在SOC从100%跑到20%的过程中对比SOC下降速度和电池端电压变化是否符合基本物理规律。如果SOC下降速度明显异常比如开1公里SOC就掉了5%先检查电池容量单位、并联单体数量、初始SOC这几个参数别急着动控制策略。6.2 发动机起停震荡的教训有一次跑增程模式仿真结果里发动机转速出现了高频震荡SOC曲线在阈值附近反复波动。后来查下来是SOC滞环宽度设得太窄——启动阈值是30%停止阈值是32%只给了2%的滞环空间。发动机刚启动补了一点电SOC迅速回升到32%触发停机但车辆还在用电SOC又很快掉下来再次触发启动形成一个高频启停循环。解决办法是加宽滞环区间同时检查是否需要在发动机启动后加入最小运行时间限制。比如设置“发动机启动后至少运行120秒才能停机”这样即使SOC瞬时满足停机条件也能保证发动机稳定运行一段时间。当然最小运行时间设太长也有问题会造成电池过充或者不必要的油耗这个值要根据实际工况反复试。6.3 冷启动和温度修正的简化与验证第一版模型常常忽略温度因素发动机冷启动油耗比热机状态高那个差异在某些工况下是很明显的——尤其是低温冷启动的市区短途工况油耗偏差可以到两位数百分比。如果项目对油耗估算精度要求高建议在模型里加入发动机冷启动修正模块Cruise里可以通过温度相关的修正MAP来实现。我自己的习惯是分版本处理第一版先做常温模型把主要问题都排查干净策略调顺了之后再叠加温度修正。否则一开始就加入温度变量模型复杂度上去了排查问题要多查一层对新手很不友好。6.4 与Simulink联合仿真的一些考虑说到联合仿真规模比较大的控制策略开发通常不在Cruise的Function模块里全部实现而是用Simulink搭控制器通过接口和Cruise做联合仿真。这种方式的优点是控制逻辑写起来更自由更适合算法迭代但也有个明显的代价仿真速度慢很多一个CLTC工况跑下来可能要很久而且数据同步和步长配置如果没对齐偶尔会出现一些特别难排查的信号时序问题。我自己一般用两阶段策略前期用Cruise内置Function模块做大量参数扫描和趋势性验证快速缩小合理参数范围后期再用Simulink联合仿真跑重点工况对细节做精准标定。这样兼顾了开发效率和精度要求。联合仿真不是不可以用关键是别一上来就上大工程先让纯Cruise模型跑通跑顺再谈联合仿真。增程式串联混动的Cruise建模说到底就是把“发动机高效发电、电池削峰填谷、电机直接驱动”这套逻辑在仿真软件里完整落地。搭模型本身不算难难的是对构型原理的理解、对参数数据的把关、对控制策略的标定以及遇到各种诡异报错时的排查能力。我这些经验也只是基于自己项目里的实际踩坑每个人遇到的具体问题可能都不一样。如果你也在搭增程式或者其他混动构型的仿真模型卡在某个环节的话欢迎一起交流说不定你踩的坑正好我也踩过。