K3-03 电池温控策略(加热/冷却/保温切换)
课程代码 K3-03 · 板块 K 控制、软件与标定 / 控制策略与算法 时长 约 4.0 小时(7 讲) 前置 K3-01 整车热管理控制策略总览与模式管理;D1-02 电芯温度不均与温差控制目标;D3-01 电池加热策略:PTC/热泵/液热;D1-06 电池热状态在线估计:从稀疏 NTC 到 T_max 与 ΔT_pack 本讲义定位 讲师授课蓝本 / 学员自学讲义,是 K3-03 大纲的完整展开版
引言:本课接手的,是「电池回路已经归你用了」之后的那一段
一、定位:本课交付四样,明确不交付两样
在整车热管理的控制链上,K3-01 整车热管理控制策略总览与模式管理 负责的是整车模式集合、模式之间的互斥矩阵、跨子系统的仲裁优先级,以及压在最上面那一层限值保护。它每一拍输出的是一张模式表:电池回路此刻该不该被激活、能分到多少冷量或热量(或者说压缩机的多少份额)、母线还剩多少功率预算。
本课从这张表的下一行开始。当「电池回路已经归本域使用」这件事被上层定下来之后,域内还剩四件事必须由本课交出来:
- 模式集合怎么建——状态有哪些、事件有哪些、每个状态对每个事件的去向是什么;
- 阈值怎么整定——冷却与加热的进入、退出条件取在哪,估计误差的余量怎么落进去;
- 切换瞬间怎么交接——水力侧、冷媒侧、控制器状态侧、上层接口侧各要交接什么;
- 效果怎么评——用哪几个指标、按什么口径统计,才能判一套模式策略是不是真的成立。
⛔ 有两件事明确不在本课:模式怎么选(整车此刻该进哪个模式)与跟座舱抢压缩机时谁让谁。这不是分工上的客气话,而是一条硬边界:仲裁需要的输入——可用冷/热量、优先级表、母线功率预算——本课根本拿不全。在这里凭手上这点信息重写一遍仲裁逻辑,写出来的东西必然与 K3-01 整车热管理控制策略总览与模式管理 矛盾,而矛盾会在整车联调时才暴露。
⇒ 本课与上层的接口是「三要三报」:向上要三样——被激活的模式行、冷/热量或压缩机的可用份额、功率预算;向上报三样——当前可提供的冷/热量、饱和标志、哪一条约束正在压制。第 6 讲会把「报」的这三样落到切换那一拍上;不报,上层的仲裁就是瞎的。
这里有两个最容易混的边界,先在引言里钉住:
- 限值保护层 ≠ 仲裁层。限值层管的是「不许越界」,仲裁层管的是「谁先分」,两回事。把本课要遵守的限值保护写成「跟座舱抢压缩机的优先级」,就等于用一条安全约束去参与资源分配,两边都会做错。
- 本课给结构与判据,K6-03 电池热管理标定 给取值、标定动作与安全评审流程。本课通篇会给你阈值式的形状、余量该落在哪、退出条件该由哪几个格子组成,但⛔ 一个限值都不给。想知道某个数在本平台上取多少、怎么在台架上标、标完谁签字,那是标定线的事,归 K6-03 电池热管理标定。
⚠ 顺带说明一条本课的阅读与写作规则,它对你自己写策略文档同样有用:每一讲动笔前先写一句「本讲交付什么、不交付什么」。本课七讲每一讲开头都有这句话;模式策略这类跨域的东西,边界不写在纸面上,就会在代码里被两个部门各写一遍。
二、钉子 1:本课判的不是温度,是一条分布上的三个泛函
打开任何一份电池温控策略文档,你看到的都是「T > 某值则冷却」这样的句子。这句话里藏着一个几乎从不被写出来的前提:那个 T 不是温度,是一个估计值。
量产包里的温度测点是稀疏的——几十上百个电芯,通常只有个位数到十几个 NTC。策略真正要判的三个量:
- T_max_cell——包内最热电芯温度;
- T_min_cell——包内最冷电芯温度;
- ΔT_pack = T_max_cell − T_min_cell——包内温差。
三个全都是由稀疏测点重构出来的估计量,一个都不是直接量到的。它们是同一条温度分布上的三个泛函,各自带着各自的误差。D1-06 电池热状态在线估计:从稀疏 NTC 到 T_max 与 ΔT_pack 已经把这三条误差算出来并点名交给本课:δ_est(T_max 的估计误差)、δ_ΔT(温差的重构误差)、Δ_drift(全生命周期漂移);传感器自身的误差 δ_sensor 另计。⛔ 本课不重算它们,本课的活是把它们用对。
⚠ 符号约定先说清:下文用 δ 泛指这一族估计误差的量级;具体落到某一条门限上时必须写明是 δ_est、δ_ΔT 还是 Δ_drift,⛔ 不许用一个笼统的「精度」数去卡三条门限——三个被判量的误差量级不同、下游门限的性质也不同,用一个数必有一条被放行错。
由此得到本课的第一根钉子,它是一条顺序:
先出估计误差 δ 的量级 → 再定阈值余量与迟滞带 → 最后定最小驻留时间。⛔ 反过来做出来的迟滞带形同虚设。
这个顺序不是流程建议,是被物理钉死的。理由很直白:迟滞带挡的是「信号在阈值附近来回穿越」,而 δ 描述的正是估计值相对真值的偏差幅度。如果你先拍了一条迟滞带宽 ΔT_hys,事后才发现 δ 比它还大——那么在真值完全不动的情况下,估计值自己就能穿过整条带。这条滞环在物理上不存在,它只是标定表里的一个数字。第 3 讲会把这句话变成一个可以判真假的不等式。
从这根钉子往下有三条推论,全课反复要用:
- 余量与滞环是两个落点,⛔ 不许互相顶替、⛔ 不许两处都叠。余量项(δ_est、Δ_drift,以及空间维的 ΔT_max,pack)落在阈值偏置上,它改变的是「什么时候开始动作」;滞环带宽只负责抗信号抖动,它改变的是「动作之后什么时候停」。两处都写一遍就是重复计入,只写滞环则空间维裕量整个丢掉。
- ΔT_pack 是两个估计量之差,误差按平方和传播,而 T_max 与 T_min 往往不同源(一个落在末端支路、一个落在边缘冷区)。它的重构误差 δ_ΔT 常与温差门限 ΔT_limit 同量级 ⇒「温差超限触发冷却」这条判据可能在误差带内根本不可分辨。正解只有两条:先把 δ 收下来,或者把判据改成分区内温差与分区间温差分开判。⛔ 发现判据不灵就把 ΔT_limit 放宽,那是把「不可分辨」改成「不触发」。
- 估计通道置信度掉档时,正确动作是收紧门限——冷却提前介入、加热窗口下限抬高、ΔT_limit 压低——⛔ 不是停冷却。估计不可信时,安全侧的做法是缩小可运行区间,而不是维持原区间、更不是把保护关掉。
三、钉子 2:一套模式策略要成立,三层必须同时交出
第二根钉子讲的是「什么算一套完整的策略」。答案是三层,而且是同时成立的三个必要条件,⛔ 不是三个先后步骤、更不是三选一:
- 状态层:状态集合互斥且迁移完备;
- 判据层:每个模式的进入与退出条件成对定义;
- 作用力层:模式内部还有一层连续控制,能在触发之后继续加大作用力。
⚠ 这三层的并列关系是本课归纳的,⛔ 不是从上游课程直接继承的既有结论;本课在每一层都会给出可当场检查的判据,你也可以据此去核任何一份现成的策略文档。
缺哪一层,策略就在某个工况下没有可施加的作用力。三种塌陷各有一个具体形态:
- 作用力层塌陷——温差判据只写进了触发条件,而执行侧只有「开/关冷却」一档。于是判据是有的,超限之后系统再没有任何可加大的作用力,判据形同虚设。这是本课要花整个第 4 讲去修的那一类:ΔT 不只是一个触发条件,它是被控量。
- 状态层塌陷——「加热/冷却/保温三模式互斥」这句话是对的,但它只是运行态内部的性质。它既不覆盖未激活态、过渡态、降级态,也不等于迁移完备(每个状态对每个事件都有确定去向)。一张三行三列的表看起来完备率是 100%,那是假的 100%:行头没收全、列头也没收全。没收进来的组合在代码里等价于事件被静默丢弃,现场表现是「条件到了但没反应,也没有故障码」,是最难归因的一类。
- 交接层塌陷——模式变了,而水力侧、冷媒侧、控制器状态三层没有交接。最典型的是加热与冷却互切之后,同一个水泵、同一个温度环的误差符号翻转,执行器从 PTC 换成 Chiller,而积分项既没有反算也没有清零 ⇒ 切换那一拍作用力朝反方向饱和。
四、反钉子:「充电场景更保守」不等于「充电时压得更冷」
本课最容易被读反、而且读反之后会做出一个方向完全相反的具体动作的,是下面这句话:
⛔ 被点破的错句:「充电场景的阈值『更保守』,所以充电时要把电池压得更冷。」
它之所以危险,不在于难懂,而在于它很容易在标定台上被执行。要把它掰回来,必须把加热侧与冷却侧拆开看:
(甲)加热侧。充电场景的加热下限确实比行驶场景更高,即 T_heat_on(快充) > T_heat_on(行驶)。这一侧防的是析锂——低温高倍率下负极电位跌破析锂线(承 D4-04 高倍率工况下的温差与析锂风险控制)。「更严」在这一侧表现为把电池拉得更暖。
(乙)冷却侧。充电场景的冷却进入阈值确实更早介入。但它防的是 T_max 对应的寿命衰减与热失控裕度(大电流下产热速率高,承 D4-03 充电过程温控策略与充电功率协同),与析锂无关。
⇒ 两侧的「更严」指向相反的温度方向:加热侧往上抬,冷却侧往前挪。把它们压成一句「充电时更保守=更冷」,加热侧那一半就被整个抹掉了。⚠ 而且这两侧分属两条互不相干的判据链(析锂 vs 热安全与寿命),⛔ 不得互相推导——它们只是恰好都在充电场景被收紧。
照那句错话做,会发生什么:过冷把包内最冷的那节电芯推向析锂窗口。注意两个后果落在温度分布的两端——析锂发生在最冷芯上,寿命衰减统计在最热芯上。只盯着 T_max 一路往下压,ΔT_pack 反而会被拉大(降设定水温主要压 T_max,可能反而拉大包内温差,第 4 讲会接着 D4-03 充电过程温控策略与充电功率协同/D1-02 电芯温度不均与温差控制目标 的温差分解讲这件事)。⛔ 充电中的析锂由 ΔT_pack 门限与充电功率 derating 管(承 D4-03 充电过程温控策略与充电功率协同/D4-04 高倍率工况下的温差与析锂风险控制),⛔ 不由「把冷却压得更狠」管。
同族的第二个形态(第 3 讲会当场点破):
⛔ 被点破的错句:「临界点反复启停 ⇒ 加宽滞环 ⇒ 把开启阈值往上抬。」
它与主形态是同一个失败模式——把一条安全侧的要求执行到了不安全的那一侧。抬高开启阈值之后,起冷点被推过安全限,而现场表现(不抖了)恰恰像是修好了。正解只有两条:压低关闭阈值来加宽滞环,以及加最小运行/最小停机时间。
给你两个可以当场自查的硬判据。看到下面任何一个动作,就是这条反钉子被读反了:
- 把快充档的冷却目标水温设成全场景最低值;
- 在标定台上把 T_cool,on 往上抬来消抖。
⚠ 上面那两句错话,在本讲义里只会以被点破的错句形式出现在本引言、以及第 3 讲、第 7 讲的误区语境里;⛔ 全篇任何地方都不会以正面表述复现它们。你在自己的策略文档里也该这样处理——被点破的错句一旦以正面语气出现一次,读者就有五成机会只读到那一次。
五、本课给结构,⛔ 不给数
先把预期对齐:这门课几乎不给数。三个估计误差、四场景的加热与冷却阈值、迟滞带宽、四类最小时间、ΔT_limit、保温期的泵间歇 duty、评估指标的目标值——全部是平台相关量,取决于电芯化学体系、包的结构与热容、测点布置、冷板与流量分配方案、以及整车的功率与噪声预算,须由本平台的实测与仿真标定给出。⛔ 本课不给一个可以拿去当验收依据的门限,也⛔ 禁止抄上一代平台的数。
这不是回避,而是本课的交付形态:本课给的是结构、判据与来源链——限值从哪来、余量怎么折、偏置怎么落、退出条件由哪几个格子组成、哪个指标必须带哪种口径。结构对了,你才知道要改一个阈值该回到哪门课去重算,而不是在标定台上直接改数。
本课涉及的三份国家标准——GB 38031、GB/T 31467-2023、GB/T 18386.1-2021——同理:本讲义只写编号与去向,⛔ 不写条款内容、不写限值、不写等级号与试验参数。⚠ 版次与年份以现行目录为准,引用前须核。⛔ 尤其不得把其中任何一份写成三态切换阈值或 ΔT_limit 的限值来源——本课的门限一律由本项目自己的寿命预算与析锂包络反推。
六、全课路线
七讲的排法,正好对应第三节那三层,外加一条从「静态取值」到「不确定性」的递进:
- 第 1 讲 三种模式与状态集合:三个模式的被控量、判据来源、执行器集合、评价指标四样全不一样,⛔ 不是「同一个温度轴上的三档」;可动手段必须分成真执行器/设定值/射程外三栏;并把状态全集与事件全集这两份行头列头交出来(对应状态层)。
- 第 2 讲 四场景阈值分档:被控量口径先声明,冷却触发阈值的来源链,加热触发按行驶/快充/慢充/静置停放四档分设,退出条件与进入条件成对定义(对应判据层的静态维)。
- 第 3 讲 滞环、最小驻留与估计余量:迟滞带与最小驻留分工不同、⛔ 不可互相顶替;余量落在阈值偏置;δ 与 ΔT_hys 比大小;置信度掉档时的逐档保守动作(对应判据层的不确定性维,也是钉子 1 的落地处)。
- 第 4 讲 ΔT 从第二判据变成被控量:均值判据与温差判据是并列两条链;冷却模式内部每周期可动的四个量各自的作用方向;ΔT_pack 的分解决定该动哪个手段;目标压不下去时先声明硬约束、再按写死的顺序退让(对应作用力层)。
- 第 5 讲 与充电和行程请求的耦合:预约预热提前量为什么是一个偏乐观侧的下界;并网的功率账与离网的能量账是两本账;慢充档必须单列、⛔ 不得与静置停放同档。
- 第 6 讲 切换瞬间的无扰交接:水力侧、冷媒侧、控制器状态、上层接口四层各交接什么;低温进入加热模式的功率爬坡与流量确认握手;每个过渡态都必须配超时与三选一去向(对应交接层塌陷那一条)。
- 第 7 讲 效果评估与调优:七项指标与两条统计口径;手段与评价在此闭环;老化漂移要不要在线修正,以及那条红线——阈值一旦允许在线修正,就必须同步回答「修正量本身谁来监视」。
最后是案例与动手做:一条冬季夜间预约次日快充的完整决策链,把两根钉子与反钉子在同一条链上合拢;以及三份你可以直接带回工位的交付物——四场景阈值表、一条温差判据及其执行器响应、一张保温→加热→冷却的模式迁移时序图。
⚠ 本课多处会指向 K3-08 冷却侧执行器需求生成与协同仲裁:电子水泵/冷却风扇/AGS、K3-09 冷却液回路模式切换的执行时序:泵—阀联动、断流窗口与切换序列表、K3-11 热管理域的上下电时序、run-on 编排与休眠期能耗预算、K4-05 模式状态机的完备性核对与可验证性设计、K5-05 在役健康度与渐变衰减辨识:从车端信号到服务决策、K6-03 电池热管理标定、K6-07 热泵与多模式切换标定、K3-04 热泵与多通阀协调控制 等课题。这些是去向——告诉你那件事归谁判、该去哪里取输入;它们的内容不在本课射程内,本课也不代它们下结论。
第 1 讲 三种模式的目标与执行器:互斥不等于完备
这一讲交付三样东西:三种模式各自判什么量、用什么手段;一份可动手段的分栏清单;以及状态机的行头与列头——也就是「状态集合」与「事件集合」这两份全集。⛔ 这一讲不交付阈值该取在哪(第 2 讲)、不交付迟滞带与估计余量的整定(第 3 讲)、不交付模式内部的连续调度(第 4 讲)、也不交付切换瞬间的交接(第 6 讲)。之所以要把「有哪些状态、有哪些事件、有哪些手段」单独拎出来先讲,是因为后面几讲全部作用在这三份清单上:清单少一项,后面再精细的整定也够不着它——现场表现不是算错一个数,而是某个工况下你根本找不到还有什么可以动。
1.1 三种模式判的不是同一个量,⛔ 不是一个温度轴上的三档
把加热、冷却、保温摆在一起,最省事的理解是「冷了加热、热了冷却、不冷不热就保温」——一个温度轴上的三档。这个理解要在第一节就拆掉,因为三个模式有四样东西全不一样:被控量、判据来源、执行器集合、评价指标。
⚠ 先把一条贯穿三态的东西提出来,免得下面的对比被读成「温差只归冷却」:分布的宽度(ΔT_pack/包内均匀性)是三个模式共有的被控量,⛔ 不是冷却态专有的——加热同样会把温差张开(离加热路径远的电芯升温慢,第 4 讲 4.1 易错点② 专门拆这一条),保温期停泵久了温差也会扩大(1.5)。三态真正各不相同的,是它们各自盯的那个位置量:
- 冷却态:被控量是 T_max_cell(位置量)与 ΔT_pack(宽度量)两个,不是一个;判据来源是寿命衰减预算与热安全边界;执行器是泵、压缩机请求、Chiller 侧 EXV、支路阀那一组;评价看最高温压住没有、包内温差压住没有。
- 加热态:位置量是 T_min_cell,判据来源是析锂窗口与可用功率窗口——它回答的是「现在能不能这么用」,与冷却侧那套「这么用久了会不会衰减」不是同一条判据链;⚠ 而宽度量 ΔT_pack 同样要设判据(第 4 讲 4.1:⛔ 不许只在冷却侧设温差判据、加热侧不设,那等于默认「加热不会破坏均匀性」——一个从来没有被测试覆盖过的默认值);执行器是热源与交付路径那一组;评价看有没有按时把最冷端拉进窗内、包内温差有没有被拉开、为此花了多少能量。
- 保温态:它甚至没有一个目标温度——它没有位置量。被控量是热损速率与包内均匀性——一个是速率,一个还是那个宽度量,两个都不是「某个温度等于某个值」这种形式;它的评价指标也换了一套,保温期真正能被事后审计的是唤醒次数与静置耗电(折成 Wh),温度反而不是(这一层在第 7 讲展开)。
为什么这一条要放在最前面:一旦把三态理解成温度轴上的三档,你就会去画一条从冷到热排列的阈值线,然后会发现有两样东西没地方放。第一样是保温态——它跨整个可用窗口,在那条线上没有属于自己的区间,于是往往被塞成「加热阈值与冷却阈值之间那一段」;而那一段的真实含义是「什么都不用做」,跟保温模式要做的事(间歇开泵维持均温)完全是两回事。第二样是温差判据——ΔT_pack 根本不在温度轴上,它是分布的宽度而不是位置,一条一维的阈值线上画不出来。
工程量级上,三个模式各自的目标温度带与热损速率都是平台相关量,取决于电芯化学体系、模组结构与隔热方案,⛔ 本课不给数,须由实测与仿真确定。
两个易错点:①用一个「目标温度」把三态串起来——这么写之后,冷却与加热就退化成同一个温度环的两个方向,而它们的判据来源、可用执行器、失败后果全都不同;②忽略保温态的被控量其实是分布而不是标量,于是保温期只监视一个平均温度,包内温差已经扩大了也看不见。
1.2 冷却模式的执行器全集:按架构分两支,压缩机只在请求侧
冷却模式能动的东西按架构分两支:
- 间接液冷支:电子水泵转速(或占空比)、电池支路阀/比例阀开度、Chiller 侧 EXV 开度,再加上压缩机——但压缩机在本课只出现在请求侧。
- 直冷支:制冷剂直接进包内冷板,可动的是 EXV 开度与直冷阀路(换向、排气旁通)。
为什么要在这里就把清单列全:这份清单决定了第 4 讲「每个控制周期可动什么」那张表有几行。清单漏一项,后面的调度律就少一个自由度——而少一个自由度的表现从来不是报错,是某个工况下温差压不下去、而你翻遍策略找不到还有什么可以加大。
工程量级:各执行器的档位数、行程时间、最小动作间隔都是平台相关量,⛔ 不给数;本课只声明它们会进入调度律的约束集。响应表标定归 K6-03 电池热管理标定,阀与泵的本体特性与选型归 G4-04 比例阀/流量分配阀与回路调节/D2-07 电池包总成级热管理集成设计/B3-01 冷却液回路拓扑:串/并联、多回路耦合与模式切换。
两个易错点:
①把压缩机写成本课可以直接指挥的执行器。本课发出的是「需要多少冷量」这个请求;转速环本身归 K3-02 空调温控与压缩机转速/过热度控制(制冷与制热两模式),跨子系统怎么分配归 K3-01 整车热管理控制策略总览与模式管理。这个区别的后果落在假设上:当成自己的执行器写,调度律就默认它随叫随到;而真实情况是它这一拍可能被分给了别的子系统,你的策略必须能在「拿不到」时仍然有可施加的作用力。
②在直冷架构上照搬液冷那套调度律。直冷侧没有「冷却液目标温度」这个设定值,它的对应量是蒸发压力折算出来的板温(承 D2-02 电池直冷(制冷剂直冷)系统设计与控制)。两套的可动量不是一一对应的,直接搬过去会出现「指令发得出去、但下游没有这个环」的空指令。
1.3 加热模式的执行器全集必须包含直冷直热阀路,⛔ 不许只列三项
加热侧的全集不要沿「有哪些加热器」这条线索去数,要按热源 × 交付路径两维铺开:
- 热源侧四类:电阻加热(PTC)、热泵取热、电机余热、脉冲自加热。
- 交付路径三类:冷却液冷板、电芯贴附加热件、制冷剂直入包内板。
两维铺开之后,「制冷剂直入包内板 + 冷板反做冷凝器」这一格就是直冷直热的热侧,靠换向与排气旁通实现(承 D2-02 电池直冷(制冷剂直冷)系统设计与控制)。⛔ 加热模式的执行器清单不许只列 PTC/热泵/液热三项:冷侧已经承认了直冷阀路是执行器,热侧是同一套硬件、同一组阀,没有理由在热侧把它划掉。
这一格恰恰是沿单一线索枚举最容易整类漏掉的那种:从「加热器」这条线索数,永远数不到「把冷板反过来用」——因为它不是一个加热器,它是一个阀路动作。漏掉的后果不是少一个候选方案,而是整个热侧的状态机缺了对应的状态与过渡态:阀在换向的那几秒系统处在哪个状态、换向没成功该去哪里,都没有地方写。
工程量级:各路径的可用加热功率与升温速率都是平台相关量,⛔ 不给数;热源与交付路径的选型权衡归 D3-01 电池加热策略:PTC / 热泵 / 液热/D3-02 脉冲自加热(交流自加热)低温快速升温,本课只消费「本平台有哪几路可用」这一个输入。
两个易错点:①在直冷直热平台上仍按「加热=开 PTC」写状态机;②把脉冲自加热当成一个普通执行器——它在加热的同时改变了产热源项,也就是说它会污染温度估计通道,这一层的后果在第 3 讲讲估计余量时还会碰到。
1.4 可动手段是三栏不是一栏:「设定值」不是「执行器」(本课补)
上面两节把执行器数全了,接着要做一件同样重要的事:把它们和「设定值」分开。这一条是本课补的——把可动手段分成三栏,⛔ 不许混在同一张表里:
(甲)真执行器(射程内,当拍生效):电子水泵转速/占空比;电池支路阀或比例阀开度;Chiller 侧 EXV 开度;直冷/直热阀路(换向、排气旁通);PTC 功率请求;热泵取热请求;脉冲自加热请求;保温期泵的间歇 duty。
(乙)设定值——⛔ 不是执行器(本课补;射程内,改的是下游环的目标):冷却液目标温度、目标板温、ΔT_limit 本身、分区档位划分。
(丙)射程外(只给去向):压缩机转速(本课只发请求,仲裁归 K3-01 整车热管理控制策略总览与模式管理、环内控制归 K3-02 空调温控与压缩机转速/过热度控制(制冷与制热两模式));冷却风扇与 AGS 同样只发请求——多路请求合成为单一执行器指令归 K3-08 冷却侧执行器需求生成与协同仲裁:电子水泵/冷却风扇/AGS,风量与噪声的权衡及档位设计归 C2-04 鼓风机与蜗壳设计:风量—噪声平衡,充电工况下的风扇约束归 E3-02 车载充电系统与高压配电盒热管理。⚠ 「只发请求」⛔ 不等于本课对它无话可说:4.7 那张退让表的第一级动的正是本课对风扇与压缩机发出的转速上限请求(请求侧的量),⛔ 不是直接指挥转速——这与压缩机的处理完全同型;座舱侧风量与混风门归 C6-01 双区/四区自动空调控制逻辑;加热器本体的功率调制、过温与干烧防护归 G9-03 加热器功率控制与温度保护;阀与泵的本体特性与选型归 G4-04 比例阀/流量分配阀与回路调节/D2-07 电池包总成级热管理集成设计/B3-01 冷却液回路拓扑:串/并联、多回路耦合与模式切换。
分栏的判据只有一条:当拍是否直接产生作用力。⛔ 不是按软硬件分,也⛔ 不是按有没有独立的报文分。
为什么必须分开:三样东西的时标、饱和行为与无扰要求完全不同。动甲栏是当拍生效、有物理限位(阀开到底就没有更多了);动乙栏要经过下游环的动态才生效,而且它改变的是下游环的工作点与有效增益——同一台泵在不同目标水温下的增益并不相同。把两者并列在一张表里,读者会以为自己有 N 个同质的自由度,实际当拍可动的只有甲栏那几个。
由此得到一条要求:动设定值时必须同时声明下游环是谁。改冷却液目标温度而不说清谁在跟踪它、跟踪得多快,这个动作的效果就无法预估,也无法在切换瞬间做无扰处理。
易错点:在第 4 讲的调度律里把目标水温与泵转速当成两个可以同时线性叠加的输入。两者的响应时标不在同一档上——一个当拍见效,另一个要等下游环走完自己的动态;具体相差多少属平台相关量,须实测辨识,⛔ 本课不给数。
1.5 保温模式⛔ 不是「什么都不做」:泵间歇 duty 由双约束夹出
保温模式最常见的实现是「关泵、关阀、等着」。这是错的:泵间歇运行维持包内均温是保温模式的正经动作,它有被控量(分布)、有执行器(泵的间歇 duty)、有代价(静置耗电)。
duty 与周期的定法有先后,两条约束的方向相反:
- 先按均温要求定最长停泵时间——停久了包内温差会扩大。这条给的是停泵间隔的上界。
- 再用整夜/整周的静置电量账(折成 Wh)校核唤醒频次付不付得起——唤醒太频,12V 静置电量预算扛不住。这条给的是停泵间隔的下界。
两条约束夹出来的中间那一段,才是可行的 duty 带。⇒ ⛔ 不许只算一头:只算电量账不算均温账,电是省下了、第二天温差扩大,一上电要先花一段时间均温,加热能耗与预热提前量双双失准;只算均温账不算电量账,均温做到了、12V 亏电。
还有一种必须显式承认的情形:两条边界相交,可行区为空。这时候正确的动作是回头改隔热或改预算,⛔ 不是在两条约束之间硬选一个——控制策略解决不了一个物理上不成立的要求,硬选的结果只是把违反哪一条藏起来。
工程量级:最长停泵时间与唤醒周期都是平台相关量(取决于包的 UA、热容与 12V 静置电流预算),⛔ 本课不给数、⛔ 不给周期数;定量方法与唤醒周期归 K3-11 热管理域的上下电时序、run-on 编排与休眠期能耗预算,隔热与 UA/时间常数归 D3-03 电池包保温设计与静置热损,本课不重讲。
第三个易错点值得单列:把「泵间歇」写成一个固定周期常数。它其实是环境温度与停放时长的函数——同一台车停在地库和停在露天,最长停泵时间不是同一个数,把它写死就等于在最不利的那一侧要么费电要么失温。
1.6 互斥 ≠ 完备:状态机里必须占一行的是八项
「三模式互斥」常被当成状态机设计已经站住的证明。它不是。互斥只约束状态集合自己(不会同时处在两个状态),而且它只是运行态内部的性质。
问对问题才数得对:要数的不是「有几种模式」,而是「状态机里必须占一行的是哪些状态」。按后一个问题数,是八项:
- 冷却态 —— 射程内,目标是压 T_max 与 ΔT_pack。
- 加热态 —— 射程内,目标是把 T_min 拉进可用温度窗;热源与交付路径选型归 D3-01 电池加热策略:PTC / 热泵 / 液热/D3-02 脉冲自加热(交流自加热)低温快速升温。
- 保温态 —— 射程内,目标是压静置热损并维持包内均温;UA 与时间常数归 D3-03 电池包保温设计与静置热损,唤醒周期与静置电量账归 K3-11 热管理域的上下电时序、run-on 编排与休眠期能耗预算。
- 未激活/OFF 态(本课补)—— 射程内:温度在窗口内、没有任何请求,三个模式都不进。⚠ 它与保温态的分界必须写清楚,否则两者在状态机上会挤成同一格:分界是一条守卫条件——是否已驻车并进入长时间停放。同样是「无请求 + 温度在窗口内」,短暂停车、随时可能再来请求时落 OFF 态(什么都不用做);进入长时间停放、需要主动维持包内均温时才进保温态(泵间歇 duty 要动起来,见 1.5)。
- 过渡态(本课补)—— 射程内:阀在走行程、压缩机在升速、加热器在功率爬坡、直冷阀路在换向。
- 降级态(本课补)—— 射程内:估计通道失配或置信度掉档时进入的保守模式;置信度档位定义与退出条件归 D1-06 电池热状态在线估计:从稀疏 NTC 到 T_max 与 ΔT_pack/K3-10 热管理在线状态与负荷估计:观测器整定、软测量置信度与退出条件,降级等级体系与资源仲裁归 K5-02 热管理故障处理与降级策略,本课只给电池域的档位映射与每档动作。
- 初始化/寻零态 —— 射程外,归 K3-11 热管理域的上下电时序、run-on 编排与休眠期能耗预算(域级次序)与 K4-05 模式状态机的完备性核对与可验证性设计(寻零期临时模式)。
- 热事件响应态 —— 射程外,归 K5-04 电池热失控早期预警算法/K5-02 热管理故障处理与降级策略;本课只标接口——它可以越过本课的闭环直接接管。
第 4~6 项是本课补的,各自不在「三模式」那条线索上的理由不同:第 4 项是默认落空的地方,第 5 项是有时长的中间态,第 6 项是由信号质量而不是由温度决定的态;第 7、8 项则是不由本课决定去留的态。
第 4 项要特别强调:⛔ 未激活态必须是显式的一行,不能是「哪个条件都不满足时自然落到的地方」。落空的地方没有名字、没有进入条件、也没有退出条件,因此不会有任何一条测试用例覆盖它——未列入的项不得默认当成不存在,默认值不会被测试覆盖。它的现场表现是最难归因的一种:条件到了但系统没有反应,也没有故障码。
1.7 事件也不只温度一类:本课交行头与列头,完备率判据归 K4-05
完备性的判据是「每个状态对每个事件都有确定去向,无死角、无二义」。注意它作用在状态 × 事件这张二维表上——所以光把行头收全不够,列头同样要收全。
沿「温度越阈」这条线索数,事件只有一类。全集是六类:
- 温度类:T_max/T_min/ΔT_pack 越进入阈或退出阈。射程内。
- 场景与请求类(本课补):插枪/拔枪、快充预约到点、行程开始、远程唤醒、驻车。射程内作为事件消费;预约调度本体归 D3-04 低温预热与出行预约热管理。
- 能量类(本课补):SOC 越门槛、12V 低压电量、外部电是否在位、桩功率预算变化。射程内作为守卫条件;能量账与门槛取值归 D3-04 低温预热与出行预约热管理/K3-11 热管理域的上下电时序、run-on 编排与休眠期能耗预算。
- 故障与置信度类(本课补):传感器失效、估计器置信度掉档、执行器不可用、相关诊断码置位。射程内作为事件;判据本体归 K1-03 传感器布置、冗余与信号可靠性/D1-06 电池热状态在线估计:从稀疏 NTC 到 T_max 与 ΔT_pack/K5-02 热管理故障处理与降级策略。
- 超时类(本课补):过渡态超时、最小驻留到期、保温唤醒周期到。射程内。
- 上层仲裁类(本课补):上层把压缩机分配给了别的子系统、母线功率预算收紧、限值保护层介入。射程内作为事件消费;仲裁本体归 K3-01 整车热管理控制策略总览与模式管理/K3-08 冷却侧执行器需求生成与协同仲裁:电子水泵/冷却风扇/AGS。
后五类的共同点是都不由温度触发。而一张只有温度列的模式表,这五类事件在表上连列头都没有——代码里等价于它们被静默丢弃。
于是就有了那个假的 100%:三行三列的表,格子确实全填满了,完备率看上去是 100%。它是假的,因为行头没收全、列头也没收全;完备率的分母是「状态 × 事件」,分母错了,比值就没有意义。
分工必须说清楚:本课交付的是一张可以直接填的表——行是上面那八个状态,列是这六类事件——以及每一格该填什么的电池域判据与守卫条件。⛔ 本课不给完备率判据、不做二义性消解(同一状态两条出边的守卫条件是否互斥)、不做不可达态与陷阱态的静态分析,这三样归 K4-05 模式状态机的完备性核对与可验证性设计。理由是两门课各写一遍必然出两套口径;而反过来,本课如果连行头列头都不交,那套核对方法就没有作用对象。⛔ 因此本课正文里不会出现「完备率必须达到多少」这类判据——那是 K4-05 模式状态机的完备性核对与可验证性设计 的判据,本课引用去向即可。
表怎么填,先看四个示范格:
- 冷却态 × 退出阈事件 → 保温态:显式建一条迁移,⛔ 不许落空到某个默认态(下一节专讲)。
- 过渡态 × 超时 → 重试/放行并标降级/回退进入前状态,三选一(电池域的实例在第 6 讲给)。
- 任一运行态 × 置信度掉档 → 降级态,动作是收紧门限(逐档动作表在第 3 讲给)。
- 任一态 × 热事件 → 由 K5-04 电池热失控早期预警算法 接管,它可以越过本课的闭环。
其余格子留白,而留白的语义必须写清楚:留白=还没定去向,⛔ 它不等于「不响应」。「不响应」是一个决定,必须显式写出来——否则它和「忘了」在表上长得一模一样。
1.8 「冷却刚结束转保温」必须显式建成一条迁移,⛔ 不许落空
边界工况里有一类切换特别容易被写漏:冷却刚结束转保温。
它容易漏,是因为形式上像是「冷却退出」这个动作的副产品——退出了,自然就落到保温去了。实际不是:冷却退出条件成立的那一拍,系统该去哪里由另一组条件决定——是否插枪、SOC 在哪一档、环境温度、有没有行程请求。所以它是一条带守卫条件的迁移,必须在表上显式占一格。
写成落空会得两种病:
第一种:边界温度上冷却与保温反复互切。两条判据各自独立、没有共同的迟滞——冷却按自己的退出条件退出,保温按自己的条件把泵开起来,泵一开包内温度重新混合、最热端回升,冷却又进来。⛔ 这一类抖动不是靠加宽冷却自己的滞环能治好的,因为抖动发生在两个模式之间,而滞环只作用在一条阈值线的两侧。整定顺序与滞环、最小驻留各自管什么,第 3 讲专门交代。
第二种:切进保温之后控制器状态没有交接。这条迁移上执行器集合变了(从泵+压缩机请求变成泵的间歇 duty)、被控量也变了(从压最高温变成维持均温),而温度环的积分项如果原样留着,保温的第一拍就带着冷却期的历史往一个已经不成立的目标上推。第 6 讲会在这条迁移上给「积分项该保留还是清零」的判据;它之所以要被单独拿出来讲,正是因为这条迁移最容易被整条忘掉。
⛔ 也不要把冷却与保温合并成同一个模式的两个子状态。两者的执行器集合与被控量都不同,合并之后第 6 讲那条积分项判据就无从写起——因为「切换」这个事件在模型里已经不存在了,而它在车上仍然会发生。
工程量级:这条迁移的守卫条件里每一个门槛(SOC、环境温度、插枪状态的判定时刻)都是平台相关量,⛔ 不给数;场景判定本身要有哪些守卫条件与去抖,在第 2 讲交代。
本讲小结:三种模式判的不是同一个量——冷却盯最热端、加热盯最冷端、保温盯热损速率,而分布的宽度(ΔT_pack)三态共有(加热侧同样要设温差判据,第 4 讲 4.1),⛔ 不是一个温度轴上的三档;执行器要按热源 × 交付路径两维铺开,才不会把直冷直热的热侧整类漏掉;可动手段分三栏(真执行器/设定值/射程外),判据是「当拍是否直接产生作用力」;保温⛔ 不是什么都不做,它的泵间歇 duty 被均温上界与电量下界夹出,可行区可能为空;而「三模式互斥」不是完备性的证明——状态机里必须占一行的是八项、会引起迁移的事件有六类,本课交行头、列头与电池域守卫条件,完备率判据与二义性消解归 K4-05 模式状态机的完备性核对与可验证性设计。
后面还有 6 讲正文 · 关键公式 · 案例拆解 · 常见误区 · 动手做