TMS BOOK · ACADEMY 讲义

诊断使能窗口与故障抑制矩阵:多故障并发的根因仲裁

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

K5-08 诊断使能窗口与故障抑制矩阵:多故障并发的根因仲裁

课程代码 K5-08 · 板块 K 控制、软件与标定 / 诊断与故障管理 时长 约 4.5 小时(8 讲) 前置 K5-01 OBD/UDS 诊断与故障码(DTC)设计;K5-02 热管理故障处理与降级策略;K4-01 热管理嵌入式软件架构与 AUTOSAR 基础 本讲义定位 讲师授课蓝本 / 学员自学讲义,是 K5-08 大纲的完整展开版


按任务导航

你手上的事 直接看 还要配
审一份「一屏十几条码」的售后分析,定技师先拆哪个件 第 5 讲 · 首发码能不能靠时间戳判、判不了怎么退 第 4 讲(这几条之间有没有合法抑制边)
给一张诊断条目表配跨工况使能窗口矩阵 第 1 讲 · 列怎么选、每格三态怎么判、⛔ 不许留空格 第 2 讲(八类工况逐格过;run-on 与欠压两格是热管理特有的)
自查有没有「整个保修期一次都没跑过」的诊断 第 2 讲 · 运行频次与覆盖工况占比,两个数必须一起报 第 3 讲(分子取不到数,先查是不是存储条件配错了)
评审一份已配好的抑制矩阵,查有没有越权抑制 第 4 讲 · 每条边三个必填项:合法依据 · 解除判据 · 不成立的条件 第 8 讲(反向注入那一半用例)
写一棵交给售后的引导式诊断树 第 7 讲 · 由失效模式倒推、按可测性 × 拆装代价排序、定终止条件 第 6 讲(每片叶子指到的件,粒度对不对得上)

本课不覆盖:单条诊断的使能条件、UDS 报文与 DTC 编号体系、冻结帧字段集设计法(→ K5-01 OBD/UDS 诊断与故障码(DTC)设计)· 阈值、去抖、成熟度计数与 FTTI 的整定和复验(→ K5-07 诊断与保护阈值的整定、验证与复验)· 降级等级与资源仲裁(→ K5-02 热管理故障处理与降级策略)· DEM/DCM/FiM 的架构位置与资源开销(→ K4-01 热管理嵌入式软件架构与 AUTOSAR 基础,跨点火周期的存储介质 → K4-06 控制器非易失存储设计:学习值、诊断数据与累计量的持久化)· 场景标志位的判定信号与判据构造(→ K3-13 模式表/场景表与仲裁规则的静态体检:可达性、死锁与切换质量)· run-on 编排本体(→ K3-11 热管理域的上下电时序、run-on 编排与休眠期能耗预算)· 硬件共因失效分析(→ I7-03 功能安全导向的结构与失效模式设计)· 索赔统计口径与清洗(→ M2-05 售后保修与在役失效数据分析:从索赔表读出真实故障率并反馈设计)· 台架与故障注入实现(→ K4-03 MIL/SIL/HIL 验证流程);以及任何一个具体的阈值、工况进入门限、运行频次目标值、跨 ECU 同步误差与裕度因子取值——由本项目自己的台架实测、车队数据与所引标准的现行版本给出,⛔ 本课一个数都不给。其中「一屏最多显示几条」本课判定它不该有目标值,⛔ 这不是「没测出来」。

引言:这一屏码里没有一条是错的,技师还是拆错了件

一台车进店读码,屏上十余条:电池冷却不足、chiller 出口温度异常、EXV 过热度失控、水温高……技师照屏上的顺序自上而下查,先怀疑 EXV,再查 chiller,换掉 EXV 之后故障复现,二次进厂才查到真正的根因——电子水泵堵转。事后把这十余条码逐条摊开重审,每一条都没有毛病:使能条件写得对、阈值取得住、去抖时长合适、冻结帧该留的字段都留了。那是 K5-01 OBD/UDS 诊断与故障码(DTC)设计K5-07 诊断与保护阈值的整定、验证与复验 两门课的活,而这一次它们都做对了。

出问题的东西不在任何一条码里面。决定技师第一个动作的,是三样只存在于集合层的属性:这一屏码的呈现顺序、码与码之间的抑制关系、以及每一条码的定位粒度(它究竟指向哪一个可更换件)。三样都不是单条码的属性,因此在任何一次单条码评审里都不会被看到——单条评审只问「这条判得准不准」,而技师面对的问题是「这十几条里我先动哪一个」。这两个问题之间隔着一整门课,本课就是那一门。

本课要建立的判断力有三个:这路诊断在这个工况到底该不该跑(以及关掉它的代价怎么记账)、这几条码之间哪一条边是合法的、哪一条是越权的这一行码指到的件与技师真正能换下来的件是不是同一个。三者串起来才回答那个唯一重要的问题:屏上这一堆,第一个动作是什么。

钉子①:本课的对象是「集合」,⛔ 不是一条码

一条码的使能条件、阈值、去抖、冻结帧全部写对,几百条放在一起仍然会让技师拆错件。由此推出本课全部工程动作的固定次序:

使能窗口(这路诊断在这个工况跑不跑)→ 抑制矩阵(谁把谁压下去)→ 根因仲裁(谁排在第一行)→ 定位粒度(这一行指向哪个可换件)→ 引导式诊断树(拆的顺序)→ 组合注入验证与场端回流

⛔ 六步一步都不能跳。尤其⛔ 不许跳过前两步直接去调呈现顺序——那只是把一个错误的集合重新排了一次序,屏上还是那些码,技师的第一个动作还是错的。★ 本课的验收问法固定为一句:把这一屏码交给一个不认识这台车的技师,他的第一个动作是什么、凭什么是它。答得上来,十条也不多;答不上来,两条也太多。

六步里最容易互相串的是前两步,而分辨它们只要一问。关窗由工况决定,与任何一条诊断的故障状态无关;抑制由另一条诊断的故障状态决定,与工况无关。⇒ 判据:把所有故障都清掉,这条规则还成立吗——成立的是关窗,不成立的是抑制。⛔ 两者不得互相替代:拿一条抑制边去实现一个其实是使能窗口的需求,边配上了、问题一点没动,而矩阵上从此多了一条永远没有物理依据的边。

钉子②:每一个「让码变少」的动作,它的代价都不会以报错的形式出现

本课的全部动作都在做减法——关窗、抑制、折叠、粗化粒度——而每一个「变少」都有一个方向相反的代价。三者的共同点只有一个,而它正是本课最难的地方:出问题的那一侧在车上、在台架上、在评审表上全都表现为「什么都没发生」,与「这件事本来就没出问题」在数据上完全无法区分。

⇒ 硬纪律:每一个减少动作,必须同时配一个能把它的代价显影的量。三对映射写死,今天就能拿去对照自己手上那份配置:

你做的减少动作 换来的、不会报错的代价 必须同时配上的显影量
关窗(这个工况不跑这条诊断) 无声的漏检 运行频次 R_run,且必须与覆盖工况占比 D_en 一起看(第 2 讲给定义与交付形态)
抑制(这条码成立时压住那条) 并发的第二个真故障被一起压掉 反向注入用例:根因未发生、单独注入下游那条码对应的真实故障时,该码必须正常报出(第 8 讲)
折叠与粗化粒度(几条并一条、码只指到系统层) 技师修不到件 场端按码分层的查无故障率 P_NTF 与误换件率 P_wrong(第 8 讲的回流入口)

⛔ 配不出显影量的减少动作,一律不许上车;⛔ 更不许拿「屏干净了」「码变少了」当验收结论——那恰恰是代价正在发生时的样子。两条钉子合起来是一句话:集合治理的每一步都在做减法,而减法唯一的安全条件是它的代价被某个量看着。

反钉子:「一屏码太多、技师看不过来 ⇒ 抑制矩阵就是用来把码压少的,压得越干净越好」

读者会做错的那个具体动作:拿共现统计(这几条码在售后数据里总是一起出现)、或者干脆拿售后抱怨(码太多、看不过来)当依据去配抑制边,把一屏十余条压到两三条,评审时用「屏干净了」当验收通过判据;再进一步,给抑制矩阵定一个「一屏最多显示几条」的目标值,让它变成一个可以被考核的指标。

为什么这是反的:抑制边的唯一合法依据是物理因果——上游失效使下游判据的前提不成立,或上游失效是下游异常的充分原因。而共现只说明它们经常一起出现,⛔ 不说明其中一个是另一个的原因:同一批次的两个独立失效、同一供电域里的两个件、同一次拆装造成的两处装配缺陷、同一段极端工况下同时被激发的两条真故障——这几类的共现率同样很高,而它们之间一条合法抑制边都没有。按共现配出来的边,在真·多故障并发时会把第二个真故障一并压掉;而抑制矩阵自己不会报错——被压掉的那条码在车端数据里、在诊断仪上、在索赔表里,与「这个故障根本没发生」完全无法区分。⇒ 越权抑制是本课唯一一类做得越多、看起来越好、而实际越危险的动作:它让「屏干净」与「漏掉真故障」同向增长,而这个方向上没有任何一个自动的信号会拦住你。

正解三条,缺一不可:① 每条边写合法依据,写的是那一句物理因果,⛔ 不是统计相关性、⛔ 不是码数;② 每条边写解除判据——根因码清掉之后,被压住的那条什么时候重新开始判;③ 每条边配一组反向验证用例。⛔ 只做「注入根因后只剩首发码」那一半验证,越权抑制永远不会被发现,因为它的表现形式就是「没有多余的码」,而那正是你想要的结果。

⚠ 与之配套的还有一条硬约束,它把「抑制」和「不存」彻底分开:抑制只作用在售后呈现层与降级触发上,被抑制的码仍须置位、存储、可回流,并在呈现层带上「被谁抑制」的标注让技师一键展开——存全集、呈现子集。存的那一份与呈现的那一份如果相等,就说明抑制被做成了不存,那一次并发在场端永远无法回溯(第 4 讲展开)。

反钉子第二层:「关窗是保守动作——拿不准就先关掉,最多是少报一条」

这一层的偏差是单向的、会随时间累积,比上一层更难自查。

读者会做错的那个具体动作:量产爬坡期一收到某条码的误报投诉,就把该诊断在相关工况整格关窗——⛔ 不去分辨到底是阈值取错了,还是那个工况下被诊断量的散度本来就大、该切阈值而不是关窗——并且不记账。几个月后这条诊断在整个车队上一次都没完成过判定,而没有任何一处会报警:因为「这条码不再出现」看起来恰恰就是当初想要的结果。

为什么决策会系统性地漂向这一侧:两个方向的代价可见性不对称。该关窗而没关 ⇒ 批量误报 ⇒ 投诉、返工、索赔,当天就有人来问;该跑而关了 ⇒ 无声漏检 ⇒ 没有任何人会来问,直到那个故障在场端以「用户一直抱怨、一条码都读不到」的形式冒出来,而到那时它看起来像是「诊断做漏了」「技师没查到」,几乎不会有人把它归因到当初那一次关窗。⇒ 一个只按「有没有人来投诉」驱动的团队,必然把窗口越关越死——这不是能力问题,是反馈回路缺了一条边

⇒ 唯一的解法是把不可见的那一侧变成一个数,并让它成为诊断条目表上的两列交付物(预期运行频次、覆盖工况占比),验收问法固定为一句「这条诊断在一辆典型用户车上一年跑得到几次」;⛔ 不是靠「记得别关太死」这样的纪律——纪律拦不住一个每天都在被投诉推着走的团队。

全课八讲怎么排

第 1 讲先把使能窗口从阈值、去抖、成熟度、迟滞带里摘干净,再画矩阵的列全集,把每格的三态判定(跑 / 关窗 / 切阈值)落成一条两问的判定链,并写死「矩阵不许有空格」——空格与「照常跑」在一张表上长得一模一样。第 2 讲逐格过八类工况,其中停机热浸与 run-on、低压欠压、服务与产线模式三格的判据是热管理与整车侧特有的,随后把关窗的代价落成运行频次账。第 3 讲把两张矩阵翻译成架构层的配置项:事件与功能标识的映射、三类条件的语义分工,以及协议层「露不露面」与设计层「谁压谁」的分界。第 4 讲建抑制矩阵:两类抑制的语法差异、每条边的三个必填项、两条热管理传播链。第 5 讲做一屏并发码的根因仲裁——首发码的可判条件、判不了时的退化路径、跨 ECU 去重归口与售后呈现顺序键。第 6 讲判定位粒度三态,并拿可更换件清单反校一遍。第 7 讲由失效模式倒推引导式诊断树,再做清单级的命名去重与三处描述一致性核查。第 8 讲是验证与回流:组合爆炸怎么取样、抑制矩阵怎么双向验证、场端读数怎么接回前面六步。

⇒ 本课交出去的是四张表(★ 本课归纳,⛔ 不是本课程体系既有的交付清单),而不是一句「屏上还剩几条码」的结论:使能窗口矩阵 · 抑制矩阵(含每条边的解除判据) · 定位粒度反校表 · 组合注入取样表。四张表互相牵动——把其中一条码的定位粒度改粗一档,另外三张各会怎么动,正是全课的收口问法。开头那台车会在典型案例里回来:按六步逐步问一遍「这一步做对了,技师的第一个动作会变成什么」,⛔ 而不是问「屏上会少几条码」。

第 1 讲 使能窗口矩阵:先划清它管哪一段,再画列的全集,然后每格填一个三态

诊断做到几百条之后,最常被问、也最难当场答准的一句话是:「这条诊断在快充的时候到底跑不跑?」难答不是因为没人知道,而是因为它在不同人嘴里指的不是同一件事——有人说的是窗口没开,有人说的是阈值切高了,有人说的是去抖没数够,还有人说的是跨循环成熟度没到。同一句话在评审纪要里被记成一件事,散会之后三个人各改各的,改完谁也不会报错。本讲要做的第一件事就是把这几件事分开:一条诊断的判定链上有五段顺序固定的门,本课只负责第一段。分开之后才轮到「这张表怎么摆」——行怎么排、列从哪儿来、每一格填什么、填反了会怎样。

本讲的次序是:五段门与本课的射程(1.1)→ 单条使能条件与整表矩阵的粒度差(1.2)→ 行按物理前提分组(1.3)→ 列的全集怎么画(1.4)→ 逐列判「前提还是散度」(1.5)→ 每格的两问判定链(1.6)→ 判反的后果为什么不对称(1.7)→ 三态之外还有两态(1.8)→「切阈值」这一态的边界(1.9)。

1.1 一条诊断的判定链上有五段门,本课只负责第一段

是什么。一次诊断判定从开始到置码,中间是五段顺序固定的门,前一段不通过,后面几段根本不执行:

它问的问题 决定它的量 取值归谁
门一 工况到了吗 使能窗口 本课(本课唯一负责取值的量)
门二 越界了吗 故障阈值 K5-07 诊断与保护阈值的整定、验证与复验
门三 连续够了吗 去抖(判据要连续成立几个任务周期) K5-07 诊断与保护阈值的整定、验证与复验
门四 跨循环够了吗 成熟度计数 计数取值归 K5-07 诊断与保护阈值的整定、验证与复验;成熟与老化状态机本体归 K5-01 OBD/UDS 诊断与故障码(DTC)设计
门五 退出了吗 迟滞带(退出与再进入的带宽) 合成流程归 K3-01 整车热管理控制策略总览与模式管理

为什么必须先消歧。这几个量在工程口语里常被合称「诊断参数」,在一份标定表上并排放着,于是「这条诊断在快充时不报」这一句话,至少可以指四件完全不同的事——窗口关了 / 阈值切高了没越界 / 去抖没连续够 / 跨循环成熟度还没达;把门五也算进来就是五件(迟滞带过宽,会让它退出之后长期回不到判定状态)。而这五件事的修法互不相同:窗口的问题要回到「这个工况下物理关系还成不成立」,阈值与去抖的问题要回到两侧取样重新取值,成熟度的问题要回到状态机的循环计数。修错了不会报错——车上的表现同样是「不报」,报表上同样是一片安静。

今天就能用的一问。下次听到「这条诊断在某某工况不报」,先反问一句:它是没进判定,还是判了没过?没进判定是门一的事(本课),判了没过是门二到门四的事(K5-07 诊断与保护阈值的整定、验证与复验)。这一问能在三十秒内把责任面切开,而它不需要任何数据、不需要打开任何一张标定表。

工程量级。⛔ 本课不给任何阈值、去抖时长、成熟度计数或迟滞带宽度的数值——那是 K5-07 诊断与保护阈值的整定、验证与复验 的交付物。本课在每一格交付的是三态判定与那一句判据。反向的分工同样要守:K5-07 诊断与保护阈值的整定、验证与复验 那侧已写明使能窗口本身的取值归本课,两边不重复取值。

易错点。把「关窗」与「把阈值切到很高」当成两个等价手段。在这一个工况下它们的表现确实相同(都不报),但在相邻工况的过渡段上完全不同:关窗是一条硬边界,判定根本不启动;切高的阈值仍在判,而且会随工况标志位的抖动反复切换,产生本来不存在的瞬态误判。

⚠ 最后钉一条本课两张矩阵之间的分界,后面几讲都按它走:关窗由工况决定,与任何一条诊断的故障状态无关;抑制由另一条诊断的故障状态决定,与工况无关。分辨手上这条规则属于哪一张矩阵,只有一问——把车上所有故障都清掉,这条规则还成立吗:成立的是关窗(本讲与第 2 讲),不成立的是抑制(第 4 讲起)。⛔ 两者不得互相替代,⛔ 尤其不许用一条抑制边去实现一个其实是使能窗口的需求——边配上了、问题一点没动,而矩阵上从此多了一条永远没有物理依据的边。

图1 一条诊断判定链的五段门与各段的归属。图中一条从左到右的判定链,五个顺序固定的判定门依次排列:门一「工况到了吗」、门二「越界了吗」、门三「连续够了吗」、门四「跨循环够了吗」、门五「退出了吗」。每个门下方一个归属标签块,分别写使能窗口(本课,实心加粗边框)、故障阈值(去向课程编号)、去抖判定周期数与任务周期(去向课程编号)、成熟度计数(去向课程编号)、迟滞带(去向课程编号)。链的最左端一个入口块写「一次诊断判定开始」,最右端两个出口块分别写「置码」与「不置码」。链的上方一条横跨全链的灰色括注写「这五段在标定表上并排放着,口语里合称诊断参数」,下方对应位置一条警示红括注写「所以一句『这条诊断在快充时不报』可以指五件不同的事」。图左下角另有一个独立方框,内含两行对照:上行「前置课:单条诊断的使能条件」,下行「本课:全表乘全工况的二维矩阵」,两行之间一支向下箭头标「粒度不同,方法也不同」。全图不出现任何数值。本图为定性结构示意图,横向位置只表示先后次序、不表示时间长度,方框大小不代表任何比例,不得据图读取任何数值或时间。
图1 诊断判定链的五段门与归属。要读三件事:① 本课只负责第一个门(实心加粗边框那个),其余四个门各自的去向写在它自己的标签块里;② 五个门顺序固定——前一个门不通过,后面四个门根本不执行,因此「关窗」与「把阈值切到很高」在这一个工况下表现相同、在过渡段上完全不同;③ 左下角那个对照框读出本课与前置课的粒度差:一条诊断与一张表不是同一件事。⛔ 图上不给任何阈值、去抖时长、成熟度计数或迟滞带宽度的数值。本图为定性结构示意图,横向位置只表示先后次序、⛔ 不表示时间长度,方框大小⛔ 不代表任何比例,⛔ 不得据图读取任何数值或时间。

1.2 单条的使能条件与整表的矩阵,粒度不同、方法也不同

是什么。K5-01 OBD/UDS 诊断与故障码(DTC)设计 给的是单条诊断的使能条件——这条什么时候该跑,写在这条诊断自己的需求条目里。本课的对象换了一个:把全部诊断条目与全部工况类别摆成一张二维矩阵,每一格填一个三态判定加一句判据。这就是本课全程的对象——一个集合,⛔ 不是一条码

为什么不能沿用单条的写法。单条写法有一个隐含前提:写这条的人想得到所有会出问题的工况。条目上到百这个量级之后,这个前提必然破——⛔ 不是能力问题,是每条诊断由不同的人在不同时间写的,各自想到的工况集合互不相同,而且没有人比对过。于是同一个工况在 A 诊断上被想到、在 B 诊断上被漏掉,漏掉的那一格整格不出现;而从任何一条诊断的需求条目上单独看,它都是完整的。⇒ 全表只能反过来做:先画列的全集,再逐格判

工程量级。⛔ 不给条目数与列数的指标——列数由选列判据定(1.4),行的最小可评审单位是诊断条目(1.3)。

易错点。以为把每条诊断的使能条件抄进矩阵就得到了矩阵——那只是把散落的判断换了个排版,空着的格仍然空着,而空格在矩阵上与「照常跑」长得一模一样。⇒ 本讲的第一条硬要求:矩阵不许有空格,每一格必须显式填三态之一。

今天就能做的一步。取现有诊断条目表里的「使能条件」那一列,横向拆成 1.5 那八列工况,然后数一个数:有多少格是你现在答不上来的。这个数不需要任何新数据,半小时之内就能得到,而它就是这张矩阵此刻真实的欠账——它同时也是下一次评审该先看哪一块的排序依据。

1.3 行按被诊断量的物理前提分组,但行的语义仍是诊断条目

是什么。行数上百时逐条填格的矩阵不可评审——人读不完,也没人签得下字。做法是在诊断条目与工况列之间插一层分组:所有以「冷却液流量已建立」为前提的合理性判据归一组,所有驱动电流窗口类的电气判据归一组,所有以稳态归一化为前提的回路能力判据归一组,依此类推;组内同前提的条目在同一列上取同一态,组间不合并

为什么。矩阵的评审成本是行乘列。分组把评审对象从几百行降到十几组,同时——这一条更重要——把判据的一致性变成结构性的:同一个物理前提下的条目,此后不可能再各判各的。

工程量级。⛔ 不给组数指标。判「能不能同组」的依据只有一条:这些条目在某一列上会不会取到不同的态——会取到不同态的,就不能同组。

易错点。① 分组之后忘了保留条目级的可追溯,于是配置落表时找不到哪一条码对应哪一格;⇒ 行首必须保留条目编号位,分组只是它上面的一层标题。② 把分组当成合并——两条码归一组,只表示它们在「窗口」这一维上同判,⛔ 不表示它们该合成一条码。该不该合成一条码是第 6 讲定位粒度的事,判据完全不同(那里看的是可更换件,不是物理前提)。

★ 分组这一层是本课归纳补出的,⛔ 不是本课程体系既有的规定:本课程体系写的是「行=诊断条目」,分组是对它的细化而不是改写——行的语义一个字没动。

本节的产物规格。一张两列的分组表:组名 | 这一组共同依赖的物理前提(一句话)。这一句话后面会被反复用到——1.6 每一格的判据,第一问问的就是它;1.7 退回一个写不出判据的关窗格,靠的也是它。

1.4 列的全集必须先画再填,选列判据只有一条

是什么。列不是随手列的。选列判据只有一条:该工况会不会改变被诊断量的物理前提或散度——不改变的,⛔ 不必单列。⚠ 列也不是越多越好:多一列就多一整列格要判、要评审、要验证。

怎么画。⛔ 不许沿「我熟悉的那几个行驶工况」枚举。按「改变从哪里来」建集,得四条线索:

  • 热力与流动前提变化——流量尚未建立、温度尚未分层、没有稳定段可归一化 ⇒ 冷起动、暖机段、停机热浸与 run-on/after-run;
  • 电气前提变化——供电电压、母线状态、大电流干扰改变了电气判据本身的边 ⇒ 低压欠压、快充(高压大电流与充电机侧共地干扰);
  • 状态迁移与瞬态——处于切换过渡段、上下电过程、休眠与唤醒 ⇒ 休眠唤醒窗、模式切换窗;
  • 人为干预——产线与售后服务模式(拆接件、举升、强制执行器动作、临时关闭置码)。

建完集之后必须再问一遍的两句话。我刚才是沿什么线索数出来的?有没有不在这条线索上、但同属这个集合的?第二问在这里的答案有三类,它们沿「驾驶循环」这条最自然的线索数一定会全部漏掉,因此必须显式成列或显式判「不单列」,⛔ 不得默认当成不存在:

  • 整车姿态与运动学工况——长坡、急加减速、连续弯道会改变冷却液在膨胀壶与管路里的液面与气泡分布,含液件的温度与压力测点因此改变散度、甚至改变物理前提。⚠ 这一类是热管理特有的:纯电气域的诊断表上根本没有它,照抄电气域的列表必漏;
  • 极端环境工况——高原低气压、极寒极热。它们改变的多半是散度而不是前提,因此多数格判「切阈值」而不是「关窗」;
  • 软件刷写与配置写入窗——刷写、下线配置写入期间控制器状态不完整。与服务模式同类,但触发方不同(去向 K7-02 软件定义热管理与 OTA 迭代K6-09 产线下线与售后标定:工位项清单、配置写入与学习值管理)。

★ 这三类是本课按全集法补出的,⛔ 不是本课程体系既有的列;是否全部单列,由本项目按同一条选列判据逐条判——本课给的是判据,⛔ 不是一份列表

工程量级。⛔ 不给列数。前面八类工况是本课程体系写明的下限(1.5 逐列过),补出的三类是加不加的问题,判据不变。

易错点。① 把「这个工况很重要」当成选列依据——重要与否不改变判据,只有「改不改变前提或散度」才改变;② 反过来,为了让矩阵好看,把两个物理前提不同的工况并成一列——那一列的格值必然取两者中较保守的那个,于是另一半工况被无声地关窗,而矩阵上看不出任何异常。

图2 使能窗口矩阵的列(工况)全集怎么建。图中顶部一个根块写选列判据:该工况会不会改变被诊断量的物理前提或散度。根块下分出四条主线索分支,各带标题与其下的工况列表:线索一「热力与流动前提变化」下列冷起动、暖机段、停机热浸与 run-on;线索二「电气前提变化」下列低压欠压、快充;线索三「状态迁移与瞬态」下列休眠与唤醒、模式切换过渡段;线索四「人为干预」下列产线与售后服务模式。四条线索下方一条横向分隔线,线下三个用橙色虚线边框标出的补充块,各带一支从图外指入的箭头,分别写整车姿态与运动学工况(长坡、急加减速、连续弯道)、极端环境工况(高原低气压、极寒极热)、软件刷写与配置写入窗;三块共用一条标注写:沿驾驶循环这条线索数,这三类一条都不会出现。每个工况块右侧一个小标记标明它改变的是前提还是散度,两种标记形状不同并在图例中说明。图右下角一个方框写本课的判定:是否单列由是否改变前提或散度逐条判,本课不给列数。本图为建集线索的结构示意图,不是某个平台的实际列清单,分支长短与块的大小不代表任何重要度或占比,不得据图读取任何数值。
图2 列的全集怎么建。要读三件事:① 选列的判据只有顶部那一条——该工况改不改变物理前提或散度,⛔ 不是这个工况重不重要;② 橙色虚线那三块是建完集之后追问第二问才补出来的,它们不在四条线索上——尤其整车姿态类是热管理特有的,纯电气域的诊断表上根本没有它;③ 每个工况块旁边那个标记读出它改变的是前提还是散度,这个区分直接决定该格取「关窗」还是「切阈值」。⛔ 图上不给任何工况的进入门限(温度、电压、电流、时间)。本图为建集线索的结构示意图,⛔ 不是某个平台的实际列清单,分支长短与块的大小⛔ 不代表任何重要度或占比,⛔ 不得据图读取任何数值。

1.5 逐列过一遍:这一列改变的是「前提」还是「散度」

是什么。八类列逐列写出它改变的是哪一样,这个区分直接决定该格取「关窗」还是「切阈值」:

它改变的是 一句话说清
冷起动 前提 温度未分层、流量未建立
暖机段 散度 温度场一直在变,稳态归一化不成立
稳态行驶 —(基准列) 判据当初就是在这一列上标定的
停机热浸与 run-on 前提 没有稳定工况段可归一化(第 2 讲整节展开)
快充 兼有 大电流与共地干扰改变电气判据的边;热负荷同时远离标定工况
休眠与唤醒 前提 控制器状态不完整、采样不连续
低压欠压 前提 电气判据的三条边同时漂移(第 2 讲整节展开)
产线与售后服务模式 前提 人为拆接与强制动作,被诊断量不由整车状态决定

为什么要逐列写出来。这一列在矩阵上只是一个列头,而列头写的是一个工况名字,名字不携带判据——两个人看同一个列头,会填出不同的格。⇒ 硬要求:列头下面必须挂一行小字,写清本列改变的是前提还是散度。这一行小字是 1.6 那两问能被稳定执行的前提,也是这张表能被第二个人接手的唯一凭据。

工程量级。⛔ 不给各工况的进入门限(冷起动与暖机的温度分界、快充的功率或电流分界、休眠唤醒的时间分界、服务模式的触发条件)——全部是平台相关量。场景全集、判定信号与判据构造归 K3-13 模式表/场景表与仲裁规则的静态体检:可达性、死锁与切换质量,⛔ 本课不重讲。本课在这里只向那一侧提一条接口要求每个场景标志位必须带一个「不可判定」取值,⛔ 不许在信号矛盾时静默回到默认场景——那会让整张矩阵按一列错误的取值运行,而且不留任何痕迹。场景判错之后使能窗口怎么兜底,是第 2 讲的内容。

易错点。把快充当成「稳态的一种」。它在热负荷上确实相对稳定,但电气侧的共地干扰与高压大电流会改变电流窗口类判据的散度,两侧结论相反 ⇒ 同一列上,电气类与能力类诊断的格值可以不同。这恰恰是「矩阵」而不是「清单」的价值所在:清单只能给一条诊断一个答案,矩阵能让同一列上不同物理前提的行取到不同的态。

图3 使能窗口矩阵的样例视图。纵向为行,按被诊断量的物理前提分成四组:组一以冷却液流量已建立为前提的合理性判据、组二驱动电流窗口类电气判据、组三以稳态归一化为前提的回路能力判据、组四跨节点信号有效性判据;每组下列两到三行示例诊断条目,行首标明条目名并保留条目级编号位。横向为列,依次是冷起动、暖机段、稳态行驶、停机热浸与 run-on、快充、休眠与唤醒、低压欠压、服务模式八列,列头下方各带一行小字写该列改变的是前提还是散度。每格填一个三态标记(跑、关窗、切阈值),三种标记形状不同并在图例中说明,格内另有一行极短的判据摘要位。矩阵右侧外挂两个标记列,列头分别为观测态与延迟判定,用与三态不同的标记样式。矩阵下方一条警示带写:矩阵不许有空格——空格与照常跑在图上长得一模一样。图例区标明三态与两个标记列的全部标记形状及含义。本图为矩阵结构与格值形态的示意图,行与列均为示例而非穷举,格值不代表任何平台的实际判定结果、不得被取用为设计输入,不得据图读取任何数值。
图3 使能窗口矩阵的行与列。要读四件事:① 行按物理前提分组,而行的语义仍是诊断条目——分组是评审单位,⛔ 不是把多条码合并成一条;② 同一列上不同组可以取不同的态(快充列上电气类与能力类的取值相反),这正是矩阵而不是清单的价值;③ 右侧两个标记列是三态之外的两态(1.8),它们⛔ 不进运行频次账的分子,也⛔ 不许被静默归进关窗;④ 下方那条警示带读出本讲的硬要求:每一格必须显式填三态之一。⚠ 格里的三态判据在 1.6 展开,右侧两个标记列在 1.8 展开。⛔ 图上不给任何阈值数值,格里只允许出现三态标记与判据摘要。本图为矩阵结构与格值形态的示意图,行与列均为示例⛔ 而非穷举,格值⛔ 不代表任何平台的实际判定结果、⛔ 不得被取用为设计输入,⛔ 不得据图读取任何数值。

1.6 每格三态由两问决定,而这两问的顺序不能反

是什么。填一格的动作是一条只有两问的判定链:

  1. 被诊断量所依赖的物理关系,在这个工况下还成不成立?
    • 不成立 ⇒ 关窗。三个典型成因:流量未建立、模式处于切换过渡段、激励幅度不足以产生可分辨的响应。
  2. 成立,再问:散度有没有明显变大?
    • 变大 ⇒ 切阈值(⛔ 切到哪个值不填在这一格里,见 1.9);
    • 没变大 ⇒ 照常跑。

为什么这两问的顺序不能反。先问散度,会把「物理关系根本不成立」误判成「散度极大」,从而配出一条极宽的阈值。那条阈值在这个工况下确实不误报——它看起来解决了问题——但标定表往往只有一套,这条极宽的阈值会被带回正常工况,于是变成全工况漏检。⇒ 顺序不是体例,它决定的是这一格填错之后错误的传播范围:先问前提,错误止于这一格;先问散度,错误会跑到别的列上去。

工程量级。⛔ 本课不给任何阈值切换的目标值。本课在这一格交付的是三态之一加那一句判据;切到多少由 K5-07 诊断与保护阈值的整定、验证与复验 按误报侧与漏报侧两侧取样定。

本节的产物规格。一格的合法内容只有两样:三态标记 + 一句判据,而那句判据必须是 1.3 分组表里写下的那句物理前提(例:「本组判据要与稳态归一化的期望值比,本列没有稳定段」)。⇒ 评审时的检查动作因此可以是机械的:逐格看那句话是不是在谈物理关系;谈的是码数、投诉、经验的,一律退回。

易错点。把「这个工况下这条码报得多」当成判据。报得多至少有三种成因——散度大(该切阈值)、物理关系不成立(该关窗)、真的坏得多(什么都不该改)——三者在报表上的表现完全相同,只有回到「物理关系还成不成立」这一问才能分开。

1.7 判反的后果不对称,而且不对称的方向恰好让人往错的一侧偏

是什么。这一格判反有两个方向,它们的代价不能放在一起比:

该关窗而没关 该跑而关了
表现 量产上来就是批量误报 无声的漏检
可见性 响亮,当天就有人来问 安静,没有人会来问
反馈路径 投诉、返工、索赔,几天内回到你桌上 一直到用户抱怨而一条码都读不到,才有可能回来

为什么这一条要单独讲。两类判反的差别⛔ 不是代价大小之差,是有没有人会来告诉你之差。它解释了一个在几乎所有量产项目上都能观察到的现象:使能窗口只会越关越死,从来不会自己变宽——因为每一次关窗都有明确的收益(投诉消失)与不可见的代价(漏检),而做决定的人只看得到前者。⇒「关窗是保守动作,拿不准就先关掉,最多是少报一条」这句听起来最稳妥的话,是本讲要防的第二个方向:它的偏差是单向的,而且会随时间累积

工程量级。⛔ 不给「关掉多少格算过头」的指标——这个量的正确形态不是一个上限,而是每一格关窗都必须有记账:判为关窗的格数要单独记一个数,并接到第 2 讲那本运行频次账上。把不可见的那一侧变成一个数,是这一条毛病唯一的解法。

今天就能做的一次抽查。把矩阵里所有判「关窗」的格抽出来,逐格问一句:这一格的判据,是在说物理关系不成立,还是在说这条码太吵?说不出物理关系的,当场退回重判——它要么其实该切阈值,要么其实是阈值取错了。这次抽查不需要任何车队数据,做完就得到了两样东西:一份该重判的格清单,以及关窗格数这个数本身(第 2 讲那本账的入口就是它)。

易错点。以为这条毛病靠评审能拦住。评审看到的是一张已经填好的矩阵,而被关掉的格与从来没想到过的格,在矩阵上长得一模一样——两者都只是一个不引人注意的标记。⇒ 唯一可执行的分辨手段就是上面那次抽查:要求每一个关窗格写出那句物理判据,写不出的一律退回;「因为投诉多」「因为这条码太吵」不是判据。

图4 每格三态的两问判定链与判反后果的不对称。图上半部是三态判定的两问决策链:入口块写「这一格填什么」,第一问「被诊断量所依赖的物理关系在这个工况下还成立吗」,否分支直接指向关窗态并在分支上标出三个典型成因(流量未建立、模式处于切换过渡段、激励幅度不足以产生可分辨响应);是分支进入第二问「散度有没有明显变大」,是分支指向切阈值态并标注「切到哪个值归另一门课,本格只填态与判据」,否分支指向照常跑态;三个态块用三种不同形状。决策链旁一条竖向注记写:两问的顺序不能反,先问散度会把物理关系不成立误判成散度极大。图下半部是后果不对称的两栏对照:左栏「该关窗而没关」,下列表现(量产上来批量误报)、可见性(当天有人来问)、反馈路径(投诉、返工、索赔);右栏「该跑而关了」,下列表现(无声的漏检)、可见性(没有人会来问)、反馈路径用一条虚线画到很远处才落到「用户一直抱怨、一条码都读不到」。两栏中间一支向右的粗箭头标注:决策会系统性地漂向右侧,因为只有左侧有人来问。右栏底部一个方框写唯一解法:把不可见的那一侧变成一个数(运行频次账与它的分母)。本图为判定链与定性对照示意图,两栏的面积、箭头的粗细与虚线的长度均不代表任何量的大小或概率,不得据图读取任何数值。
图4 三态的两问判定链与判反后果的不对称。要读三件事:① 三态由两问决定,且两问有先后——顺序反了会把该关窗的格填成切阈值,而那条极宽的阈值会被带回正常工况;② 两栏的差别⛔ 不是代价大小,是有没有人会来告诉你——右栏那条通向远处的虚线就是这个差;③ 中间那支粗箭头读出本讲要防的那个方向:使能窗口只会越关越死,因为做决定的人只看得到左栏。⛔ 图上不给任何阈值、误报率或漏检率的数值。本图为判定链与定性对照示意图,两栏的面积、箭头的粗细与虚线的长度均⛔ 不代表任何量的大小或概率,⛔ 不得据图读取任何数值。

1.8 三态之外还有两态,它们必须显式成列而不是被塞进三态里

是什么。把「跑 / 关窗 / 切阈值」这三态当成全集,再追问一遍 1.4 那个第二问——有没有既不属于「跑」也不属于「关窗」的取值——答案是两类:

  • 观测态:判据照跑,但结果不进故障码状态机,只写进扩展数据记录或车队回流通道(回流的车端实现去向 K7-04 车队数据回流的车端实现:信号表定义、事件抓帧与带宽/存储预算)。它是「拿不准该不该在这个工况置码」时唯一诚实的中间态:既不误报,也不把数据丢掉。⛔ 它不等于「跑」——它不占码、不触发降级、不进售后呈现;也⛔ 不等于「关窗」——判据确实在算。
  • 延迟判定态:在窗口内先缓存证据,等工况恢复到可判定段之后再判(休眠唤醒窗与初始化窗最常用)。它的风险在时基:判定结果算作哪一个操作循环的,必须写死,⛔ 不许两处各算一次。

本课的判定:主表仍是三态,另两态作为两个显式的标记列。理由两条:五态矩阵在几百条诊断上不可评审(人读不完、标记也分不清);而把它们塞进三态里会让两类信息永久消失——观测态一旦被归进关窗,那一格的关窗代价此后再也没人看得见。★ 这一判定是本课归纳的,⛔ 不是本课程体系既有的分类。

工程量级。观测态的判定⛔ 不计入运行频次账的分子——那个分子的定义是「完成一次完整的置码判定」,而观测态按定义不进故障码状态机(这本账的分子分母与符号在第 2 讲整节展开)。⇒ 观测次数必须单独记一列,与运行频次账并排交付,否则观测态会伪装成关窗。延迟判定态则必须写明结果归属哪一个操作循环。

易错点。把观测态当成「先这么放着以后再说」。它必须带一个显式的退出条件——回流数据攒够多少、什么时候回来重判、由谁判——否则它会变成一个永久的灰色地带,那比直接关窗更糟:关窗至少在账上是可见的,而一个没有退出条件的观测态在任何一张报表上都不出现。

1.9 「切阈值」这一态的边界当场划死:本课只判该不该切

是什么。矩阵格里合法的内容是三态之一加一句判据,⛔ 不是一个数。判「该切」是本课的活;切到哪个值一律不进本课的矩阵

为什么。使能窗口矩阵与阈值标定表是两份在不同时间、由不同角色维护的文档。同一个阈值在两处各写一遍,第一次改动之后两处就不一致——而不一致时没有任何一道检查会报错:车上跑的是标定表那一份,矩阵那一份只在评审时被人读一遍。⇒ 这不是体例洁癖,是同一个量在两处各存一份必然漂移,而漂移之后没有任何信号。

工程量级。矩阵格里唯一允许出现的「数」是切换到哪一套标定集的编号或名称——那是一个引用,⛔ 不是一个值。

易错点,与它现场的正确答法。评审现场被问「那切到多少」,当场在矩阵上补一个数——那一刻正是漂移开始的时刻。正确回答是一句话:「这一格判该切,切到哪一套标定集见引用,取值由 K5-07 诊断与保护阈值的整定、验证与复验 那侧的责任人给。」这个回答不比补一个数慢,而且它把问题送回了唯一有资格取值的那张表。

本讲交出三样东西(第 2 讲要在它们上面接一本账):

  1. 列的全集表——每列一行:列名 | 本列改变的是前提还是散度 | 单列或不单列的理由;
  2. 行的分组表——每组一行:组名 | 这一组共同依赖的物理前提(一句话),行首保留条目级编号位;
  3. 使能窗口矩阵主表——无空格,每格填三态之一加一句物理判据,右侧外挂「观测态」与「延迟判定」两个标记列。

⚠ 这三样交出来之后,最容易被跳过的恰恰是最贵的那一步:判为「关窗」的那些格,它们的代价此刻还没有任何人记账。第 2 讲就从这里接上——先把八列里最难判的四格逐格判透,再把关窗代价算成一本可以核对的账。

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

会员专属

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

查看会员方案