☰
增程器Cruise仿真模型搭建:控制策略与参数标定实践
2026/10/16 7:46:17 网站建设 项目流程

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跑精细控制策略,就得确认接口版本的兼容性。我们项目组后来把能量管理策略放进了Simulink,Cruise只负责物理模型和工况交互,联合仿真接口一旦配好,调试效率比在单一工具里写复杂逻辑高不少。这个决策也建议大家在做架构规划时提前想清楚,别等模型搭到一半再改,数据和接口迁移的代价相当大。

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曲线和转速曲线逐渐收敛到目标区间,那种踏实感,和白天开会时被各方需求拉扯的感觉完全两码事。模型跑通的那一刻,你会觉得中间商这个角色,还真没白当。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询