做整车动力经济性仿真的人应该都有这个感觉:NEDC工况用了太多年,现在公告认证、能耗测试早就换成了CLTC和WLTP,但很多教程、项目模板里还是NEDC一套走天下。结果就是仿真算出来的电耗、续航和实际公告数据对不上,因为给模型输入的“驾驶剧本”根本就不是评审单位认可的那个版本。AVL Cruise作为整车性能仿真领域的主力工具,工况文件导入这步如果卡了壳,后面模型建得再精细都是白搭。
这篇文章我就把CLTC、WLTC这类最新工况文件导入AVL Cruise的完整流程讲透,包括文件格式怎么处理、导入参数怎么填、导入之后怎么确认数据没出问题,以及我这些年踩过的一堆坑。文末附带的资源包里有整理好的CLTC、CLTC-P、NEDC、WLTC分段工况等txt文件,下载下来就能直接练手,不用自己到处扒数据。
1. 先搞清楚工况文件里到底装了什么
1.1 工况不是一张图,而是一串“时间-速度”数据
很多人刚接触Cruise时,以为工况就是个曲线图片,导入就是把图贴进去。其实完全不是。工况文件的本质是一张两列的数据表:第一列是时间,单位秒;第二列是对应时刻的车速,单位可能是km/h也可能是m/s。只要有了这两列,软件就能还原出完整的速度-时间曲线,并进一步计算行驶距离、加速度、功率需求、能耗这些指标。
这个道理和写剧本一模一样。名字好听没用,脚本里每一秒演员走到哪、做多快,才是真正决定拍摄周期和成本的东西。工况文件就是整车的“驾驶剧本”,整车控制器、电机、发动机、变速箱都在按这个剧本执行循环。
CLTC全称China Light-duty Vehicle Test Cycle,即中国轻型汽车行驶工况。它总时长1800秒,分成低速段674秒、中速段693秒、高速段433秒,覆盖了城市拥堵、郊区通畅和高速巡航三种典型场景。WLTC是联合国WP.29体系下的全球统一测试循环,按功率质量比分成Class 1、2、3三个等级,乘用车默认用Class 3,同样1800秒,但各速度区间的大小和分布和CLTC差别非常大。
1.2 一张表看懂NEDC、CLTC、WLTP的核心差别
我在给同事做培训时,习惯用一张表格把三个工况的硬指标摆出来,大家一眼就明白为什么NEDC“已经过时了”。
| 指标 | NEDC | CLTC | WLTC Class 3 |
|---|---|---|---|
| 总时长(s) | 1180 | 1800 | 1800 |
| 总里程(km) | 11.007 | 14.48 | 23.266 |
| 平均车速(km/h) | 33.6 | 28.96 | 46.5 |
| 最高车速(km/h) | 120 | 114 | 131.3 |
| 低速段比例 | 高,且匀速长 | 中,拥堵多 | 较低,偏高速 |
| 最大加减速度 | 小,0.8~1.0 m/s² | 大,1.0~1.5 m/s² | 大,1.5 m/s²以上 |
| 数据来源 | 欧洲80年代理论推导 | 中国41城市实车数据 | 全球真实驾驶统计 |
为什么现在要告别NEDC?因为它的加减速太规律、太理想,怠速时间占比高但车速平稳,和真实驾驶完全脱节。比如NEDC的城市段基本是匀速巡航和固定加速度的阶梯组合,连超车、等红灯这种真实场景都没模拟,实测油耗电耗和它算出来的差距能到30%以上。CLTC则不同,它采集了中国31个省会城市和若干典型城市的实车数据,覆盖了乘用车、轻型货车等多种车型,里面包含了大量低速跟车、频繁起停的中低速片段,更贴近中国用户的实际体验。
1.3 为什么尤其要关注CLTC
CLTC现在已经是国内轻型车油耗、电耗公告测试的基础工况。做国内项目的,最终仿真结果都得落到这一套工况上来评审。所以如果你的Cruise模型里还是只有NEDC,那么算出的续航、百公里电耗基本不具备对外说服力。提前把CLTC文件导入并做成标准流程,后续所有车型项目都能直接复用,省下来的时间不是一星半点。
2. 动手前先统一格式:Cruise能认什么样的文件
2.1 文件后缀不重要,列格式才重要
我之前遇到过不少同学,下载到一个.xlsx格式的CLTC数据表,觉得“Excel格式更高级”,结果导入Cruise时各种报错。实际上,Cruise自带的导入功能对ASCII文本文件的兼容性最好,你完全不需要把数据放进Excel里再做二次处理。推荐的做法是:把数据整理成纯文本的.txt或者.csv文件,里面就是两列数据,列与列之间用Tab或逗号分隔。
有个细节值得注意:第一行最好直接是数据,不要放“Time Speed”这种表头。Cruise导入时有专门的选项让你配置“跳过前几行”,但如果你在TXT里放了表头,又在导入时选了“第一行是表头”,很容易把表头当成数据读进去,生成一条怪异的曲线。我个人的习惯是,数据文件严格遵守“纯数据”格式,第一行就是第0秒的数据,任何备注、说明、单位信息都不写进去。
2.2 单位陷阱:km/h还是m/s,千万别搞反
单位是导入过程中最阴的坑。CLTC和WLTC的原始数据通常以km/h为单位,但Cruise在导入对话框里默认显示的单位可能是m/s。如果你不仔细看,把单位选成m/s,那导入后的车速会直接变成原来的3.6倍,曲线形状看着没问题,但车速峰值变成了410km/h,仿真结果直接爆炸。
反过来,如果原始数据是m/s,你在导入时选了km/h,那所有速度都会缩水成原来的1/3.6,整辆车看起来就像一直在蠕行。怎么避免?两个办法:一是导入前先看一眼原始文件里车速的数量级,如果第二列数值在0到140之间,大概率是km/h;如果数值在0到40之间,大概率是m/s。二是在导入对话框的预览区域,确认最大车速是否在“100-140km/h”这个合理区间内,出现400以上的值就一定说明单位选错了。
2.3 空行和多余列是报错元凶
CLTC官方发布的数据文件,一般除了时间列和速度列,后面还会带一列“挡位建议”或“统计标记”,这些多余列在导入时必须明确忽略,否则Cruise会尝试把第三列也当成物理量读进来。处理方式很简单:在导入配置里只勾选需要的时间列和速度列索引,不勾选其他列。另外,文件末尾不要留空行,尤其是最后一组数据后面不能多一个回车换行形成的空白行,某些版本的Cruise会把这个空行解析成一段零速度数据,导致工况末尾多出1秒或者更长的时间。
3. 一步步走完导入全流程:从双击文件到赛道可见
3.1 在Cruise中创建和导入Course
AVL Cruise界面里,左侧项目树中有一个“Course”文件夹,这就是存放所有驾驶工况的地方。导入操作的入口是:在Course文件夹上点击右键,选择“Import Course”或“New Course”,然后在弹出的窗口中选择你的txt文件。
选择文件后,Cruise会弹出导入配置对话框,这里面有几项必须逐项确认。
第一项是进程定义,也就是告诉软件这个文件里每一列是什么物理量。标准情况是新增一列Time列,再新增一列Speed列。第二项是分隔符设置,Tab分隔就选Tab,逗号分隔就选Comma。第三项是跳过行数,如果你文件第一行开始就是数据,这里填0;如果前面有表头,填对应的行数。第四项是单位设置,这里必须检查清楚,km/h的选km/h,m/s的选m/s。
配置完成后,点击OK,Course文件夹里会出现一个带名称的工况文件。双击它可以打开一个数据浏览窗口,里面能看到速度-时间曲线和规格摘要。
3.2 导入参数怎么填才不出错
这里我给出一个经过多次验证的标准配置,Directly对号入座的用户基本不会翻车:
| 配置项 | 推荐设置 | 说明 |
|---|---|---|
| 文件格式 | ASCII Text | 兼容性最好的格式 |
| 分隔符 | Tab | 比逗号稳妥,避免数值字段内部出现逗号 |
| 跳过行数 | 0或表头行数 | 保持纯数据时填0 |
| 时间列 | 第1列 | 单位固定为s |
| 速度列 | 第2列 | 单位根据原始文件选择km/h或m/s |
| 其他列 | 不选择 | 不要勾选任何附加列 |
| 插值选项 | 保持默认 | 如果数据是固定1秒步长,无须额外处理 |
3.3 导入后如何验证曲线没变“形”
导入后一定不要直接拿去跑仿真,先做三步验证。
第一步看总时长。CLTC应该是1800秒,WLTC Class 3应该是1800秒,NEDC应该是1180秒。如果时间不匹配,多半是末尾多出了空行数据或导入时选了多余的行。
第二步看最高车速。CLTC最高车速114km/h,WLTC最高131.3km/h,NEDC最高120km/h。如果你的曲线峰值明显偏离这个范围,基本就是单位选错或者源文件本身有误。
第三步看曲线形状。CLTC的曲线有非常明显的三段式特征:前段低速区域密集起伏,中段速度抬升,后段有一段10秒以上的高速巡航,再到急速减速。WLTC的高速段则出现在最后一段,会出现一个非常高的尖峰然后快速刹停。如果曲线看起来“过于平滑”,或者所有加速都是同一条斜率,那很可能你导入的其实是旧版NEDC数据。
4. 不只是CLTC:WLTC分段、多循环、带坡度工况怎么做
4.1 如何从完整WLTC中拆出低、中、高、超高四段
WLTC Class 3总时长1800秒,内部按时间可以分成四段:低速段0到589秒,中速段589到1022秒,高速段1022到1477秒,超高速段1477到1800秒。有些项目需要单独跑某一段,比如只验证城市低速工况的能耗,这时候就需要把完整WLTC文件拆分出来。
拆分方法很简单:在文本编辑器里按对应时间区间截取数据,保证第一列时间从0开始重新计时即可。注意不要保留原始的时间戳,比如你在1022秒处截取高速段,那么这一列时间要改写成0、1、2……433,而不是保留1022、1023这些数值,否则Cruise会自动把整段工况的时间轴往后移,导致计算结果里出现一大段“空窗期”。
4.2 连续多循环和等速工况怎么搭
实际项目里经常要跑“连续循环”和“等速工况”。比如纯电续航测试,会要求按CLTC连续循环直到截止条件;油耗测试有时需要跑120km/h等速。连续CLTC的处理方式有两种:一种是在Cycle Selector组件里把同一个Course引用多次,设置循环次数为N;另一种是预先在外部把多段CLTC拼接成一个长文件再导入。两者各有优缺点,在Cycle Selector里做循环更灵活,不用频繁改文件;预先拼接则更方便做后处理,因为整个结果都在一条连续曲线上。
我个人更推荐“在Cycle Selector里配置次数”,这样后期想改成跑2个循环或4个循环,只需要改一个数字,不需要重新生成文件。等速工况就简单了,自己用记事本生成一个两列文件,时间从0到任意值,速度恒定为目标车速,导入方式和CLTC完全一样。
4.3 带坡度工况的导入与设置
CLTC、WLTC本身是平路速度工况,不包含道路坡度。但有些项目要做爬坡性能或山区道路能耗仿真,这就需要额外的坡度工况文件。带坡度工况的数据通常有两种组织方式:一种是时间-速度-坡度三列;另一种是距离-坡度两列,后者也叫“路径工况”或“Profile”。
在Cruise中处理时,导入Course的配置里需要新增一列Gradient,并指定它对应于文件中的第三列。如果导入的是距离-坡度文件,就要在Course属性中把“Course Type”设置成“Distance dependent”,否则软件会把第二列数据误解为速度,导致完全错误的仿真。这一点很多人踩坑,因为默认的Course类型是“Time dependent”,不做修改时软件根本不会把距离-坡度解析成你期望的路径。
5. 我踩过的坑:常见报错与排查实录
5.1 常见问题速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 导入后曲线变成锯齿状 | 数据点间隔不均匀或文件里有非法字符 | 重新导出纯数据,确保时间步长固定为1秒或0.1秒 |
| 导入时报错“No Data Selected” | 跳过的行数设置错误,把所有数据都当成了表头 | 减少跳过行数,确保至少留一行数据 |
| 曲线峰值超过400 km/h | 速度单位选成了m/s但实际是km/h,或反过来 | 回到单位配置里改成和文件一致的单位 |
| 工况时长比预期多出几秒 | 文件末尾有空行,被解析成额外0速数据 | 删除文件末尾空行,重新导入 |
| 导入后里程为0 | 没有为速度列指定物理量类型 | 在导入配置中勾选Speed列 |
| 第三列被当成速度导入 | 没有忽略多余的列 | 在导入配置中只选择时间列和速度列 |
5.2 几组需要重点关注的排查思路
先说第一个高频问题:导入后曲线是锯齿状。这种情况通常出现在文件是从PDF或网页里复制出来的场景,数据点之间的时间步长不是固定的整数秒,有的地方是0.1秒,有的地方是0.15秒,中间还混着空格和特殊字符。Cruise的导入器按固定步长解析数据,如果你的源数据不是严格固定步长,它就会自动插值,插值结果在曲线图上就表现为锯齿。解决办法是先用Python或Excel把数据重采样成固定1秒间隔,再导入。
第二个高频问题是“导入时报No Data Selected”。这个报错非常迷惑,文件明明有数据,但软件就是说没选中数据。排查方向是看“跳过行数”是不是填大了。一旦跳过行数比整个文件的行数还大,软件自然找不到任何数据行。把它改成0,重新检查预览区,一般就能解决。
第三个高频问题,也是很多人最容易忽略的:导入后工况时长正确、速度值正确,但总里程始终偏小。这通常不是导入问题,而是Cruise计算里程时采用了“车速×时间”的积分近似,如果车速值是以km/h为单位,而时间轴的单位设置为分钟,就会导致里程偏差巨大。确认时间轴单位是秒而不是分钟,基本可以消除这个误差。
5.3 资源包使用与扩展建议
配套的这个资源包,我按统一格式把常用工况文件都整理了一遍,每个文件都是两列纯净数据,Tab分隔,第一列时间(s),第二列速度(km/h),第一行就是第0秒的数据,没有任何表头。资源包内容如下:
- CLTC.txt:中国轻型汽车行驶工况,1800秒
- CLTC_P.txt:中国轻型货车工况版本,1700秒左右
- NEDC.txt:经典老工况,1180秒
- WLTC_Class3_Full.txt:完整WLTC Class 3,1800秒
- WLTC_Class3_Low.txt、WLTC_Class3_Medium.txt、WLTC_Class3_High.txt、WLTC_Class3_ExtraHigh.txt:WLTC四段拆分文件
- 120kmh_const.txt:120km/h等速工况,用于高速续航仿真
- 40kmh_const.txt:40km/h等速工况,用于城市低速场景
拿到文件后,不要直接一股脑全导入,按你的项目需求挑一个导入走通流程,然后把Course文件夹里多余的删掉。建议第一次就用CLTC.txt来练习,一是它是国内项目的基准工况,二是它曲线的三段式特征明显,导入成不成功一眼就能看出来。
导入完成后,可以在Cruise的Cycle Selector里把该Course设为当前循环,跑一次最简单的整车模型,对比一下仿真报告里的“Distance”和“Duration”。CLTC工况跑完,里程应接近14.48km,总时间1800秒。只要这两个数对上了,说明导入质量完全没问题。
我在实际项目里还养成了一个习惯:每次新建项目时,先把资源包里的CLTC、WLTC等标准工况统一导入一遍,保存成项目模板。这样后面无论做能耗计算、续航仿真还是动力性校核,都不用再临时去找工况文件,建个新项目就能直接开工。省下来的那些找数据、调格式的时间,足够多跑好几轮仿真了。