TMS BOOK · ACADEMY 讲义

冷却侧执行器需求生成与协同仲裁:电子水泵/冷却风扇/AGS

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

K3-08 冷却侧执行器需求生成与协同仲裁:电子水泵/冷却风扇/AGS

课程代码 K3-08 · 板块 K 控制、软件与标定 / 控制策略与算法 时长 约 4.0 小时(7 讲) 前置 K3-01 整车热管理控制策略总览与模式管理;G5-01 电子水泵结构、扬程—流量匹配与选型;E4-02 多合一冷却回路共用与温度协调;K3-05 PID/前馈/增益调度控制实战(推荐先读(非硬前置);本课只定分程的排序依据,交班点与重叠带的机制在那门) 本讲义定位 讲师授课蓝本 / 学员自学讲义,是 K3-08 大纲的完整展开版


按任务导航

你手上的事 直接看 还要配
给一条新接进来的热请求定折算链与类别 第 1 讲:三段折算链的输入、来源与出错方向 第 2 讲(判它说的是「至少」还是「最多」)
排一张需求合成表、判哪几路有否决权 第 2 讲:七列结构、高选/低选判据、否决权白名单 第 7 讲(补齐非行驶态与负向请求那几行)
汇一条泵转速可下发包线并交给策略层 第 3 讲:包线四条边界的形态、优先级与禁带跨越 第 2 讲(包线上界与限值上界来源不同,取小)
判某个工况该加风扇还是该开格栅 第 4 讲:边际代价的分子分母、v* 求法、三项抵扣项 第 3 讲(不配包线,最优转速可能下发不了)
定 after-run(续转)的触发、退出与时长上限 第 6 讲:三类场景分开定判据、双保险退出、量纲换算 第 3 讲(与暖机共用同一条包线)

本课不覆盖:迟滞带三项下界与最小驻留的整定原则 → K3-01 整车热管理控制策略总览与模式管理;分程控制的交班点与重叠带 → K3-05 PID/前馈/增益调度控制实战;代价函数骨架与权重整定 → K3-07 能量最优的整车协调控制;气蚀、最低稳定转速、保底流量三条边界的机理 → G5-04 泵的气蚀、空气分离与可靠性 G5-01 电子水泵结构、扬程—流量匹配与选型 B4-03 热管理对续航、NVH、成本的系统性影响;结温降额曲线的构造 → K1-02 执行器驱动:电子阀/泵/风扇/压缩机 PWM;禁带的结构来源与声品质指标 → G6-02 风扇 PWM 调速与噪声品质控制 G6-04 冷却风扇总成的结构可靠性、耐久与失效分析 L6-05 整车级热管理 NVH:噪声目标分派、静态工况验证矩阵与多源归属仲裁;开度—ΔC_d 关系与风洞数据 → G7-03 前端进气量、格栅开度与散热能力匹配 G7-04 主动进气格栅(AGS)设计与控制策略;整域 run-on 编排与 12V 能量预算 → K3-11 热管理域的上下电时序、run-on 编排与休眠期能耗预算;停充续冷与桩侧协商 → D4-03 充电过程温控策略与充电功率协同;降级等级体系与可用模式矩阵 → K5-02 热管理故障处理与降级策略;信号失效识别、滤波去抖与置码 → K1-01 热管理传感器信号处理与故障诊断 K5-01 OBD/UDS 诊断与故障码(DTC)设计;泵—阀联动的切换时序 → K3-09 冷却液回路模式切换的执行时序:泵—阀联动、断流窗口与切换序列表;两张交付表的静态体检 → K3-13 模式表/场景表与仲裁规则的静态体检:可达性、死锁与切换质量。★ 以及不给的数:任何一个转速门限与档位边界、迟滞带与最小驻留的取值、气蚀/成膜/保底流量三条下界的数值、结温降额曲线、禁带的位置与宽度、v* 的具体数值、兜底档与跛行全速的进出门限、静音让步的三个量、12V 允许亏电量——由本项目自己的部件规格书、实测与标定给出(数值化 → K6-08 电驱与前端散热回路标定(BEV),标定量类型与试验设计 → K6-01 热管理标定流程与工具(INCA/CANape)),⛔ 本课一个数都不给;本课给的是表的形状、判据的结构,以及拿到那些数的路

引言:风扇一直在窜档,而水温一次都没越限

最难查的那一类问题单,现象常常长成这样:同一车速下冷却风扇反复上下窜档,冷却液温度却从头到尾没有越过任何一条限值;抱怨集中在低速蠕行与红灯起步那一段;台架复现不出,仿真也复现不出。

拿到这张单子的人,接下来会做的动作几乎是固定的——找出抖得最凶的那一路,把它的迟滞带加宽、最小驻留加长。这个动作还会「看起来有效」:窜档周期确实变长了、次数确实变少了。于是继续加宽,直到温控精度也开始不达标,而三份单路分析报告各自都写着「本路无异常」——谁都没说谎。

⇒ 它不是一次整定失败,是一次分层错误。抖动不在任何一路里,它在合成之后:两路热负荷相近时赢者交替,输出就在两档之间来回甩,而每一路各自都「没抖」——这也解释了台架为什么复现不出,台架只跑单路(案例本体、给定输入与整改三步在第 2 讲走一遍)。

本课要交付的,就是让这一层可见、可判、可交付的那一套东西:两根钉子、两条反着来的常识,和一条从头贯到尾的主链。

钉子①:冷却侧三个执行器只有一套需求生成与仲裁口径

电子水泵、冷却风扇、主动进气格栅(AGS)的需求生成不是三套逻辑;after-run(续转)、微流量聚热暖机、静音让步、诊断兜底与跛行全速,也不是第四套逻辑。它们全都是同一条主链上的东西——同一张需求合成表上的行、同一条可下发转速包线上的约束、同一张执行器稳态出力优先级表上的格子,区别只在权重与可让度。这三张表,就是本课的三件交付物。

图1 冷却侧需求生成与仲裁的主链结构图。一条自左向右的主链,五个方框依次为请求源、量纲折算(每路一条链)、合成(需求类高选 max/限值类低选 min)、包线 clip(落进 n_lo 到 n_hi 之间且不进禁带)、下发。下发框引出三条并行下行线,各带独立文字标签:n_out 本帧下发的转速、i* 赢者标识、j* 生效限值标识并附 t_active,j 生效时长计数。主链上方另接四个分支入口箭头,各带标签:after-run 续转、微流量聚热暖机、静音让步(负向请求)、诊断兜底与跛行全速,四条箭头分别接在请求源框与合成框上,图上不画任何绕过主链的旁路。主链下方三个交付物方框——需求合成表、可下发转速包线、执行器稳态出力优先级表——各以细引线连到它在链上的位置;最右侧竖排第 1 讲至第 7 讲七个讲次标签,各以细引线连到它负责的环节。结构示意图,不含任何数值,不得据图读取任何转速、时长或功率。
图1 要读出两件事:一,四类非常规请求(续转、暖机、静音让步、诊断兜底与跛行)是主链上的分支入口,⛔ 不是绕过主链的旁路,更不是另起的一套逻辑;二,你手上的任务落在链的哪一段,就从右侧对应的那一讲进来。图中箭头表示「先做哪一步、谁约束谁」,⛔ 不表示报文流向、管路走向或时序长短,框的大小与位置不表示任何比例。「把四类非常规请求画成同一条主链上的分支入口而不是旁路」这一做法为本课归纳。本图为定性结构示意,不含任何数值,⛔ 不得据图读取任何转速、时长或功率。

另起一套的代价不是多写代码,是标定量与验证矩阵翻倍;而两套门限必然漂移,漂移之后没有任何一道回归发现得了——两套各自都自洽,各自的评审也都会通过。所以本课对暖机、对续转、对静音让步都不另立一份专用转速表,只换请求的权重与可让度。

⚠ 由此有一条要先说死:⛔ 不得把「装了 AGS、上了双风扇、换了大流量泵」当成冷却侧策略——那是一份物料清单。策略是上面那三张表;而本课交付的是表的结构与每一格判据的来源,格子里的数一律不给(整车数值化 → K6-08 电驱与前端散热回路标定(BEV),标定量类型与试验设计 → K6-01 热管理标定流程与工具(INCA/CANape))。

反钉子:每一条规则都必须加在它该在的那一层上

⛔ 本课最容易被读反、也最贵的一句是:「这一路在抖,就把这一路的迟滞带加宽、最小驻留加长。」

它读起来天经地义,因为迟滞与最小驻留确实是防抖工具——只是它们是单路内的工具,约束的是「本路的值不许频繁变」;而合成之后的抖动来自「哪一路当赢者」这件事频繁变,那是路与路之间的量,单路工具管不到。⇒ 把某一路的迟滞加宽,只是把赢者交替的周期拉长;把某一路的驻留加长,反而延长了「已经输了还被按住」的时间。而它带来的现象——周期变长、幅度不变——最容易把排查引向 PI 增益与传感器噪声,于是一轮整定白走。

同一个形状在本课至少出现三次,三次的共同点是每一层单看都合规

图2 规则加在哪一层的三个同型实例。三条横向并列的链片,每条左半为加错层、右半为加对层,中间以竖虚线分开,左半各带一个禁止记号、右半各带一个对勾。实例①迟滞:左侧每一路请求各挂一个迟滞带与最小驻留图元后再进合成框;右侧各路无记忆,迟滞带与最小驻留各一套挂在合成后的 n_out 与赢者标识 i* 上。实例②禁带:左侧一根无刻度转速轴上把禁带下沿当成包线上界端点,禁带以上整段涂灰并标被封掉;右侧同一根轴上禁带画成区间内部的一个洞,洞两侧仍可用。实例③兜底:左侧兜底档从合成框外直接连到执行器、绕过包线 clip 框;右侧兜底档是包线内的一个具名档位,经同一个 clip 框下发。每条实例右端各写一句错在哪一层。结构示意图,无刻度、无数值,不得据图读取任何转速或时长。
图2 要读出的判断是:这三件事错的不是规则本身,而是规则被加在了错的那一层。★ 特别要读实例②左半——那段被封掉的高转速区,在包线检查、限幅检查与单路检查里全部是合规的,这正是它难被发现的原因。三条实例为本课归纳的同型失败模式,⛔ 不是任何标准或既有课程的既有结论;左半三格是被点破的错误画法,⛔ 不得脱离其禁止记号与「错在哪一层」那一句单独引用。转速轴无刻度,禁带的宽度与位置不代表任何平台。本图为定性结构示意,⛔ 不得据图读取任何转速或时长。
  • 迟滞加在合成之前:每一路都「没抖」,抖动只出现在合成结果上;
  • 把 NVH 禁转速段当成包线的端点:禁带其实是包线内部的一个洞,当成上界处理会把禁带以上的整段高转速区封掉,高温工况直接欠散热;
  • 兜底档绕过包线直接下发全速:全速档若落在禁带内、或超过当前的结温降额上界,兜底本身会触发第二重保护,形成「保护打保护」的极限环。

★ 今天就能用的一条——拿到「某个执行器在抖,或者转速上不去」的问题单,先按下面三问分层,再谈整定:

先问 判据 判出来之后的下一个动作
单路能不能复现? 只跑一路不抖、多路同时才抖 抖在合成之后 ⇒ ⛔ 别再动任何一路的迟滞,去看赢者交替(第 2 讲)
加宽之后是幅度小了还是周期长了? 幅度不变、只有周期变长 你调到的是赢者交替的节拍 ⇒ 把各路自带的那几套迟滞撤掉,合成后只留一套
这一帧到底是谁在压? 报不出压制者的标识 ⇒ 先把下面那个三元组补上,⛔ 别靠逐路屏蔽去猜

三问全部不需要任何数值,也不需要上台架——只看规则加在合成之前还是之后、加在包线之内还是之外。⚠ 射程要写清两条:这条说的是「规则加在哪一层」,⛔ 不是「迟滞没用」——迟滞是必需的,只是全课只有一套,且必须在合成之后;而如果单跑一路它自己就在抖,那不属于本条,该处理的是这一路把自己的请求量离散成档时的门限,⛔ 不是再去合成层找原因。

钉子②:合成层的输出永远是三元组,⛔ 不是一个转速数

每一帧真正要下发的,不只是那个转速值:

图3 合成层输出三元组的判读图。画面中部一个合成汇合点图元,多路请求线汇入后依次经 max、min、clip 三个算子,由它向下引出三条并行下行线,每条各带独立文字标签与单位:n_out 单位 rpm,本帧下发的转速;i* 赢者标识,枚举量,表示是哪一路需求决定了这个数;j* 生效限值标识,枚举量,表示是谁在压,并挂一个计数器图元 t_active,j 单位 s,表示该限值源已连续生效多久。画面右侧另画一个对照分支:同一个汇合点只引出 n_out 一条线,下方写出标定端与售后端各自看到的现象——转速上不去只能靠逐路屏蔽去猜、分不清工况正常受限与传感器漂移误限,整块用禁止记号标出。左下角另标一个被禁止的实现:把 j* 做成布尔量「是否受限」,带禁止记号。结构示意图,i* 与 j* 是枚举量、t_active,j 是计数量,图上不含任何平台数值,不得据图读取任何转速或时长。
图3 要读出的判断是:每一帧下发的是三元组而不是一个转速数;少了赢者标识与生效限值标识(以及它的生效时长),现象存在而记账为零。★ 特别要读出 t_active,j 比 j* 本身更常被漏掉——只有标识而没有计数时,一次几十毫秒的瞬时受限与一段持续几十分钟的受限,在数据里长得一模一样。三条下行线是同一帧的三个输出,⛔ 不表示时间先后。「同帧下发赢者标识与生效时长计数」这一要求为本课归纳。本图为定性结构示意,⛔ 不得据图读取任何转速或时长。

产物规格(合成层每帧的下行内容,四项缺一不可):

类型与单位 它回答的问题
n_out 转速 [rpm] 这一帧给这个执行器下发多少
i* 枚举量 哪一路需求决定了这个数(赢者标识)
j* 枚举量 谁在压(生效限值标识)
t_active,j 计数 [s] 这个压制者已经连续压了多久

没有后三项,标定端看到「转速上不去」只能靠逐路屏蔽去猜,售后端也无法区分「工况正常受限」(该压)与「传感器漂移误限」(不该压)。本课开头那起风扇窜档,正是因为缺了这两个标识,一次合成层的毛病被误诊成 PI 参数过激。

★ 这一条的性价比是全课最高的:三项全是枚举量与计数量,不含任何平台数值 ⇒ 它是本课少数「可以完整交付、不需要任何标定」的东西。两条易错:⛔ 不许只在低选那一处输出 j*——包线 clip、禁带跨越、速率限、最小驻留未到、估计器置信度不足,同样会让转速上不去,全部要有自己的枚举值;⛔ 也不许把 j* 做成布尔量「是否受限」,那等于只告诉人「有人在压」而不说是谁。

副反钉子:三个执行器没有固定的省电次序,次序随车速翻转

⛔ 第二条容易被读反的常识是:「泵最便宜、风扇次之、AGS 最贵(或最便宜),照这个次序写死就行。」

先把口径立住:排序比的是边际代价 λ_cost,k = 每多排走一份热所要多付的整车电功率(W 电每 W 热),⛔ 不是三者的绝对功耗;分母也⛔ 不是回路里搬运的热,而是排到环境的那一份 Q̇_reject(前端散热器与机舱自然对流之和)。口径一换,结论就变了:

  • 泵与风扇按相似定律走,电功率随转速三次方增长(P ∝ n³,来源是相似定律本身、非平台数;⚠ 泵与风扇是两条不同的曲线,⛔ 不共用一个系数);
  • AGS 的账不在执行器电耗(一次动作、瓦级),在开启之后的气动功率增量 ΔP_aero = ½·ρ_air·ΔC_d·A·v³(ρ_air 空气密度、ΔC_d 风阻系数增量、A 迎风面积、v 车速;公式内一律取 SI 单位,车速用 m/s),随车速三次方增长。

一个 ∝ v³ 与一个 ∝ n³ 必然相交。 于是高车速段 AGS 是最贵的一档而不是最便宜的,低车速段它的气动代价随 v³ 一并趋零。★ 翻转这件事本身不依赖任何平台数,只有交叉点落在哪里才需要标定——第 4 讲把它算成交叉车速 v*,并交成(车速 × 热负荷)平面上的一条分界线加迟滞带,而不是一个门限。

读者会做错的动作有两个方向,且都「看起来有道理」:正向是把一条固定次序写死进代码,在高速段用最贵的一档去换散热;反向是把「AGS 贵」平移到低速段,在低速高热负荷时把格栅留在关闭位、只顾加风扇——而全关时风扇上游被堵,加转既无风路也换不到散热。⇒ 低速段这两者是串联前提关系(先给风扇一条风路,再谈风扇转速),⛔ 不是两个可互换的档。⚠ 也⛔ 不得据此写成「低速一律先开格栅」这样的全称句:全关是否真的堵死风路,取决于残余漏风的等效泄漏面积(G7-03 前端进气量、格栅开度与散热能力匹配)。

本课怎么保证表上不缺一整类行:七个全集,每个都做两问自检

本课的三件交付物都是「表」,而表最典型的失效不是某一格填错,是整整一类行根本不存在——不存在的行,看起来和「不适用」一模一样。所以本课先画全集再逐项核对,共七个:冷却侧执行器 · 请求源(需求合成表的行)· 泵转速包线的边界 · 需求落在包线之外时的处置 · after-run 的触发场景 · 一次续转靠谁结束 · 限值源枚举(也就是 j* 的取值域)。每个全集都当场回答两问:我沿什么线索数的?有没有不在这条线上、却同属这个集合的?

三处最贵的拓类各写一句就够你受用:

  1. 请求源沿「谁会发热」数——数不到非行驶态(车已经停了:续转、微流量聚热、预约预热预冷、充电中),也数不到负向请求(静音让步、能效让步、动作次数节流:它们要求执行器少动,方向与其余各路相反),而后者恰恰是最容易被做成一个开关的那一类;
  2. 包线的边界沿「转速轴」数——数不到速率限(导数维)· 动作次数配额(次数维)· 最小驻留(时间维)· 功率预算(功率维)。⇒ ★ 只交出上下界就说包线交付了是漏项:那四条同样决定「这个目标值现在到底能不能达到」;
  3. 限值源沿「有哪些限值」数——数不到「值没到限而斜率被限」「最小驻留未到」「估计器置信度不足致包线整体退保守」这三种同样让转速上不去的形态。它们缺席时的表现最难查:转速上不去,而生效限值标识报空——现象存在而记账为零。

⚠ 还有一条纪律先说清:未列入的项⛔ 不得默认当成禁止或不存在,一律显式成行。最典型的是服务/标定模式请求(诊断仪强制驱动、下线检测、售后强制排气流程)——它绕过常规仲裁,不写它不等于它不会发生,只等于没人测过它。⚠ 另外,全集里标为「只给类型与去向」的那些项,本课只写它是什么、归哪门课,⛔ 不给限值、不给等级号、不给条款内容。

第 1 讲 合成的第一步是量纲折算:三段链、三条链,以及每一段做错时结果偏向哪一侧

多路热请求要变成一个可下发的泵转速,绝大多数实现的第一行代码是 n = max(req_1, req_2, req_3)。这一讲要说清的是:在冷却侧,那一行几乎总是错的,而它错得非常安静——代码照样跑、照样出一个数、没有任何静态检查会报错,直到台架上某一路温度压不住、而转速指令看起来一切正常。本讲六节:1.1 立论,为什么不折算就做 max 等于在比不同量纲的数;1.2 把折算链拆成三段,指出三段里只有第一段是一个模型,也正是它最常被一句「热负荷已知」带过;1.3 说清泵 map 根本不是单变量函数,以及漏订阅它的附加自变量时误差偏向哪一侧;1.4 把泵、风扇、AGS 三条形态各异的折算链并排放好,写死两条禁止互套的规则;1.5 交代哪两个量本课当既定外部输入、以及收不到它们时往哪一侧缺省;1.6 给出「原生量与折算后量两栏都留痕」这条落地成本极低而收益极高的要求。

本讲开头一次说清的记号与口径(全课通用,后面各讲不再重复)转速一律记 n,单位 rpm,⛔ 全课不用 rad/s。泵与风扇同用这个记号,靠上下文或 n_pump / n_fan 区分;首次出现处必须写清是哪个执行器。⛔ 全课禁止写「转速=某个数」——本课所有转速量都是平台相关量。 ② 热、电、能量三类量的记号分列:热流量一律 Q̇ [W 热],电功率一律 P [W 电],累积能量一律 E [W·h 或 J]。⛔ 热与电不得相加、不得约分;⛔ 禁止用 Q 表示体积流量——体积流量记 Q_v [m³/s]、质量流量记 ṁ [kg/s]。 ③ 三个同为温度类、极易互相顶替的量,全课分列温度裕量=部件温度距其限值还剩多少 [K],是折算链第一段的输入;ΔT_allow,i=冷却液在该部件进出口的允许温升 [K],是折算链第二段的分母;T_in,allow=下游部件允许的最高进口水温 [℃],是外部输入(1.5 交代它由谁给)。⛔ 三者任何一处不得互相顶替。 ④ 「散热量」只认排到环境的那一份:Q̇_reject 指越过整车边界排到环境的热(前端散热器 + 机舱自然对流),⛔ 不是回路里搬运的热 ṁ·c_p·ΔT。这条是「加泵到底能不能换到散热」这个判断的口径根,1.4 兑现。 ⑤ 需求与限值语义相反。n_req,i 说的是「至少要这么多」,限值类的 n_lim,j 说的是「最多只能这么多」,⛔ 两者不得混进同一次 max/min。本讲只生成 n_req,i,两类怎么各走各的算子在第 2 讲。

1.1 不折算就做 max,等于在比四个单位互不相同的数——而它照样能算出一个结果

是什么。冷却侧收到的每一路热请求,原生量纲互不相同。四路典型的写法摆在一起就能看出问题:

请求源 它的原生量与量纲 它想说的事
电驱侧(电机 + 电控) 允许入口水温余量 [K] 我这一路的进口水温还剩这么多余量
电池侧 电芯最高温超限度 [K] 我最热的那颗电芯已经超了这么多
加热器侧 保底流量 [L/min] 我至少要这么多流量才不干烧
除霜侧 风量档 [档] 我要这一档风

这四个数不可比。要合成,每一路都必须先各自过一条 map,折成同一个执行器量(泵转速 n_pump、风扇转速 n_fan,或 AGS 开度 θ_AGS),折算之后得到的那个量记 n_req,i——第 i 路请求折成的需求转速。合成的骨架式因此长这样:

n_req,i = M_pump( Q̇_i/(ρ·c_p·ΔT_allow,i) ; 系统阻力曲线, T_cool, 老化状态 ) 分号后面那三个附加自变量为什么一个都不能省,见 1.3。

为什么这一步最常被跳过。因为跳过它不会以任何形式表现为一个错误:四个浮点数比大小,语法合法、运行不报错、输出是一个看起来完全正常的数;单元测试里它有确定的返回值,代码评审时那一行短得像不值得看。⇒ 量纲折算是本课里唯一一件「不做也照样有输出」的必做事,所以它必须靠表结构和评审清单来保证,⛔ 指望谁在写那一行时想起来是没用的。

工程量级。⛔ 本课一张 map 的内容都不给——各路 map 由部件供应商数据表、1D 流网仿真或台架实测给出,换一个平台整套作废。本课给的是三件换平台仍然成立的东西:链的段数每段的输入与它由谁给每段做错时结果偏向哪一侧

图4 量纲折算链结构示意图。左侧竖排四路请求的原生量与量纲各占一行:电驱侧「允许入口水温余量 [K]」、电池侧「电芯最高温超限度 [K]」、加热器侧「保底流量 [L/min]」、除霜侧「风量档 [档]」;四行之间画一条被禁止记号打断的比较连线,旁注「⛔ 单位不同,⛔ 不得直接比大小」。右侧把电驱侧一路展开成四栏逐级折算:栏1 原生量 温度裕量 [K],栏2 需散热量 Q̇_i [W 热],栏3 需流量 ṁ [kg/s] 与 Q_v [m³/s],栏4 需求转速 n_req,i [rpm]。每栏下方标它靠什么得到——栏1到栏2 是部件产热与热阻链/UA 关系(一个模型),栏2到栏3 是能量守恒 ṁ=Q̇/(c_p·ΔT_allow,i) 与 Q_v=ṁ/ρ,栏3到栏4 是泵 map M_pump——并各标来源去向课号。其余三路在右侧折叠成三条细链并标「各自过自己的链」。四栏下方另有一条留痕带,标「四栏都记,⛔ 不只记首尾两栏」。本图为结构示意图,不含任何数值,⛔ 不得据图读取任何温度、热量、流量或转速。
图4 这张图要读出的判断是:合成之前每一路必须各自过一条链,折成同一个执行器量才可比;而四栏里只有第一段是一个模型,正是它最常被一句「热负荷已知」带过。★ 特别要读出的是左侧那条被打断的比较连线:电驱侧与电池侧的原生量纲碰巧都是 K,图上仍被禁止记号隔开——一个是水温余量、一个是电芯超限度,热阻链与时间常数完全不同,量纲相同⛔ 不等于可比。本图为结构示意图,不含任何数值,⛔ 不得据图读取任何温度、热量、流量或转速。

今天就能用的:一句三十秒自查。拿到任意一路请求,把它写成「一个数 + 一个单位」,再看它要进的那次 max:

· 同一次 max 的两个入参单位不同 ⇒ 这次合成本身就是事故,⛔ 不必再往下调参数,先补折算链; · 这一路写不出单位(只说「它要求高一点」)⇒ 这一路请求根本还没定义好,回上游去要它的原生量与量纲; · 单位相同也先别放心——追问一句「这两个 K 是同一个物理量吗」,答不上来就按不可比处理。

⚠ 判出来之后的下一个动作:给这一路补一条折算链,并在需求合成表上给它登记「原生量与量纲」和「折算 map 标识」两列(表的列结构与登记规格在 1.6)。

易错点。① ⛔ 不得把「请求」直接理解成「转速请求」——除霜侧提的是风量档,它对泵没有任何直接诉求,折算之后才可能经冷凝压力那条路落到泵上;把它当成一个转速数直接扔进 max,是把一个根本不针对这个执行器的请求塞进了合成。② ⛔ 不得因为两路的原生量纲碰巧都是 K 就直接比较:电驱侧的 K 是水温余量(冷却液侧的量,时间常数由回路容积与流量定),电池侧的 K 是电芯超限度(电芯本体的量,中间还隔着电芯到冷却液的整条热阻链)——同一个「1 K」在两路上换算成的需求转速可以差出很远。

1.2 折算链是三段,而只有第一段是一个模型——它最常被一句「热负荷已知」带过

是什么。一路请求折成泵转速,中间是三段,逐段留痕就是四栏:

温度裕量 [K] → 需散热量 Q̇_i [W 热] → 需流量(ṁ=Q̇_i/(c_p·ΔT_allow,i),Q_v=ṁ/ρ)→ 查泵 map 反算 n_req,i [rpm]

三段各自的依据与输入来源:

从什么到什么 靠什么完成 输入由谁给
第一段 温度裕量 [K] → Q̇_i [W 热] 一条热阻链或 UA 关系(部件产热、部件到冷却液的热阻、允许温升)——★ 这是一个模型,不是一行公式 部件产热与热阻链:回路温度协调层 E4-02 多合一冷却回路共用与温度协调、需求逐级分解口径 B1-02 需求逐级分解:整车 VTS → 系统 SSTS → 零部件
第二段 Q̇_i → ṁ [kg/s]、Q_v [m³/s] 能量守恒:ṁ=Q̇_i/(c_p·ΔT_allow,i),Q_v=ṁ/ρ c_p 与 ρ 的查用口径 A1-07 热管理常用工质的热物性与查用、配方相关性 H7-01 冷却液(乙二醇型)配方、性能与劣化。⚠ 取值时必须写清浓度与温度,⛔ 不得用纯水值代替乙二醇水溶液;ρ 取当前液温下的值,⛔ 不取常温值
第三段 Q_v → n_req,i [rpm] 泵 map:M_pump(Q_v; 系统阻力曲线, T_cool, 老化状态) 供应商数据表 + 1D 流网仿真(GT-SUITE/KULI)或台架实测

为什么偏偏是第一段被跳过。第二段是一行公式、第三段是查一张表,两者都「看得见」——写代码时躲不开,评审时也一眼认得出。只有第一段是一个模型:它需要部件产热的估计、部件到冷却液的热阻链、以及允许温升的裁定,三样都不在控制器里。于是它常被一句「热负荷已知」带过,Q̇_i 直接从别人给的信号里取——而这门课最上游的那条假设,就此从来没有被写下来过。后果不是算错,是无法追责:温度压不住时,没有人说得清 Q̇_i 是哪个模型在什么工况下给的、它的适用范围到哪儿为止。

工程量级。⛔ 本课不给任何一段的数值。允许温升 ΔT_allow,i 与温度裕量都取决于部件温限与热阻链,须由实测或系统仿真确定;能拿来用的替代物是反解式——由部件温限与热阻链反推允许温升,以及去向——回路温度协调层的裁定见 E4-02 多合一冷却回路共用与温度协调,需求逐级分解口径见 B1-02 需求逐级分解:整车 VTS → 系统 SSTS → 零部件

今天就能用的:把第一段的假设做成一条可交付的记录。每一路请求的第一段,至少要能填出这四行,填不出的那一行就是这一路真正的风险所在:

Q̇_i 由哪个模型给(在线估计器 / 离线 map / 上游部件直接上报); ② 它在什么工况下标定的,出了这个范围它是外插还是钳位; ③ 它的输入里有没有本回路自己的量(若有,这条链是闭环的,要防自激); ④ 它给不出时的缺省值往哪一侧(本量的保守侧是更大的需散热量)。

易错点。① ⛔ 三段的输出必须逐段留痕——原生量、Q̇_i、Q_v、n_req,i 四栏都记;只记首尾两栏时,一旦结果不对就无法判断是哪一段错了(登记规格见 1.6)。② ⚠ 第二段分母里的 ΔT_allow,i 是冷却液在该部件进出口的允许温升,⛔ 不是第一段那个温度裕量——两者同为 K 而含义完全不同,把温度裕量代进分母会得到一个量纲对、物理错的流量。

1.3 M_pump ⛔ 不是单变量函数:它还吃系统阻力曲线、液温与老化状态,而漏掉它们的偏差方向是确定的

是什么。把第三段写成 n=M_pump(Q_v),读者会以为查一张静态表就够了。完整写法是:

M_pump(Q_v; 系统阻力曲线, T_cool, 老化状态)

同一个体积流量 Q_v,在阀位变了、液温变了或泵老化之后,对应的转速不是同一个数。三个附加自变量各自的机理:

图5 泵特性曲线族与系统阻力曲线的对照图。横轴为冷却液体积流量 Q_v [m³/s],纵轴为扬程 H [m],两轴均不打刻度值、仅标方向。图上画三条等转速泵特性曲线(n₁ 小于 n₂ 小于 n₃,各条随流量增大而下降)构成曲线族,以及两条系统阻力曲线 H=K_sys·Q_v²(实线为阀位 A、虚线为阀位 B,两条 K_sys 不同)。在同一个目标体积流量 Q_v,目标 处画一条竖线,标出它在两条系统曲线上分别落到不同的等转速曲线上,得到两个不同的 n;同一竖线上另有一支箭头,标注「泵老化后/低温高黏时,同一 Q_v 需要更高的 n」。右上角一个自变量清单框写 M_pump(Q_v; 系统阻力曲线, T_cool, 老化状态),四项各带一条引线指到图上对应的元素。本图为示意图,两轴无刻度,曲线不代表任何平台的实际泵曲线或阻力曲线,⛔ 不得据图取值。
图5 这张图要读出的判断是:同一个体积流量对应的转速不是一个数——阀位、液温与老化状态各改一次,读出来的 n 就不同;把 M_pump 当一张静态表查,正是折算链系统性偏低的来源。★ 特别要读出的是那支方向箭头:偏差的方向是确定的(偏低),⛔ 不是随机误差 ⇒ 它不会在多次运行里自己抵消掉,只会稳定地让每一路的需求都比实际需要的低一点。本图为示意图,两轴无刻度,曲线不代表任何平台的实际泵曲线或阻力曲线,⛔ 不得据图取值。

★ 图上那三条等转速曲线的族关系来自泵与风扇的相似定律Q_v ∝ n、H(扬程 [m])∝ n²、P(功率)∝ n³(来源等级=手册/G5-01 电子水泵结构、扬程—流量匹配与选型 第 4 讲)。⚠ 它的适用条件必须同处写明:同一台泵、同一条系统曲线;大范围变转速时会因效率随转速变化、以及低雷诺数下损失特性改变而偏离 ⇒ 它给的是量级预估,⛔ 不是标定结果,跨度大的调速点仍以实测曲线为准。⚠ 还有一条容易被顺手用错:泵的 P ∝ n³ 与风扇的 P ∝ n³ 是两条不同的曲线,⛔ 不得共用一个系数。

为什么偏差方向是确定的,这一点比偏差大小更值钱。三段里任一段用了老化前/常温的 map,合成结果就系统性偏低:老化后同转速流量下降、低温高黏时阻力上升,两者都让「实际需要的转速」高于按常温新泵算出来的值。⇒ 方向确定意味着两件事——第一,它不会在多次试验里被平均掉,用统计手段找不出来;第二,它在整车上表现为「新车台架全过、跑了两年夏天开始压不住」,而那时没有人会回头怀疑折算链。

工程量级。⛔ 不给任何修正系数——修正量是平台相关量。本课给的是该订阅哪几个输入不订阅时误差偏向哪一侧

该订阅的输入 不订阅时的后果 偏差方向
当前阀位/回路构型(换算成系统阻力曲线标识) 跨模式沿用同一条系统曲线 视模式而定,⛔ 不可假定为小量
当前液温 T_cool 低温高黏工况下阻力被低估 需求转速偏低
老化状态(里程/运行小时/流量残差) 全寿命用新泵 map 需求转速偏低,且随寿命单调恶化

今天就能用的:把折算链的验收工况写死。

折算链的验收必须在「寿命末期 + 最恶劣液温 + 最不利阀位」这一组工况下再做一遍——常温新件合格⛔ 不代表全工况合格

这条纪律与泵的气蚀校核要求在「最高液温 + 最高海拔 + 最大流量」组合下做(见 G5-04 泵的气蚀、空气分离与可靠性)是同一条:两者都是「一个随工况与寿命单调漂移的量,验收点必须取在漂移的那一端」。⚠ 判出不合格之后的下一个动作:不是去调 PI,而是把老化修正做成 map 的一个显式维度或一路在线补偿,并在需求合成表上把这一路的 map 标识改成带版本的(1.6)。

这条什么时候不成立:若这一路的执行器长期工作在包线下界附近(例如只承担保底流量),寿命末期的偏低量可能整条被下界吸收掉,此时验收要看的是下界本身还成不成立,⛔ 不是 n_req,i 准不准。

1.4 风扇与 AGS 各有自己的折算链,⛔ 不得套用泵的三段

是什么。三个执行器共用一套需求生成与仲裁口径,但折算链是三条,不是一条——它们的中间量、约束与可分辨率各不相同:

泵(液侧) 风扇(空气侧) AGS(开度)
起点 温度裕量 [K] 温度裕量 [K] 所需进气量 [m³/s]
中间量 需散热量 Q̇_i [W 热] → 体积流量 Q_v [m³/s] 排到环境的散热量 Q̇_reject [W 热] → 所需迎面风量 [m³/s] ——
那张表 泵 map M_pump(Q_v; 系统阻力曲线, T_cool, 老化状态) 风扇 map(转速—风量—功率) 开度—进气量关系
输出 n_pump [rpm] n_fan [rpm] θ_AGS [%]
输出的形态 连续 连续或分档 受机构限制的离散或准离散量,可分辨开度有限且带回差
表的内容由谁给 供应商数据表 / 1D 仿真 / 台架 G6-01 冷却风扇(无刷)气动与选型,须台架实测 G7-03 前端进气量、格栅开度与散热能力匹配,须风洞或 CFD
图6 三条折算链的并列结构示意图。三条自左向右的折算链各占一行并各带独立标签。链①泵(液侧):温度裕量 [K] → 需散热量 Q̇_i [W 热] → 需体积流量 Q_v [m³/s] → 泵 map → n_pump [rpm]。链②风扇(空气侧):温度裕量 [K] → 排到环境的散热量 Q̇_reject [W 热] → 所需迎面风量 [m³/s] → 风扇 map → n_fan [rpm]。链③AGS(开度):所需进气量 [m³/s] → 开度—进气量关系 → θ_AGS [%],链尾另标一个离散化图元,注明「机构可分辨开度有限且带回差」。三条链之间画两个禁止符号并各写一句互套后果:「⛔ 把泵的链套到风扇上=把回路里搬运的热当成排到环境的热」「⛔ 把 AGS 开度当连续可调量去做 PI」。每条链尾另标一句「⛔ 三条链的输出不得互相顶替:泵转速到位不等于散热到位」。本图为结构示意图,链上不含任何数值,⛔ 不得据图读取任何风量、流量、转速或开度。
图6 这张图要读出的判断是:三条链的中间量、约束与可分辨率各不相同,⛔ 不得互相套用;套错时最直接的那个错,是把「回路里搬运的热」当成了「排到环境的热」。★ 特别要读出的是链②的中间量——它是风量而不是液流量;这一格换错,就会把一次空气侧受限的工况误判成「泵不够」,于是一路加泵转速,而温度纹丝不动。本图为结构示意图,链上不含任何数值,⛔ 不得据图读取任何风量、流量、转速或开度。

为什么套用泵的链会错,而且错得看不出来。泵折的是液侧,它搬运的是 ṁ·c_p·ΔT;风扇折的是空气侧,它管的是 Q̇_reject——越过整车边界排到环境的那一份热。两者不是同一个量:空气侧受限时(低速无迎面风、机舱热浸、格栅全关),泵搬得再快,Q̇_reject 也几乎不动,回路里只是把热在部件之间重新摊了一遍。⇒ 把泵的链套到风扇上,等于用「搬运量」冒充「排出量」,算出来的风扇转速在数值上完全合理,只是它解决不了眼前这个问题。

工程量级。⛔ 不给风扇 map 与开度—进气量关系的任何数值——两者都须台架、风洞或 CFD 实测。本课给的是三条链的段数、中间量与各自的输出形态

今天就能用的:两条写死的禁止规则 + 一句现场判据。

禁止一:三条链的输出不得互相顶替。「泵转速已经到位」推不出「散热已经到位」——后者受空气侧限制。判据一句话:抬泵转速之后 Q̇_reject 有没有跟着动;没动就说明卡在空气侧,继续加泵只是白耗电并把泵推向包线上界。 ⛔ 禁止二:AGS 开度不得当成连续可调量去做 PI。多数机构的可分辨开度有限且带回差(见 G7-04 主动进气格栅(AGS)设计与控制策略)——把它当连续量闭环,积分项会在两个可达开度之间来回积,表现为格栅反复动作,而每一次动作都记在动作次数账上。正解是把 AGS 的输出定义成一组具名开度档,档间切换按第 2 讲的驻留与迟滞规则管。

⚠ 判出「卡在空气侧」之后的下一个动作:不是继续在泵这一路上找,而是转到风扇与 AGS 这两条链上判该动谁——两者的边际代价随车速翻转,判法在第 4 讲。

1.5 回路温度目标与 T_in,allow 是外部输入:本课取来即用,⛔ 不在控制层再定一次

是什么。折算链第一段要用到的回路温度目标,以及第 5 讲最小泵功寻优要用到的下游部件允许最高进口水温 T_in,allow,都由多合一回路的温度协调设计给出(E4-02 多合一冷却回路共用与温度协调)。本课把它们当既定输入,⛔ 不重定、⛔ 不给取值。

为什么控制层不能自己再定一次。这两个量是回路设计层的裁定结果:它们要同时兼顾串并联拓扑、各支路的温度梯队与换热器面积,是在整条回路上算出来的。控制层若再定一次,就会出现两套目标温度互相打架、而两套各自都讲得通的局面——设计侧说「按我的梯队这里只能到这个温度」,控制侧说「按我的裕量还能再往上」。这类分歧的处置早有硬规则:同一个量在两处各算一遍,就必须写明偏差带与超差处置(见 K3-01 整车热管理控制策略总览与模式管理)。而在本课的场合,更省事的做法是根本不在控制层算第二遍

工程量级。⛔ 本课不给这两个量的任何取值。本课要求的是把它们写成显式的外部接口,接口规格四件缺一不可:

接口规格 要写清什么
谁给 哪个功能/哪条报文给出,回路设计层的哪一版裁定为准
更新周期 它是常量、随模式切换更新,还是逐帧刷新
失联时的缺省方向 收不到时取哪一侧的保守值——⚠ 对 T_in,allow 而言,保守侧是更低的允许进口水温(因而要求更大流量),⛔ 不是更高
失联时的标识 缺省值一旦生效必须置一个可观测标识并计时,⛔ 不许静默使用

今天就能用的:一条现场判据。拿到一份冷却侧策略,问一句——「这一版里,允许进口水温这个数是谁定的?」

· 答得出「回路设计层的某一版裁定」⇒ 接着查上面那四件规格填全了没有; · 答「我们自己按裕量取的」⇒ 这里已经有两套目标了,去把偏差带与超差处置补上,或者干脆撤掉控制层这一套; · 答「代码里写死的一个常量」⇒ 它连失联缺省都谈不上,因为它从来就没有在线过

易错点。① ⛔ 收不到 T_in,allow 时不得取上次值继续跑——「限值不释放」是这类接口两个典型错之一(见 K3-01 整车热管理控制策略总览与模式管理):上一帧的值可能是在一个已经消失的工况下给的,继续用它等于把一条过期的约束永久钉在系统上。② ⚠ 缺省方向最容易取反:直觉上「保守=把限值放宽一点免得误限」,而对本量恰好相反——T_in,allow 是一个上限,取得越低要求的流量越大,保守就是取低。

「往哪一侧倒」这个问句在本课有一个通用答案,后面各讲会反复用到它缺省方向一律朝「越界后果可逆」的那一侧倒——多排一点热,代价是多花的电,今天没省下明天还能省;少排一点热,代价可能是一次回不来的局部沸腾。⚠ 全课用到这条判据的完整清单只在第 5 讲 5.5 那张表上列一次(小结按小节号复述同一份),本节 ⛔ 不展开。

1.6 折算之后,原生量与折算后量两栏都要留痕——否则出了问题无法回溯是哪一段错

是什么。两处留痕,形态不同但缺一不可:

  • 需求合成表上(静态):每一行都要有「原生量与量纲」和「折算 map 标识」两列。这张表是本课的第一件交付物,它的完整列结构在第 2 讲给全,本讲先把这两列钉住。
  • 运行期观察量上(动态):同一路请求的原生请求量折算后的 n_req,i 必须能被同时观测到,且两者要落在同一时基上。

为什么这两栏值这个钱。合成层只看得见 n_req,i。当某一路的 n_req 明显偏高或偏低时,只看这一个数,永远判不出是哪种毛病;把原生量一起看,判断当场就成立:

现场看到的 原生量正常? 结论 下一个动作
n_req,i 偏高/偏低 原生量也异常 请求本身异常 查这一路的传感器与上游估计器
n_req,i 偏高/偏低 原生量正常 折算 map 用错或用了错版本 查标定表版本、阀位与液温订阅、老化修正是否生效

⇒ 两种毛病的整改动作完全不同,而只看 n_req,i 时它们长得一模一样。★ 这也是本讲性价比最高的一条:它是信号表与标定观察量层面的要求,不含任何数值,落地成本只是多两个观测量,收益是把一整类「查不下去」的问题变成一次当场判断。

今天就能用的:折算 map 标识的登记规格。

⛔ 只写「泵 map」等于没写——同一台车上,老化修正前后就是两张表。标识必须可追到版本,至少含三段:哪个执行器/哪条链的哪一段 · 哪张表 · 哪一版(版本随标定发布走,⛔ 不随代码分支走)。 ⇒ 自查一句:拿着这个标识,能不能在标定数据库里唯一定位到那一张表?定位不到,这一列就没起到作用。

⚠ 这一列同时是电驱与前端散热回路标定量清单的输入之一(K6-08 电驱与前端散热回路标定(BEV))——它在本讲被要求写下来,不是为了本讲好看,是因为下游标定要按它逐张点名。

易错点。① ⛔ 不要只在离线的表上留痕、运行期观察量只挂 n_req,i——现场能看到的那一半才是真正在用的那一半。② ⚠ 两栏若不在同一时基上(原生量按慢周期上报、n_req,i 按控制周期刷新),一次瞬态里它们会对不上,读出来的「原生量正常而 n_req 异常」可能只是采样错位;⇒ 两栏要么同周期,要么各自带时间戳。

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

会员专属

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

查看会员方案