
1. 项目概述为什么增程器需要一台“仿真和事佬”这几年做整车动力系统仿真身边越来越多同事开始碰增程项目。白天开会定方案晚上打开仿真模型跑工况一等就是大半个小时跑完一看SOC曲线没稳住油耗数据比PPT上写的多了半升。这种状态做过增程仿真的工程师应该都不陌生——燃油车那一套油耗模型简单直接纯电车那一套电机电池模型也相对清爽唯独增程器发动机、发电机、电池、驱动系统全搅在一起谁跟谁都有关联谁跟谁又都有“脾气”。发动机有自己的高效区发电机有自己的效率map电池有SOC的上下限四个子系统凑在一起如果不好好协调整车的油耗、电量平衡、NVH表现全部崩给你看。增程器这个词听着玄乎本质上就是一个“油转电”的中间环节发动机不再直接驱动车轮而是带动发电机发电电再送给驱动电机或存进电池。这样一种架构之所以能存在是因为它把燃油车和电动车的优势做了折中——发动机始终可以工作在高效区间电池又能吸收能量回收和功率波动的“缓冲”。但要真把这个中间商做出价值不是把发动机和发电机简单拼在一起就完事。工作点怎么选、什么时候启动、启动功率设多少、SOC维持在什么范围、发动机响应跟不上怎么办这些全是系统工程。单纯靠台架测试去标定一台增程器光试验周期就够喝一壶而一套靠谱的Cruise仿真模型能让这些问题在办公室电脑上先“吵”一遍省下的台架时间可不是一点半点。这篇内容想聊的核心也就在这儿怎么搭出一套能真正用于工程决策的增程器Cruise仿真模型不是那种画个框图、跑个循环就交差的演示模型而是细致到控制策略逻辑、关键参数标定、异常工况排查都能做进去的模型。适合谁看如果你刚接手增程项目的仿真任务或者已经搭过一轮模型但总觉得和实车对不上亦或是做能量管理策略开发想找个整车级验证平台这篇应该都能给你一些能直接用上的参考。需要先说明的是本文不涉及具体车型参数和商业软件加密的内部数据所有案例均来自可公开讨论的仿真方法论和通用工程实践参数数值只是为了让逻辑更清晰而给出的示意值。毕竟每个项目都有自己的“脾气”方法对了参数落到什么区间是水到渠成的事。2. 整体架构与仿真方案怎么选2.1 增程器建模的三条路线为什么选Cruise增程器建模行业内其实有好几种流派。第一种是最简单粗暴的查表法也就是把发动机万有特性曲线和发电机效率map直接做成静态查表模型输入转速扭矩输出油耗和发电功率。这种模型解算速度快、参数少跑一个NEDC工况几秒钟就搞定适合早期方案评估和趋势判断。但它的短板很明显——没有真实惯量没有控制器延迟发动机从怠速到目标工作点需要多少时间的动态过程完全体现不出来一旦涉及到启动平顺性、功率突变响应这类问题查表法基本无能为力。第二种是物理机理模型把进气道、气缸、涡轮、中冷器全部搭成微分方程组每一步燃烧过程都模拟。理论上这种方式精度最高但开发周期长、标定参数多、计算速度感人用于整车级系统仿真多少有点杀鸡用牛刀。增程器项目的核心矛盾在于系统层面而不是燃烧细节。第三种就是折中的半物理仿真路线把动力总成内部的实时算法简化但把扭矩响应、转速变化、热惯量这些对整车性能有直接影响的部分保留下来。说到这不得不提整车仿真工具链里的一个经典选择——Cruise。这套工具在设计之初就是面向整车动力性经济性仿真自带发动机、电机、电池、传动系、驾驶员、控制逻辑元件库增程器项目最需要的正是这种“既有元件库支撑又允许自定义控制逻辑”的平台。用Cruise搭增程器模型发动机和发电机之间的机械连接用物理轴连起来电池、电机、整车轮端再通过电气和机械网络接上中间的控制策略通过Cruise自带的Function或者外部C代码接口实现整体架构清晰调试起来也方便。2.2 方案选型背后的几点考量做项目方案选型时我还真纠结过要不要用通用仿真平台搭一套自己的增程器模板。后来发现在Cruise里直接搭至少有几个绕不开的好处。第一是元件库已经经过大量项目验证电机效率map、电池内阻随温度变化这类底层数据模型不用自己造轮子改参数比改逻辑容易得多。第二是自带标准的驾驶循环和驾驶员模型全球工况库直接调用跑WLTC、RDE、CLTC都不用自己编速度曲线。第三是电磁和热耦合问题Cruise里的电机和电池模型能输出效率、热量和电压响应增程器仿真刚好需要这些接口来模拟“油门踩下去之后能量到底怎么流”。当然Cruise也不是没有缺点。拿到一个项目时最让人头疼的是版本兼容和第三方工具链集成。比如后期想用Python做全局优化算法或者联合Simulink跑精细控制策略就得确认接口版本的兼容性。我们项目组后来把能量管理策略放进了SimulinkCruise只负责物理模型和工况交互联合仿真接口一旦配好调试效率比在单一工具里写复杂逻辑高不少。这个决策也建议大家在做架构规划时提前想清楚别等模型搭到一半再改数据和接口迁移的代价相当大。2.3 增程器模型的整体拓扑有了工具之后先别急着拖元件把拓扑图画对。增程器整车仿真模型的拓扑说穿了也就是四条能量路径发动机输出机械功率通过机械连接送给发电机发电机把机械功率转成电功率送给直流母线直流母线上挂着电池和驱动逆变器逆变器再驱动驱动电机把电功率变回机械功率最终通过减速器到车轮。增程器子系统的边界通常画在直流母线之前也就是说发电机输出端的电功率特性是增程器模型的“输出量”整车上需要多少电、电池充放多少电是由母线上的能量管理策略决定的。在Cruise里搭拓扑的时候我习惯把一个增程器项目拆成三个子系统单独建模发动机子系统、发电子系统、增程器控制器。发动机子系统用Engine元件加一个简单的Map-Based扭矩模型输入油门踏板信号和当前转速输出扭矩、油耗和热状态发电子系统用ElectricMachine元件效率map直接填发电机实测数据控制器是灵魂决定发动机当前该不该启动、目标功率是多少、实际转速应该落在哪一条曲线上。这里有个容易被忽略的细节发动机和发电机之间的转速传递比。增程器通常采用直连结构即发动机曲轴与发电机转子刚性连接转速比为1:1。有些项目为了发电机的效率分布会加入齿轮增速机构。一旦有速比扭矩和转速的换算关系就得在模型中体现清楚别让仿真里看到的发动机工作点和台架标定对不上。这种错误我见过好几次一通排查下来原因是机械连接部件的速比参数填反了导致发动机跑在异常转速区间油耗高得离谱。3. 控制策略和关键参数电控逻辑是灵魂3.1 能量管理策略的三条主流路线增程器模型的成败一半看物理模型精度一半看控制策略。目前主流的能量管理策略无外乎三种。恒温器式是最经典的。发动机启动后以固定功率发电直到电池SOC充到某个上限才停机电池SOC掉到下限发动机再启动。这种策略最大的好处是控制逻辑简单、发动机大部分时间工作在单一固定工作点可以在标定时将油耗和排放调到最优NVH也容易控制。但缺点同样明显电池会频繁经历大电流充放对电池寿命不友好而且增程器以固定功率和整车需求功率之间的差值全由电池来“兜底”SOC波动幅度比较大。功率跟随式是另一条思路。增程器输出功率跟随整车需求功率变化需求大时多发需求小时少发。典型实现是让发动机目标功率等于当前整车需求功率减去一个SOC修正项SOC偏低时主动多发一部分给电池充电SOC偏高时少发。这种策略电池充放电深度小系统效率理论上更高一些。但问题也很实际——发动机工作点频繁变动动态响应曲线一旦跟不上功率缺口就得让电池顶着加上发动机经常跑在低负荷低效率区综合油耗不一定比恒温器式好到哪里去。第三种是混合式也是目前增程项目用得最多的工程折中。把整车需求功率分成几个区间需求功率低于某个阈值时采用恒温器逻辑按固定功率发电需求功率高过阈值后切换成功率跟随模式让发动机发电功率跟着需求走。低速城市工况发动机不频繁起停高速工况增程器直接向驱动系统供能减少能量二次转换的损耗。从我接触的项目经验看混合式在CLTC和WLTC工况下都能取得不错的油耗表现而且实现复杂度依然可以控制在工程可接受范围内。3.2 混合策略里的几个关键参数不管选哪种策略有几个参数的标定直接关系到仿真结果“像不像实话”。首先是SOC滞环阈值。恒温器逻辑不能设一个固定SOC点作为启停阈值否则在阈值附近轻微波动时发动机会出现频繁起停NVH和油耗都会恶化。工程上通常的做法是设上下双阈值比如SOC降到20%启动增程器充到24%后停机。这4%的滞环区间看起来不起眼但对系统稳定性影响极大。仿真里测试时SOC振荡周期和真实台架上启动频率可以直接对应起来参数合理性一目了然。其次是发动机启动功率的冗量设计。增程器启动发电之后目标电功率不能完全等于整车当前需求功率需要留一个冗余量给电池充电或者应对突发功率需求。这个冗余量的标定通常和动力总成设计目标挂钩——想要加速工况电池不亏电冗余就得大一点目标把油耗做到极限冗余就要收敛。仿真里翻SOC曲线时重点关注的是工况末段的SOC回位情况如果一次CLTC循环跑完SOC从20%掉到15%说明功率冗余设计不足或启动阈值偏低。再有就是发动机的工作点选取。恒温器模式下发动机固定工作点选在哪是一张效率map上“优中选优”的问题。先看发动机万有特性图把BSFC等值线和发电机效率map叠在一起找出综合效率最优的转速/扭矩组合。这里需要用“油电折算”的思路——发动机输出效率乘以发电机效率才是真正的系统效率不能只盯着发动机自己最省油的点。省油点落在高转速区域但发电机在那个转速段效率低整体算下来反而不划算。示意的做法在发动机油耗map上找到每组转速下的最低BSFC点连成最低油耗包络线再沿着这条线叠加发电机效率map寻找折算后的油耗最低点。3.3 几个容易踩坑的参数初始化实际建模仿真时我发现有几个参数如果不提前想清楚等到模型联调时会非常痛苦。发动机转动惯量必须真实。这个参数直接决定增程器启动和转速变化的动态响应快慢。某项目里因为偷懒用了默认值油耗仿真倒没太大偏差但看发动机转速跟随曲线实际加速时转速爬升速度明显偏快一度让我怀疑是不是控制参数调过头了。后来查资料才对上问题就出在转动惯量偏小。请注意这个参数不是拍脑袋填的有条件就让台架提供测量值或者从发动机供应商的设计文档里找实测折算值。发电机的高效区分布同理。很多电机map数据表横轴转速、纵轴扭矩填的是外特性边界内的数据。问题是增程器发电工况里发电机工作区域往往集中在某个转速区间而外特性边界并不代表高效率区间边界。要专门把电机效率map中的高效区比如效率大于90%的区域在模型中单独做一层可视化。如果发现预设的发动机工作点落在电机效率的“洼地”就要考虑调整策略或换配比方案。还有一个常被忽略的点是附件负载。增程器工作时发动机的机械功率一部分还要带动水泵、空调压缩机、真空泵等附件。仿真模型里如果不把附件功耗折算进去油耗结果偏低个5%到8%非常正常。某次台架和仿真对不上排查到最后就是附件负载模型没加整车功耗在仿真里缺了一块。在这件事之后我一律把附件负载做成长度可调的“基础功耗表”随工况开启或关闭。4. 实操记录从零搭起一个能跑的增程器模型4.1 建模前准备输入数据清单动手在Cruise里拖元件之前先确保数据包是完整的。缺数据的模型带着焦躁情绪搭出来后面全是返工的坑。我习惯准备一张输入数据检查表至少在三个层面做确认。整车层面整备质量、风阻系数、迎风面积、车轮滚动半径、主减速比、传动效率、目标工况循环CLTC/WLTC/NEDC任选其一或全要。这些数据和燃油车仿真几乎同源直接沿用整车项目已有参数即可。电池层面电池容量kWh、额定电压、SOC-OCV曲线、内阻随温度和SOC变化的二维map、充电和放电功率限制曲线。增程器层面发动机排量、外特性曲线、万有特性Map等油耗线数据、怠速转速、最高转速、转动惯量发电机额定功率、峰值功率、连续功率、效率Map、扭矩响应延迟模型如果有实测数据增程器控制策略逻辑框图或至少是策略需求描述文档。这些数据看起来多但每一样后面都有对应的坑。例如电池内阻map如果只给了常温数据低温工况下SOC波动会比常温大很多如果你恰好用常温内阻跑低温循环SOC曲线的异常就会让你误以为是控制策略的问题浪费时间在逻辑上找茬。类似这样的“数据陷阱”务必在建模前列个清单逐项打勾。4.2 在Cruise里搭建增程器子系统的步骤从头开始搭的话我的习惯是从简单到复杂先把物理链路搭通再加控制逻辑。第一步新建整车项目拖入Vehicle、驾驶员、工况、车轮、制动器等基本元件。整车参数按输入数据填入这一步可以借用同平台燃油车模型做基线省去部分重复配置。第二步拖入发动机元件设置排量、外特性曲线、万有特性Map、惯量。发动机的扭矩输出端连接到发电机机械输入端。这里要注意连接的方向性在Cruise里机械连接具体用哪种连接元件直线输出和齿轮副的输出含义不同接错了模型会在第一个计算步就报错。第三步拖入电机元件并设置为发电机模式。电机的效率Map方向和输出类型要选择“发电”对应的象限扭矩和转速的符号约定要和发动机输出方向一致否则会出现负功率叠加的问题。第四步在电机输出端接电气负载——一个DC/DC转换器或直接连到电池端。增程器架构里发电机输出通常不能直接驱动逆变器中间有一个高压母线电容和DC/DC环节。Cruise元件库里既有DC/DC也有母线元件如果只做系统级仿真也可以简化为一个电压固定的节点但需要在模型注释里记录这是简化处理。第五步搭建整车的驱动链路。电池的正负极端子接到逆变器直流侧逆变器交流侧接驱动电机。这里电池和增程器是并联在同一个直流母线上的两者的电压平台必须匹配另外电池模型里的初始SOC设置成多少决定了第一个工况段增程器会不会立即启动。第六步加入增程器控制器。这里我会用Cruise自带的Function元件编写控制逻辑语言风格和C差不多。控制器输入是电池SOC、整车需求功率从驾驶员和加速踏板信号中取得、发动机当前转速输出是发动机目标扭矩、发动机启停指令、发电机目标功率。初始调试阶段先把启停逻辑写死SOC低于20%启动高于24%停机发电机恒定输出某个固定功率。等模型能稳定跑完一个工况循环之后再迭代到混合策略。由于每个Cruise版本在操作细节上略有差异这里不贴具体菜单路径但把搭建顺序和连接关系理清楚任何熟悉该工具界面的工程师都能顺着这个逻辑把模型搭出来。4.3 控制策略写入的一项实用技巧增程器控制逻辑的代码量其实不大但工程陷阱依然存在。拿发动机启停指令来说控制器的启停判断不能直接以SOC的瞬时值为准建议加一个“延时滤波”模块。具体做法是维护一个时间窗口比如连续3秒内SOC低于20%才置启动标志连续3秒内SOC高于24%才置停止标志。这个小小的滤波逻辑能让增程器避开很多因SOC测量噪声和工况瞬态波动引发的假触发。实际做下来加了延时滤波之后一个CLTC工况里增程器的启停次数能下降30%左右律动更符合台架标定期望。在控制器里还需要对发动机转速做一个“软性约束”。目标转速不是直接被控而是通过设定一个斜坡变化率来接近目标值比如每分钟最大变化500转这样能模拟真实发动机转速爬坡过程的响应延迟。仿真跑起来之后你会看到转速曲线带着明显的滞后感这才是真实增程器应有的表现。如果转速曲线瞬间跳变控制参数多半是太理想化了。初始调参阶段可以使用如下公式估算目标功率的设定值增程器目标功率 整车需求功率 SOC修正项 附件功率整车需求功率由驾驶员模型根据工况速度循环计算得到直接取当前驱动电机总线需求功率即可。SOC修正项一般为比例系数乘以(SOC目标-SOC当前再乘以电池额定电压。SOC目标通常取设定区间的中值例如区间20%~24%目标中值22%。附件功率按车辆电气附件总功率经验值估算通常取1.5~3kW包含水泵、风扇、灯光、娱乐系统等折算后取值。这个公式本身不复杂但要提醒一点SOC修正项的系数K不能一味调大否则增程器转速会跟着SOC振荡反复波动反而加剧系统的不稳定。我的经验是从小往大调每次增加0.5倍观察SOC曲线的收敛情况直至找到既不过冲又不拖沓的区间。4.4 工况验证与结果后处理模型搭通之后第一次跑工况别急着看油耗先盯着三个指标SOC曲线是否在合理区间内平稳波动增程器的启停标志是否与SOC阈值对应发动机工作点是否落在目标工作区间内。SOC曲线如果一路向下说明增程器发电能力低于整车消耗要么是启动阈值太低要么是目标功率不足。SOC曲线如果锯齿状剧烈波动大概率是启停逻辑没有加延时滤波或者电池内阻数据异常导致电压波动大。工作点异常时去核对发动机的外特性信息和发电机的效率Map方向这两个参数在建模过程中容易填反。跑通一轮之后再把结果导出成CSV用Python脚本算一下平均油耗、电量变化量和等效油耗。等效油耗的计算方式通常是把电量净变化折算成燃油消耗公式是等效油耗 实际油耗 (电量变化能量 / 电池比能量) * 折算系数。这个折算系数在行业内争议不大但不同项目的取值习惯略有差别建议在报告里明确写出使用值并保留原始数据以便复算。5. 头疼时刻常见问题与排查实录5.1 高效区偏移导致油耗仿真异常有一次我在一个模拟项目里发现油耗仿真结果比台架实测高到接近9%。数据对了一遍又一遍最后问题出在发电机效率Map的表格数据上——供应商给的表格转速单位是rpm而模型内部默认单位是rad/s。换算差了一个系数导致模拟时发电机效率比真实值低了几个百分点发动机为了满足同样的发电功率只能多喷油。这种单位制问题在Cruise里特别容易埋雷因为元件的物理量单位可以在全局设置里调整一旦某个参数的输入习惯和全局设置不一致查出来的工作量非常大。提示接手别人的模型时先检查一遍全局单位制设置和关键元件的单位选择是不是一致。尤其是转速、扭矩、电压和电流这四个物理量单位填错不会报错只会让你的结果在不知不觉中偏离。5.2 SOC振荡导致增程器频繁启停某次仿真中我把SOC启动阈值设为20%停止阈值设为24%结果发现一个循环内增程器启停了七八次时间分布毫无规律。排查下来的直接原因有两个一是SOC反馈信号没有滤波SOC量测值在22%这个临界点附近抖动二是我启停逻辑没有加延时。加了3秒延时滤波之后整个系统的启停频率迅速降了下来工况末SOC也稳定在了23%附近。后来同事那边又遇到类似问题还多查出一个原因——电池内阻map在低温段数据是外推的导致SOC估算漂移。所以SOC振荡问题一半靠逻辑滤波解决一半靠输入数据准确性兜底。5.3 仿真发散或计算卡死这是增程器模型调试时很容易遇到的“劝退”问题。仿真跑到某个加速工况转速和扭矩曲线突然发散数值直接冲上天随后Crash退出。大多数情况下问题出在控制器和被控对象之间的响应时序不匹配。发动机的扭矩响应和转速变化是一个带延迟的反馈环节如果控制器每毫秒计算一次而发动机模型内部的响应时间常数设置成0.01秒两者之间就存在数值刚性问题。简单做法是把仿真步长调小比如从默认10ms改为1ms再试如果步长调小能缓解但不彻底就在控制器输出加一个一阶低通滤波把扭矩指令的突变斜率限制住。低通滤波时间常数从0.2s开始试一点一点加直到系统收敛。实话说增程器仿真跑到发散80%以上是控制器输出过于激进导致的和物理模型本身的关系反而不大。5.4 仿真与实车数据的经典落差一套增程器模型做完标定上实车验证时发现WLTC油耗比仿真高了不少这种落差几乎每个项目都会遇到。拉开差距的大头主要是三个一是附件功耗仿真里如果按恒定2kW带实车上空调一开直接奔着4kW去了二是发动机暖机阶段油耗差异冷机状态下发动机摩擦损耗大、燃烧效率低很多模型用的万有特性Map是热机数据冷启动阶段误差自然积累三是动力系统热管理电池高温限功率和发动机过热降扭在纯仿真模型里很难完整模拟。针对这种落差工程上常见的修正是给模型加“冷启动修正系数”——在暖机阶段给油耗map乘一个从1.1递减到1.0的修正因子时间常数大约3到5分钟。这不是一个严谨的物理公式但能让趋势预测准上不少。6. 几个让我少走弯路的实操心得第一控制逻辑从简单开始再逐步加复杂。别一上来就写一个多目标优化的能量管理算法先把恒温器策略跑通了把启停逻辑、SOC窗口、目标功率调节这一串链路调顺再加功率跟随最后才谈混合策略和优化算法。复杂策略里的问题往往是被简单策略遮盖住的低级错误放大了十倍的结果。第二仿真报告一定要记录下每一版模型改了什么、参数从多少调到多少、对应油耗和SOC结果变化了多少。增程器模型的迭代次数非常多调了发动机目标工作点又会连带影响SOC曲线和启停频率如果没有版本记录某次调优万一效果变差你根本不知道要回退到哪一版。这一点我吃过亏某次调参后油耗亮眼但SOC崩了想退回上一版结果发现上次调参时的原始文件已经被覆盖了只能凭记忆从头再来。第三留时间和台架数据做对标模型不是跑通就算完。仿真的价值在于预测预测的底气来自与实测数据的对齐。至少做一次“仿真预测油耗”和“台架实测油耗”的对比误差控制在3%以内模型才有资格用于后续策略开发。不要嫌实测数据难求哪怕是供应商给的台架数据、论文里的公开数据都行对标的过程本身就是对模型的一次全面体检。最后多说一句增程器仿真这个活儿辛酸归辛酸但越做越觉得有意思。发动机、发电机、电池、整车四个原本各自独立的物理世界因为一套控制策略在数学层面被连接在了一起。深夜看着SOC曲线和转速曲线逐渐收敛到目标区间那种踏实感和白天开会时被各方需求拉扯的感觉完全两码事。模型跑通的那一刻你会觉得中间商这个角色还真没白当。