TMS BOOK · ACADEMY 讲义

虚拟标定:把标定动作前移到 MIL/SIL/HIL、自动寻优与回归标定

大纲的完整展开版——讲师授课蓝本 / 学员自学材料

K6-13 虚拟标定:把标定动作前移到 MIL/SIL/HIL、自动寻优与回归标定

课程代码 K6-13 · 板块 K 控制、软件与标定 / 标定与匹配 时长 约 4.0 小时(6 讲) 前置 K4-03 MIL/SIL/HIL 验证流程;K6-01 热管理标定流程与工具(INCA/CANape);J7-01 仿真—试验相关性验证(Correlation) 本讲义定位 讲师授课蓝本 / 学员自学讲义,是 K6-13 大纲的完整展开版


引言:把「能不能虚拟标」从一句形容词,改成表上的一格

一个热管理标定工程师的时间,大部分不花在改参数上,而花在等:等环境舱排期、等样车、等一轮降温工况实时地熬完、等结果整理出来再决定下一轮改什么。环境舱和实车样车是整条开发链上最贵也最稀缺的两样资源,而热管理的工况又天生慢——降温、暖机、冷启动这类过程的时间尺度由热惯性本身决定,一天能跑多少个点是有硬上限的。于是「把标定动作往前移,移到 MIL / SIL / HIL 上去做」,几乎是每个项目都会提出来的想法。

想法提出来之后,通常会立刻卡在一个看起来很自然、其实问错了的问题上:我们的模型够不够准,能不能拿来做虚拟标定?

这门课要做的第一件事,就是把这个问题换掉。

这里先说清读这门课的位置:它假定你已经完整走过至少一轮手工标定——知道一个阈值是怎么被一点点试出来的、知道一张 MAP 的格点值在台架上要花多少代价才能填满、也吃过「参数在台架上很好、上车就不对」的亏。有这层经验,你才会对下面两根钉子有直觉;没有这层经验,虚拟标定读起来会像一套自动化工具的说明书,而它其实是一套判定规则——工具是谁家的、脚本用什么语言写,都是可以换的;换不掉的是「哪些量允许在虚拟层里定值」这个判断。

钉子 A:它不是一个形容词,是一张表上的一格

「能不能虚拟标」不是一个关于模型精度的形容词,而是一个逐格判定。判据落在「标定量类型 × 在环层级」这一格上,只看两件事——

  1. 模型侧与台架侧的灵敏度在这一格上符号一致吗增益量级落在带内吗
  2. 这一格要读的那个物理量,虚拟层里到底存不存在

请注意这两条的形态:它们都不是「模型够不够好」这种整体评价,而是绑定在某一个标定量某一个在环层级的交叉点上的、可以逐格判真假的东西。同一版模型,在「压缩机转速 MAP × SIL」这一格上可能判到较宽松的一档,在「阈值与滞环 × SIL」那一格上却只能判「必须回实车验收」——不是因为模型在后一格上变差了,而是因为滞环要看的是真实传感器噪声,而虚拟传感器没有噪声,那个量在虚拟层里压根不存在。

⇒ 由这根钉子直接推出全课第一条可执行动作:拿到任何一句「这个量能不能在 SIL 上标」,⛔ 不要先答能或不能。先去查它落在分层能力表的哪一格,再把那一格的判据来源写出来——来源只能是两类之一:一条经济性结论(那笔账归 K4-03 MIL/SIL/HIL 验证流程K6-04 环境舱与整车热平衡标定,本课只承接其结论、⛔ 不重推),或一项必测残余(虚拟层里没有那个物理量)。写不出来源的格,等于没填。

这句话不是修辞。表上一个填得含糊的格,会一路传到第 5 讲算出来的压缩率里去,而那个压缩率是要交给环境舱那一侧去排计划的——含糊的代价最后由实车首测来付。所以本课把「判据来源」当成表的一部分,而不是表的注释:一张只有结论、没有来源的分层能力表,无法被任何人复核,也就无法被任何人反驳。

钉子 B:虚拟标定的产出是候选与初值,不是定版

第二根钉子专治另一种常见的落地方式:夜跑一周,寻优给出一版分数最高的参数集,于是它被当成结论直接往下走。

标定侧的出口判据只回答一个问题:这组参数值能不能作为初值放行。⛔ 它不回答「行为与需求规格一致吗」——那是验证侧的问题,归 K4-03 MIL/SIL/HIL 验证流程;⛔ 它也不回答「能不能进定版 Hex」。这两件事被合并,就是「虚拟标定做完了,实车上还是不对」这类故事最常见的开头。

⇒ 由这根钉子推出三条硬动作,全课反复回到它们:

  • ① 虚拟侧选出的最优候选,必须与基线一并送同一轮环境舱复测;⛔ 不许拿虚拟侧的排名当复测结论。同一轮、同一批边界条件下的对照,是把虚拟侧结论翻译成实车结论的唯一合法路径。
  • 压缩率是逐点标注做完之后算出来的结果,⛔ 不是先定一个指标再倒着凑标注。把拿不准的点默认标成「可虚拟筛选」,压缩率立刻好看,而风险全被推到实车首测那一天。
  • ③ 本课只向 K6-04 环境舱与整车热平衡标定 交两件东西——压缩后的矩阵每一点的标注依据;⛔ 本课不写放行签署,环境舱那一层的收口与放行仍归它。

反钉子:「虚拟标定得先把模型做准」——这句话会被反过来读

★ 这是本课最需要提前拆掉的一句话。「虚拟标定得先把模型做准」会被反过来读成「模型越准,就越能拿去做虚拟标定」,于是资源全押在提高绝对精度上。

原句成立的只有必要条件那一半:模型不准,谈不上虚拟标定。反过来读成充分条件就错了——本课的门槛判的不是绝对精度,判的是灵敏度的符号与增益量级,而这与绝对精度是两个互相独立的量。一个在所有工况点上绝对温差都合格的模型,完全可能在某一段上灵敏度增益量级明显偏低;一个稳态绝对偏差偏大的模型,也完全可能符号与增益都对。

读者读反之后会做错的第一个具体动作:拿到一份相关性验证全绿的被控对象模型,直接排一周夜跑开自动寻优,全程不做灵敏度符号一致性检查与增益量级检查。后果不是「结果差一点」,而是整组标定值被系统性带偏。本课案例里那一版模型,在高环温高负荷段用的是外插出来的换热关联式,「转速→蒸发温度」的灵敏度符号没错、增益量级明显偏低,寻优据此判定多提转速的收益很小,把转速往低压了一档。而这在相关性验证报告上完全看不出来,因为那份报告比的是绝对值,不是斜率。

会做错的第二个具体动作,是同一个误读的镜像:为一版「稳态绝对偏差偏大」的模型再花两周提精度,而它本来就够用来做筛选。寻优比的是候选之间的,只要符号与增益量级成立,它就能把候选排出正确的先后。⛔ 但射程要写死:这只支持排序与筛除;把这版模型的绝对读数直接当达温时间的验收值是另一回事,那要回到 J7-01 仿真—试验相关性验证(Correlation) 的口径去判——本课的门槛⛔ 不发放绝对值的通行证。

还有一个同源的镜像形态要一并点破:灵敏度算出来接近零时,很多人判「模型不合格」。⛔ 那多半落在平坦区、饱和区或限幅段上,正确结论是该点对这个标定量本来就不敏感、无需精标。把标定值被带偏量(本课统一记作 Δθ_bias)的发散当成不合格,会把本可前移的量白白退回台架——动作方向恰好做反。

这三个错误动作看起来方向各不相同——一个是冒进、一个是过度保守、一个是误判不合格——但根子是同一个:它们都在问「这个模型好不好」,而本课要的答案不在那条轴上。

⇒ 反钉子的自检句:问「这个模型准不准」永远得不到本课要的答案;要问的是「它在这个工况点上,对这个标定量的方向对不对、步长准不准」。

本课的射程:答什么、不答什么

这门课与它的邻居们贴得很近,边界必须一开始就划清楚。

还有一条贯穿全课的口径要先说明白:本课几乎不给数。增益量级带的带宽、扰动步长、虚实折扣量、切换次数(次/工况)上限与执行器累计动作次数(整车寿命内累计)上限、NVH 门限、压缩率目标——这些全是平台相关量或归别课判定的限值,本课交付的是判据的形式与反推路径,具体取值须由本项目实测标定。凡正文里出现的具体数字,都会当场标明「教学假设值、不对应任何平台、⛔ 禁止照抄取用」。看到「不给数」不要当成内容缺失——把一个没有依据的限值写进讲义,读者会把它当验收依据用,那才是真正的缺陷。

六讲怎么走

六讲是钉子 A 的六层,每一讲回答一个具体的问题:

回答的问题
第 1 讲 表长什么样——列=两条在环阶梯交叉,行=标定量类型再按规格维度细分,格=三档
第 2 讲 格里那两个判据怎么算——灵敏度符号一致性、增益量级带,以及逐工况点划出的置信工况区
第 3 讲 怎么让它每天夜里自己判一遍——批量注入与失败回退、序列编排、结果自动判读、标定侧出口判据
第 4 讲 哪些量根本不该交给寻优算法去判——不可交易项写硬约束,不写罚项
第 5 讲 哪些格永远填不满——必测残余,以及环境舱矩阵的逐点标注与压缩接口
第 6 讲 软件改一版之后,这张表哪几格作废了——失效判定、跨版本移植与作废

学完之后,你手里应该能拿出一整套可核对的东西:一张逐格写明判据来源的分层能力表、一份模型可标定性判定结论、一个把不可交易项写进硬约束的评分函数定义、一条能自己跑起来并给出三个出口的标定循环,以及一张附了标注依据的环境舱矩阵压缩表。它们互相咬合——任何一处含糊,都会在另一处露出来。这正是本课把「能不能虚拟标」从形容词改成逐格判定的意义所在。


第 1 讲 标定前移路线图与平台分层:每一层能不能在上面定参数值

「这个量能不能在 SIL 上标?」——这大概是虚拟标定推行过程中被问得最多的一句话,也是最不该直接回答的一句话。答「能」或「不能」都是在凭印象说话;正确的第一动作是去查它落在哪一格:横着看它属于哪一类标定量、按哪个规格维度看,竖着看它要在哪一层在环平台上定值,然后把这一格的判定档位与判据来源写出来。这一讲要交出的就是那张表——它的列怎么来、行怎么来、格里填什么、哪些格根本填不了。表填完之后,后面五讲才有共同的坐标:第 2 讲算格里的判据,第 3 讲把判据写进夜跑脚本,第 4 讲管寻优的评分函数,第 5 讲处理那些永远填不满的格,第 6 讲判软件改版之后哪几格作废。

1.1 先把三组撞名的符号钉死:本课只写 S_θ、Δθ_pert 与 Δθ_bias

这一节看起来像体例,其实是本课最便宜的一道防线。虚拟标定要同时引用仿真—试验确认那一侧的误差口径和敏感度分析那一侧的方法,两侧各自都有一套成熟记号,搬到一起就撞名了。撞名的后果不是看不懂,而是式子照样有解、量纲照样对,只有结论是反的

本课统一写法 指什么 单位 禁止的写法
S_θ = ∂y/∂θ 响应量 y 对标定量 θ 的灵敏度 响应量单位 / 标定量单位 ⛔ 不裸写 S
S_θ,sim / S_θ,test 同一个 S_θ 在模型侧台架侧各算一遍的两个值 同 S_θ ⛔ 不写成 S_sim / S_test(那两个记号会被读成「仿真读数/试验读数」)
Δθ_pert 算灵敏度时施加的扰动步长(输入) 标定量单位 ⛔ 不裸写 Δθ
Δθ_bias 由响应量偏差折算出的标定值被带偏量(输出,保号 标定量单位 ⛔ 不裸写 Δθ
E = y_sim − y_test 比较误差(仿真读数减试验读数);逐工况点取值时仍写 E,本课的「模型—台架偏差」就是它 响应量单位 ⛔ 不沿用 S / D 记号;⛔ 不另起 Δy
分辨率_θ 标定量的定点分辨率——定点实现之后该标定量还剩下的最小可分步长 标定量单位 ⛔ 不裸写「分辨率」
分辨率_meas 台架测量侧的可分辨量——信号链折算到输入端之后能分辨出的最小响应量变化(温度上的形态就是「可分辨温差」) 响应量单位 ⛔ 不裸写「分辨率」
分辨率_model 模型求解容差侧的可分辨量——求解器容差决定的最小可信响应量变化 响应量单位 ⛔ 不裸写「分辨率」
N_原矩阵 / N_实车残余 原工况矩阵点数 / 判为必须实车的点数 ⛔ 不裸写 N
m_i / m_i,target / m_i,scale 第 i 项工程指标的原始值 / 目标值 / 归一化尺度 各自带该指标的量纲,三者同量纲 ⛔ 不省下标
ŝ_i / w_i 第 i 项的无量纲评分分量 / 其权重 无量纲 ⛔ 不与 m_i 混用
η_compress 环境舱矩阵的压缩率 无量纲

三组撞名各自说明一下。

第一组是 S。仿真—试验相关性确认那一侧(口径归 J7-01 仿真—试验相关性验证(Correlation))的比较误差写成「仿真值减试验值」,其中的 S 指的是仿真读数,D 指试验读数,那是一个带温度或流量量纲的量;而本课的 S_θ 是一个斜率,量纲是响应量单位除以标定量单位。两者除了字母一样毫无关系。⇒ 本课引用那道确认判据时一律改写成 E = y_sim − y_test,全课 ⛔ 不出现裸写的 S,也 ⛔ 不沿用 S/D 这套记号。这是本课为避免撞名而定的统一写法,不是哪一份外部文件的既有约定。⚠ 由此还推出一条本课的书写纪律:两侧各算一遍的那两个灵敏度一律写 S_θ,sim 与 S_θ,test,⛔ 不许写成 S_sim / S_test——后者字面正好落回「仿真读数/试验读数」那一义,两者量纲一个是 K、一个是 K/标定量单位,撞上了照样有解、只有结论是反的。

第二组是 Δθ,这一组更危险。「扰动步长」与「被带偏量」这两件事同单位、又都长成「Δ 加标定量符号」的形状,很容易被写成同一个记号。但一个是输入、一个是输出:Δθ_pert 是我要施加多大的扰动才能把斜率量出来,Δθ_bias 是量完之后这个模型误差会把标定值带偏多少。前者取大了会跨过标定量的非线性拐点,量出来的斜率不是名义点上的斜率;后者大了说明这个工况点已经出了置信工况区,不能在这里定值。代错方向,两句话的工程动作恰好相反。⇒ 全课分列 Δθ_pert 与 Δθ_bias,⛔ 正文不出现裸写的 Δθ。⚠ 与它配套的还有一条符号(正负号)口径:Δθ_bias 由 E 折算而来,保号——第一条出区判据比的是它的绝对值 |Δθ_bias|,第二条出区判据要按它的正负选边(往上吃上限裕量、往下吃下限裕量,两侧裕量并不对称)。⛔ 不许在折算时把号丢掉。

第三组是「分辨率」,它在本课里是三个不同的量。分辨率_θ(标定量单位)是定点实现之后这个标定量还剩多少可分步长,它是第 2 讲判 Δθ_bias 出不出区要用的输入;②分辨率_meas(响应量单位)是台架测量侧能分辨出的最小响应量变化,第 2 讲用它定扰动步长的下界、第 3 讲用它反推稳态判据的阈值;③分辨率_model(响应量单位)是模型求解容差侧的同一件事。三者量纲不同、来源不同、用在不同的判据上,⇒ 全课一律带下标写,⛔ 正文不出现裸写的「分辨率」。

还有一条容易丢的:y 必须写明是哪一个测点上的哪一个量。响应面方法里写 y = f(x₁,…,x_k) 是抽象记法,本课的 y 一旦不落到具体测点,灵敏度的符号就无从核对——同一个转速指令,对蒸发器出风温度和对压缩机排气温度的灵敏度符号可以是相反的。

⚠ 这一节不涉及任何数值。Δθ_pert 与 Δθ_bias 的取值都是平台相关量,取法与边界在第 2 讲讲,具体值须按本项目实测标定。

1.2 同一台台架上跑两种作业:验证问「行为对不对」,标定问「这组值能不能放行」

在讲表之前,必须先把一条边界说清,否则这张表交出去会被用错。

同一台 HIL 台架上可以跑两种作业。验证作业问的是「这段软件的行为与需求规格一致吗」;标定作业问的是「这组参数值能不能作为初值放行」。两者的被测对象相同、激励序列可能一模一样、数据采集链路完全相同,唯独出口判据不同。这条边界不是本课立的,它归 K4-03 MIL/SIL/HIL 验证流程 那一侧的既有口径:两者的出口判据不放进同一张表。

为什么这条边界值得单独占一节?因为合表之后的误读是可判真假的:「验证通过」被读成「标定放行」,于是一组从未在实车或环境舱上确认过的参数值被当成了可以进定版的值。它之所以特别容易发生,是因为两份报告长得一模一样——同样的用例名、同样的通过/失败列、同样的时间戳。人只看列,不看那一列到底在判什么。

本课全程都要守住的一条钉子:虚拟标定的产出是候选与初值,不是定版。标定侧的出口判据只回答一个问题——这组参数值能不能作为初值放行;它 ⛔ 不回答「行为与需求规格一致吗」(那是验证侧的问题,归 K4-03 MIL/SIL/HIL 验证流程),也 ⛔ 不回答「能不能进定版 Hex」。

三个具体的误读要一并点破:

① 把本课讲成「K4-03 MIL/SIL/HIL 验证流程 的进阶」。不是进阶,是方向相反:那门课把在环阶梯当验证关卡用,问每一级测什么;本课把同一串阶梯当标定台架用,问每一级能不能在上面定参数值。方向不同,用同一串阶梯不代表是同一件事的深浅两层。

② 因为共用台架就共用排期表。验证作业与标定作业按作业类型分时段排,混排的结果是两边都拿不到完整窗口——排期与回归执行那一侧归 K4-08 控制软件回归验证:基线与激励库、回归范围裁剪、自动执行与失败分诊,本课只提醒这条不要顺手合并。

③ 把「不许合表」理解成「不许放在同一份报告里」。可以放在同一份报告里,甚至应该放在一起看;但两栏判据必须各自独立、各有自己的出口,一栏判不出结论时另一栏不得替它盖章。

1.3 表的列:两条在环阶梯是正交的两根轴,⛔ 不是一条链的两段

分层能力表的列,来自两条既有阶梯的并集并交叉成表

  • 一条按被测对象(控制器侧)有多真排:RCP / MIL / SIL / PIL / HIL;
  • 另一条按被控对象(环境与部件侧)有多真排:半实物 / 部件与系统台架 / 环境舱 / 实车路试。

这两条不是同一条链的两段,它们排的是两件不同的事。把它们首尾相接排成一条直线,是这一讲最容易犯的结构错——那样画出来只有一维,「更真」退化成一个单一刻度,而实际工作里最常出现的恰恰是两个维度不同步的格:真实 ECU 配纯虚拟被控对象(这正是典型的 HIL),原型控制器配真实整车(这正是 RCP)。压成一维之后,这两格会落到同一个位置上,判据就没法分开写;更要命的是,空格看不见了——而本讲要逐格判定的对象,正是那些空的和半空的格。

交叉之后,有两列特别容易被顺手删掉,这里各钉一下:

RCP 这一格:沿「虚拟程度由高到低」单调枚举,它会整格消失。它同时是最真的环境(在实车上跑)与最非量产的控制器(外挂原型硬件旁路量产 ECU),在任何一条单调链上都找不到位置。而它在三档里的归属其实是确定的:属于「只能虚拟筛选」的一个特例——在 RCP 上标出来的值只能当量产软件的标定初值,其参数不进量产描述文件的主线,值必须在量产软件与它自己的描述文件上重标(这条承接 K4-03 MIL/SIL/HIL 验证流程 的既有结论)。

PIL 这一格:因为「它不用来定值」就把这一列删掉,会让第 2 讲断了一个输入的核实环节。PIL 测的是目标芯片上的实现与执行时间,被控对象仍在 PC 侧 ⇒ 本课判它基本不承担定值职能。但它给出一件别处给不了的东西:在目标芯片上核实定点实现之后,这个标定量实际还剩多少分辨率_θ。⚠ 请注意这句话的性质:分辨率_θ 这个值本身不由本课产出——规格本体归 K6-10 标定量规格定义:轴点、插值/外插保护、上下限与不可标量、定点化标度归 K4-02 基于模型开发(MBD):Simulink 建模与代码生成,本课只用其结论(第 2 讲三处都照此写);PIL 这一列做的是核实:在目标芯片上跑出来的定点实现,是不是真的还剩那么多分辨率_θ。而这个量正是第 2 讲划置信工况区时要用的输入——判「被带偏量 Δθ_bias 是否超过分辨率_θ」。⇒ 删掉这一列,值仍然取得到,但没有任何一步会发现它与规格上写的对不上

还有一个方向性的错:⛔ 不要把被控对象侧那条阶梯当成控制器侧那条的延长段,于是把环境舱排在 HIL 之后、当成「更高级的 HIL」。环境舱和 HIL 不在同一根轴上:环境舱里的控制器可能是量产 ECU 也可能是原型件,HIL 里的被控对象是纯虚拟的——两者不是一前一后,是斜着错开的两格。

横轴按控制器侧有多真依次排 MIL、SIL、PIL、HIL、量产 ECU,纵轴按被控对象侧有多真依次排纯虚拟被控对象、半实物、部件与系统台架、环境舱、实车路试;网格里用实心方块标出四个常用落点,右上方用空心方块单独标出 RCP 并引线注明它在两条轴上一高一低;图下方左右并排一条被划掉的单向箭头链与一张正交网格作对照。本图为结构示意,不含任何数值与比例,不得据图取值。
图1 两条在环阶梯是正交的两根轴——该读出的是:它们排的不是同一件事,所以必须交叉成表而不是接成一条链;交叉之后哪些格是空的才看得见;而 RCP 在任何单调链上都没有位置,沿虚拟程度单调枚举必然把它整格漏掉。本图为结构示意,不含任何数值与比例,不得据图取值。

1.4 表的行是七类标定量,每一格要填的是两样东西

把正交网格上真实被占用的落点收拢,能力表在填写时收敛成五列:MIL / SIL / PIL / HIL / 半实物及以上。前四列是「纯虚拟被控对象」那一行上的四个落点,第五列把被控对象侧真起来的各层(半实物、部件与系统台架、环境舱、实车路试)合成一列——因为一旦离开纯虚拟被控对象,判据就不再由控制器侧那根轴主导了。⚠ 这一步收敛是本课为了让表能落地而做的,⛔ 它不是把两根轴合成一根:网格仍然在(1.3 那张图不作废),收敛只发生在「填表」这一层。

行取七类标定量:

  1. 阈值与滞环
  2. PID 与前馈增益
  3. 二维 MAP
  4. 传感器零点与增益修正
  5. 仲裁与降级类
  6. 时序类
  7. 诊断与保护判据类

前六类是热管理标定量的既有分类,归 K6-01 热管理标定流程与工具(INCA/CANape)第七行是本课补的,⛔ 它不是那六类之一,也不是任何标准的既有分类。为什么必须显式补上:前六类全是性能与控制类标定量,沿它们枚举,整张表看起来是完整的——每一类都有落点、每一类都填得出档位——而漏掉的那一类是整类不出现,不是「少了一条」。诊断与保护判据类的标定对象是「不该发生的事」:目标事件在正常工况数据里根本不出现,⇒ 无法扫点寻优。它的整定与复验方法学归 K5-07 诊断与保护阈值的整定、验证与复验本课只判它落在哪一层,⛔ 不给它的限值、⛔ 不给它的整定方法。顺带说清它在虚拟层的特殊性:故障是可以被注入的,所以这一行并非天然「必须回实车」;但能注入故障不等于能定门限——门限值仍然不能靠寻优得到。

每一格要填的是两样东西,不是一样:档位,加判据来源。

档位是三档,不是二档:

  • 可虚拟定值——值可以直接从虚拟层取,仍需入包络声明;
  • 只能虚拟筛选——缩范围、给初值,值仍须台架定;
  • 必须回实车验收

为什么三档而不是二档?两个理由。一是下游索取的就是三分法归属,二档表交出去在下游是不可用的。二是更实际的:落在中间那一档的格最多,二档表会把它们强行推向两端——推向「可虚拟定值」,就是把没确认过的值当成了定值;推向「必须回实车验收」,就是白白放弃了本来能压缩的台架时间。中间那一档不是含糊,它对应一个非常明确的下游动作:要排台架时间,但排的是缩小范围之后的那几点。

判据来源只有两类,填的时候必须二选一写清楚:

⛔ 表上不许留空格。没填的格 ⛔ 不得默认成「可虚拟定值」,也 ⛔ 不得默认成「必须回实车验收」。空格比错格更危险:错格至少会被人质疑,而默认值不会被任何一步检查覆盖,它会安安静静地一路流到第 5 讲——把拿不准的点默认成「可虚拟筛选」,压缩率就被算高了,而多出来的那部分风险全数推给了实车首测。

三个易错点:

① 把「只能虚拟筛选」写成「基本能虚拟定值」。听起来是同一个意思的两种说法,下游动作却完全不同:前者必须排台架时间,后者不排。措辞一软,台架时间就没人排了。

② 填了档位不填来源。后果有两个:换个人接手无法复核这一格判得对不对;更麻烦的是模型换版之后,无法判断这一格是否作废——那正是第 6 讲要做的事,而它做不了,因为当初那一格没写清凭什么这么判。

③ 用「这个量以前一直在台架标」当来源。那是历史惯例,不是判据。惯例可以当线索,但填进来源栏必须换成 (a) 或 (b) 中的一条。

⚠ 这张表有几行几列是确定的(七行五列),但各类标定量在本项目里各有多少个、各档最后落多少格,本课不给数——它随功能范围与软件设计而变,须按本项目的描述文件实际统计。

一张五列七行的骨架表:列为 MIL、SIL、PIL、HIL、半实物及以上,行为阈值与滞环、PID 与前馈增益、二维 MAP、传感器零点与增益修正、仲裁与降级类、时序类、诊断与保护判据类,第七行用不同底色并挂角标注明是本课补的一行;每格分上下两半,上半用三种图案区分三档、下半是判据来源栏;表右侧图例逐一说明三种图案,并单列一格纯白无图案样例作反例,表下方一条注记带写明判据来源只有两类。本图为结构骨架示意,格内不填结论、不含任何数值,不得据图取值。
图2 分层能力表的骨架——该读出的是:列是两条在环阶梯交叉之后的层、行是标定量类型;每一格要填的是档位与判据来源两样东西;档位是三档不是二档,中间那一档意味着仍要排台架时间;而空格是不允许存在的状态,它会直接改写后面算出来的压缩率。本图为结构骨架示意,格内不填结论、不含任何数值,不得据图取值。

1.5 同一张 MAP 不是一个判定单元:四个规格维度未必落在同一层

上一节的七行还不够细。行如果只到「二维 MAP」这一层就停下,会犯一个粒度上的错:把一整张 MAP 当成一个不可再分的判定单元。

⇒ 每一类标定量还要再按规格维度细分成四个格位(规格本体归 K6-10 标定量规格定义:轴点、插值/外插保护、上下限与不可标量):

  • 轴点
  • 插值与外插保护
  • 上下限
  • 不可标量

关键在于:同一张 MAP 的轴点定法与格点值定法,未必落在同一层。轴点的疏密是由被控量对该输入的灵敏度反推出来的——哪一段斜率陡就加密,哪一段平坦就放疏;这件事在虚拟层里做得相当好,落在「可虚拟定值」的可能性较高。而格点值本身受真实部件非线性影响,虚拟层给出的值往往只够缩范围,⇒ 通常只能落到「只能虚拟筛选」。同一行、同一列,两个规格维度分在两档——这不是矛盾,这正是表要细分到规格维度的理由。

⚠ 一个常见的枚举错误:沿描述文件的对象类型数(标量值 / 曲线 / 表 / 值块)。沿这条线索数出来的是对象类型,不是规格维度,四个规格维度会整类丢失,于是一张表被当成一个判定单元,上面那条区分就永远做不出来。同样地,⛔ 不要沿 TMS 的物理子系统数(座舱、电池、电驱、前端…)——数出来的是子系统,整张表的行就选错了轴,后面每一格都无法判。

把骨架表里二维 MAP 那一行放大成四个子行,各带独立标签:轴点、插值与外插保护、上下限、不可标量;四个子行横跨同样的五列,用三种图案示意它们在同一列上可以落在不同档,例如轴点子行与格点值子行在同一列呈现不同图案;图右侧两条引线分别标注轴点疏密由灵敏度反推、格点值受真实部件非线性影响,图下方一条警示带。本图为结构示意,图案只表示分档不同、不表示具体档位,不得据图取值。
图3 四个规格维度未必落在同一层——该读出的是:一张二维表不是一个判定单元,轴点定法与格点值定法要分开判;而且分档的理由是可以说清的,不是凭感觉分的——轴点由灵敏度反推、格点值受真实部件非线性影响,两者对虚拟层的依赖程度本来就不同。本图为结构示意,图案只表示分档不同、不表示具体档位,不得据图取值。

1.6 前移还是留舱:三条判据是三个否决位,⛔ 不是三个权重项

判据来源那两类里,(a) 类的具体形态就是这一节要给的前移/留舱决策表。而它的上游是一笔经济性账,本课只承接结论、⛔ 绝不重推

结论有两条:

① 带真实 ECU 的在环台架做不了时间缩放。ECU 走自己的晶振时钟,缩时会把任务周期与滤波器时基一起缩掉——缩出来的不是同一段软件的行为。

② 因此热惯性长的降温与暖机工况,在半实物层只能实时真跑——它占多长实时窗口由该工况自身的热惯性决定,本课⛔ 不给量级(那正是第 3 讲 3.3 判为「不给值」的「单条在环时长」那一项,须按本项目实测)。要提速只能退到 MIL/SIL 纯虚拟层,而代价是丢掉真实部件的非线性

这笔账归 K4-03 MIL/SIL/HIL 验证流程K6-04 环境舱与整车热平衡标定,两侧已各自写全一遍。本课只把这两条结论填进判据来源栏。为什么不重推?两个理由:一是重推必然要引入台架单位时间成本、工况时长这类平台相关量,而本课并不给它们;二是同一笔账在两处已经各写全一遍,重推等于制造第三份可能互相漂移的说法。⇒ 本课的写法是引结论 + 给去向,⛔ 不复述推导,⛔ 也不拿这些不给单点值的量去做任何倍数或数量级比较。SIL 与 HIL 的对比全课只写定性关系:SIL 可横向并行铺开,HIL 独占串行

⚠ 这里有一个本课点名的读反:「HIL 跑得快,所以标定循环能整体提速」。「跑得快」指的是实时性跟得上,不是能压缩物理时间。照这个因去改,人会去买更快的实时机——而瓶颈根本不在那里。要压物理时间,只有退到纯虚拟层这一条路,且要为丢掉的部件非线性付账(那笔账正是第 2 讲的增益量级判据要挡的)。

由这两条结论直接产出决策表。值得前移的量要同时满足三条

  1. 单次评价便宜
  2. 可批量重复
  3. 对真实部件非线性不敏感

三条中占任意一条反面的,留在环境舱

这三条不是并列的偏好,而是三个独立的否决位:单次评价贵 ⇒ 前移之后省不下什么;不可批量重复 ⇒ 自动寻优失去意义(它靠的就是大量重复评价);对真实部件非线性敏感 ⇒ 前移之后拿到的值本身就是错的任一条不成立,前移的收益要么归零、要么变成负的。

三个易错点:

① 只看第一条(便宜)就前移。这恰好落进本课后面那个案例的第一条根因:外插段上的量对真实部件非线性敏感,而它在纯虚拟层上评价起来便宜——两条判据在同一个量上给出相反的信号,只看便宜那一条,必然前移。

② 把三条当成打分项加权求和。⛔ 它们是否决位不是权重项。加权的直接后果是:一个严重不满足第三条的量,靠另外两条把总分捞回及格线,于是被判「值得前移」。

③ 把「可批量重复」理解成「脚本能重复跑」。它指的是评价结果可重复。一个每次跑出来都不一样的评价,脚本重复再多次也不能用来排序——寻优比的是候选之间的差,评价噪声一大,那个差就淹了。

自上而下一条判定链,入口写一个待判的标定量,依次经过三个菱形判据框:单次评价便宜吗、可批量重复吗(评价结果可重复,不是脚本能重复跑)、对真实部件非线性不敏感吗;任一答否即走横向出口进入留舱框,三问全答是才落到值得前移框;链的右侧从入口另引一条特判支路,标注时序类标定量先查模型里有没有对应的执行器动力学,两个出口分别为有与没有;图下方一条警示带。本图为判定结构示意,不含任何数值与阈值,不得据图取值。
图4 前移还是留舱——该读出的是:三条判据是三个独立的否决位,任一不成立前移的收益要么归零、要么变负,所以不能加权求和;「可批量重复」判的是评价结果可重复而不是脚本能重复跑;时序类标定量还要先过一道特判——模型里没有执行器动力学时,这一整行在纯虚拟层是空的。本图为判定结构示意,不含任何数值与阈值,不得据图取值。

1.7 期次分界:本课定的是 SOP 前那一版基线

还有一条边界要在第一讲说死,否则两套做法会被互相搬用。

本课与量产后的在线优化(归 N6-02 整车热管理数字孪生与在线优化)都在「用模型跑寻优」,但期次不同:本课发生在 SOP 前,基线还不存在,本课要做的正是从零定出这版标定基线;N6-02 整车热管理数字孪生与在线优化 发生在量产后的车队孪生上,基线已经定版,它做的是在已定版基线上的增量微调——「基线怎么来的」那一整块,它是指回本课的。

三样东西不同,必须讲明白:

① 搜索空间。本课可以在规格允许的全范围里搜,边界由标定量自身的上下限与规格框定;量产后只能在已定版基线附近做增量,搜索空间由那版基线框定。

② 审批权。本课的产出是待复测的候选,走标定放行链路;量产后的产出要下发到已交付车辆,走软件升级与灰度链路。

③ 失败代价。本课失败的代价是多占几轮舱时;量产后失败的代价落在已售车辆上。

两条互相搬用的错:

① 把量产侧那套「候选筛选闸门放在孪生内部、上车之前」的差值显著性判据,直接搬来当本课的出口判据。那套判据的前提是有一个已定版基线可比——本课没有。判据形式在别处,其前提在本课不成立,搬过来就是空转。

② 反过来,把本课划出的置信工况区判据当成量产后也够用。模型换版、车辆老化都会让它收缩;判它有没有收缩,正是第 6 讲要做的事。

1.8 时序类是这张表上最脆的一行

最后钉一行特别的:时序类标定量——斜坡时间、稳定延时、执行器动作速率上限、最小驻留时间。

这类量的特点是:必须在切换窗口内读时间序列才能整定,它们不是稳态量,稳态扫点扫不出来。⇒ 判它落在哪一层,取决于一件很具体的事:被控对象模型里有没有对应的执行器动力学——阀的动作速率、压缩机的转速爬升率、泵的响应延迟。

没有,这一整行在纯虚拟层就是空的。请注意这句话的性质:不是「精度不够」,是那段动态根本不存在。这两件事的处置完全不同——精度不够可以改关联式、补件级标定,而不存在的物理量提再多精度也变不出来。

它脆在哪?脆在「模型看起来能跑」。一个没有执行器动力学的模型照样能给出稳态温度、照样能算能耗、寻优也照样能收敛到一个漂亮的候选——只是它给出的稳定延时是模型积分器的产物,不是任何一个真实执行器的行为。整张表上,这一行是最容易被误判成「可虚拟定值」的一行,因为它的错不会以报错的形式出现。

三个易错点:

① 把「模型跑出来有过渡过程」当成「模型有执行器动力学」。那条一阶惯性曲线多半是被控对象的热惯性,是水温、板温慢慢爬上去;执行器动作速率是另一回事,它描述的是阀开到位要多久、转速指令跳变后实际转速怎么跟上。两者都表现为「不是瞬间到位」,来源完全不同。

② 直接把这一行判成「必须回实车验收」,而不先查模型里有没有。如果模型里确实有一套经过件级标定的执行器动力学,这一行的一部分是可以虚拟筛选的。不查就判死,等于把本可前移的量白白退回台架。

③ 越界去给时序量的具体值。这类量的试验设计与验收判据归 K6-07 热泵与多模式切换标定本课只判它落在哪一层,⛔ 不给任何时序门限值——各时序量的取值都是平台相关量,须按本项目的执行器与整车约束实测标定。

本讲小结:这一讲交出一张分层能力表和一张前移/留舱决策表。能力表的列来自两条正交的在环阶梯交叉(⛔ 不是首尾相接成一条链),行是七类标定量(第七行「诊断与保护判据类」是本课补的)再按四个规格维度细分;每一格填两样东西——三档之一的档位判据来源,来源只能是一条经济性结论或一项必测残余,⛔ 表上不许留空格。决策表的三条判据(单次评价便宜、可批量重复、对真实部件非线性不敏感)是三个否决位而不是权重项。此外三条边界钉死:与验证侧同台架而不同出口判据;本课是 SOP 前定基线、不是量产后微调;时序类那一行先查模型里有没有执行器动力学,没有就是空的、不是精度问题。下一讲回答格里那两个判据到底怎么算。

后面还有 5 讲正文 · 关键公式 · 案例拆解 · 常见误区 · 动手做

会员专属

后续为会员深水区内容——四库数据与深度拆解。

查看会员方案