TMS BOOK · ACADEMY 讲义

整车热管理系统级联合仿真

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

J1-04 整车热管理系统级联合仿真

课程代码 J1-04 · 板块 J 仿真分析 CAE / 一维系统仿真 时长 约 4.0 小时(7 讲) 前置 J1-02 制冷剂建模;J1-03 水路建模;J1-01 1D 建模范式 本讲义定位 讲师授课蓝本 / 学员自学讲义,是 J1-04 大纲的完整展开版


按任务导航

你手上的事 直接看 还要配
排查一个拼起来就振荡或发散的整车模型 5.3–5.4:先做零成本分诊定层,再按十类成因逐类处置 4.3–4.4(迭代那一档用不用得上)· 6.4(三种抖动同形)
写一条切分面的接口规格/评审别人的接口表 1.3–1.4:跨界要传的九类量 + 一张七项契约卡 2.1–2.2(空气侧那两个量不能当常数灌)
填工具的耦合设置页(宏步、迭代开关、松弛) 4.7:四种组合选哪一格 · 5.5:宏步上界三条约束取最小者 3.4(先确认这套模型里有没有宏步)
审一份整车能耗或能量流结果 7.3 与 7.5:闭合校核怎么做、口径错在残差里的形状 7.6(四项寄生功的口径与包含关系)
把控制器接进来做闭环 6.2–6.4:指令与反馈的接口语义 + 三个时间基准对齐 4.1(调度顺序决定谁拿到的是新值)

本课不覆盖:五个子模型本身怎么建、怎么标定(制冷剂 J1-02 制冷循环一维建模与制冷剂物性 · 水路 J1-03 冷却液回路水力与热仿真建模 · 座舱 J1-08 座舱一维多节点热模型与参数辨识(含 CFD→1D 分区映射) · 混动与增程的发动机热子模型 J1-10 混动/增程整车热管理 1D 联合仿真:发动机热子模型、起机—热双向闭环与 CD/CS 工况驱动 · 燃料电池电堆与 BOP J1-09 燃料电池系统一维建模与水/热耦合仿真)· 求解器内核那一层(积分器容差与选型、一致初值的反解、离散事件定位与步长回缩、代数环的通用排查 J7-08 一维系统模型的数值内核与「跑飞」排查:DAE/代数环、步长与容差、一致初值与守恒自检)· 控制策略本体与仲裁、迟滞整定 K3-01 整车热管理控制策略总览与模式管理,执行器硬件电气规格 G12-03 执行器硬件接口与电气规格 · 代码级一致性、实时性指标、故障注入 K4-03 MIL/SIL/HIL 验证流程,模型降阶 J7-02 模型降阶(ROM)与控制导向建模 · 与试验的相关性分层判据与不达标诊断 J7-01 仿真—试验相关性验证(Correlation),续航折算与夏季分项账 B4-05 高温季整车能耗账与制冷侧续航拆解(夏季掉电的分项账),由能量流推出的架构决策 B4-01 整车能量流与热量流协同分析 · 以及任何一个具体的目标值、参量阈值与本底限值(宏步取多大、收敛容差取多少、松弛因子取多少、残差合格线、前端风量与进风温度、四项寄生功的量级)——它们由本项目自己的模型构成、切分面位置与所引标准的现行版本给出,⛔ 本课一个数都不给。

引言:五个都跟台架对得上的子模型,拼出来的整车模型可能一条结论都不成立

你手上的子模型是逐个验过的:制冷循环跟台架对得上,水路的流量分配与压降对得上,座舱降温曲线也对得上。把它们拼成一台「数字整车」跑起来,结果却对不上——降温时间偏了一截,或者某条温度曲线开始有规律地上下摆。这时候最自然的下一个动作,是回到子模型里去调物理参数:换热器的传热能力、电池内阻曲线、金属热质。

本课要拦的就是这个动作。

把几个各自准确的子模型摆在一起,多出来的不是规模,是两样此前根本不存在的东西:切在哪儿(哪几条边被断开、由谁跟谁交换),以及每一块在往前推的那一段时间里,看到的边界是哪个时刻的值。联合仿真的实质是把一个方程组切成几块分别解,切开之后,每一块在自己那一段里看到的边界都是「旧的」。⇒ 整车模型的可信度由这两个建模决策决定,⛔ 不由任何一个子模型的精度决定。 把每个子模型做得更准、网格更密、内部容差调更紧,一样都不会减小这个误差——它由「边界值有多旧」决定,与子模型准到什么程度无关。

★ 本课最容易被读反的一条:「我用的是 Gauss-Seidel(串行)调度,后一个子系统用的是前一个刚算出来的新边界 ⇒ 那就已经是强耦合了 ⇒ 宏步内的迭代开关不用管」。于是模型在强相互作用工况下振荡或发散时,去改子模型的物理参数。

这个动作贵在两处。第一,你改的是一个本来正确的物理模型——改完之后它在别的工况下也不再是原来那个通过了验证的模型了。第二,它常常「看起来管用」:把物理上的耦合强度调弱(换热能力调低一点、热质加大一点),确实能压住耦合误差 ⇒ 你同时拿到了一个绿灯和一个被改坏的模型,而这两件事从结果文件上分不出来。

为什么这条错读特别普遍:调度顺序(各块用同一时刻的旧边界并行推进,还是后一块用前一块刚算出的新值串行推进)与耦合强度(这一个宏步走一遍就前进,还是在步内回退重算到收敛)是两个正交的维度。串行推进拿到的边界确实「新一些」,但它仍然是一遍过——从头到尾没有发生过任何一次回退重算,宏步耦合误差一样不可控。而口语里的「弱耦合/强耦合」只说得清后面那一维,听起来却像在评价前面那一维。第 4 讲把这两维拆开、把四种组合摆齐并给出选哪一格的判据;也是从那一讲起,本课正文一律不用「弱/强耦合」这个词作判据。

本课交付什么。 学完之后,你应该能从项目里带走四样可以直接拿去核的产物:

  1. 每条切分面一张接口契约卡——传哪些量/单位/基准/正方向/三个时间基准/谁是权威/宏步内怎么用,共七项(第 1 讲 1.4);
  2. 一页耦合设置卡——六项:调度顺序、显式还是迭代、宏步取多大、迭代上限与收敛容差、接口量在宏步内怎么用、松弛因子,每一项后面写清「凭什么这么取」(判据在第 3、4、5 讲,第 7 讲的动手做要求把它交出来);
  3. 一份可逐项对账的分项能量流——压缩机、冷凝风扇、水泵、Chiller 支路四项各自单独出流(其中 Chiller 那一项是冷量、不是电功,⛔ 两者不得相加),⛔ 不并成一项「空调功耗」(第 7 讲 7.6);
  4. 一份与试验侧同口径的输出量定义——每个量写清从哪个时刻起算、取哪个测点、用什么时窗、在哪个控制体上算(第 7 讲)。

今天就能用的一步:不必等读完。现在就拿第 1 项去核你手上任何一份已经在跑的联合仿真模型——挑一条切分面,把那七项逐项填一遍。填不出来的那几项不是「文档还没补」,而是这个模型里没有人对它做过决定,于是某一侧已经替你做了:它用了一个默认值,而这个默认值不出现在任何接口表上、不进任何评审、也不会让模型报错。你把七项填满的那一刻,这门课后面几讲讨论的东西就都有了落点。

最后交代本课的边界与口径,读的时候拿它当尺子。构型基线:纯电 SUV,五个子模型——制冷剂回路、冷却液回路、座舱、电池、电驱,⛔ 不含发动机与增程器热子模型;混动与增程的子模型增量与两段工况驱动归 J1-10 混动/增程整车热管理 1D 联合仿真:发动机热子模型、起机—热双向闭环与 CD/CS 工况驱动,燃料电池支路本课只给接口差异、电堆与 BOP 本体归 J1-09 燃料电池系统一维建模与水/热耦合仿真。⇒ 正文里的结论都是在这条基线上成立的,⛔ 不要当成对全部构型成立的全称句。前提:本课全部结论都建立在「各子模型自身已经过验证」之上——前提不成立时先回 J1-02 制冷循环一维建模与制冷剂物性J1-03 冷却液回路水力与热仿真建模J7-08 一维系统模型的数值内核与「跑飞」排查:DAE/代数环、步长与容差、一致初值与守恒自检,⛔ 别在耦合层找答案。标准:本课涉及的三组外部规范——联合仿真接口规范(FMI)· GB/T 18386.1(电动车能耗与续驶里程,工况边界)· ASME V&V 20(验证与确认)——本课均未取得原文,因此一律只写标准名与去向,⛔ 不写条款内容、不写限值、不写字段的确切语义;版次与实施日期不单值化,以现行目录为准、引用前须核。数字:宏步、收敛容差、松弛因子、残差合格线、前端风量与进风温度、寄生功量级,全是随本项目而定的量,本课⛔ 不给数,给的是判据结构、反解式与自检动作;正文与图里出现的一切数值算例全部是教学假设值,不对应任何平台,⛔ 不得照抄取用、⛔ 不作设计输入。

第 1 讲 切分面:系统级模型的对象是那几条边,⛔ 不是那几个框

这一讲不讲任何一个子模型怎么建。制冷剂回路怎么建归 J1-02 制冷循环一维建模与制冷剂物性、冷却液回路怎么建归 J1-03 冷却液回路水力与热仿真建模、座舱多节点模型怎么建归 J1-08 座舱一维多节点热模型与参数辨识(含 CFD→1D 分区映射),那几门课各自已经把它们讲透了,本课在这些边上⛔ 一个字都不重建。本讲要立的是整门课的地基:把几个已经建准的子模型摆在一起之后,多出来的究竟是什么

答案⛔ 不是「规模」。多出来的是两样此前不存在的东西:跨界要传哪些量,以及传的是哪个时刻的值。这两样都不是物理,是人做的建模决策;它们不会出现在任何一个子模型的验证报告里——写那份报告的时候,它们还不存在——也不会因为把子模型做得更准而变小。后面六讲要处理的,全部是这两样东西怎么定、定错了怎么显形、显形之后怎么分诊。

本讲的推进路线:先把「对象是切分面」这句话立起来,并把本课最容易被读反的那处判断的入口摆在这里(1.1);冻结本课的构型基线,说清拼的是哪五块、哪几块不在(1.2);把「跨切分面到底要传什么」画全——⛔ 不是两类,是九类(1.3);把这九类落成一张可以照着填的接口契约卡(1.4);然后逐条走本课基线上那几条边:产热与水路(1.5)、座舱(1.6)、环境与行驶工况(1.7);最后处理一个只交换一次、因此最容易被整类漏掉的接口量——系统级的一致初态(1.8)。

本讲先钉住的符号与四条口径

下面这一组在全课通用,后文不再重复声明。⚠ 宏时间步、耦合迭代容差、松弛因子、控制器周期这几个量分别在第 3、4、5、6 讲首次定义,本讲⛔ 不提前给它们的定义与单位。

  • Q̇ = 热流率(W;正文报 kW 时须显式写单位)。
  • ṁ = 质量流量(kg/s),工质侧通用符号,须带下标指明是哪一路
  • h = 比焓(kJ/kg)。★ 全课 h 只作比焓,⛔ 不表示对流膜换热系数——本课换热侧一律只用 UA 与 ε 两个量,膜系数整个不出现(它的射程在 A2-03 两相流基础:沸腾、冷凝与流型J1-03 冷却液回路水力与热仿真建模)。
  • c_p = 比定压热容(J/(kg·K))。跨接口传湿空气时必须写明取的是干空气还是湿空气的 c_p(见 1.6)。
  • T_amb = 环境温度(车外自由来流温度,℃)。
  • UA = 换热器总传热系数与面积之积(W/K,承 J1-03 冷却液回路水力与热仿真建模);ε = 换热器效能(无量纲,⛔ 不表示发射率——本课不出现辐射换热的定量项)。

四条口径:

  • 热流的正方向,全课统一为「进入所讨论的控制体为正」。 跨切分面时两侧必须白纸黑字写同一句,并逐条记进接口表(1.4 的第 ④ 项)。⛔ 正文不出现没有声明控制体的裸 Q̇。
  • 压力一律绝对压力:空气侧压降以 Pa 报、制冷剂侧压力以 kPa 报,公式代入一律 Pa,⛔ 全课不出现表压。★ 跨工具接口是这条最常失守的地方——引用任何外部数据(供应商特性表、台架记录、另一家工具导出的模型)之前必须先确认它是绝压还是表压、是 bar 还是 Pa。这两处各差一个常数与一个 10⁵ 倍,而两者都不会让模型报错
  • 状态点温度以 ℃ 报;温差、温升、过热度一律以 K 报,⛔ 不写「温升 5 ℃」这种写法,公式代入一律换成 K。跨接口时两侧先对齐:℃ 与 K 之差在温差量上恰好是 0、在温度量上是 273.15,两种错的表现完全不同
  • 功率在正文与图上一律以 kW 报、公式代入一律 W,每一处都写单位。★ kW 与 W 混用是跨工具接口最常中的一类单位错,它的表现是「结果差 1000 倍」——大到一眼可见,因此反而常被误诊成「模型建错了」,而不是「接口单位没对齐」。

1.1 把几个准确的子模型摆在一起,多出来的不是规模,是两样此前不存在的东西

J1-02 制冷循环一维建模与制冷剂物性 把制冷剂回路建准、J1-03 冷却液回路水力与热仿真建模 把水路建准,各自都是一个封闭的方程组,由一个积分器统一推进:所有状态量在同一个时刻被同时更新,谁也看不到别人的旧值。

整车模型如果仍然是一个方程组、一个积分器(也就是在同一个工具里整包搭起来),那么「系统级」确实只多了规模——变量更多、算得更慢,但结构没变。一旦把它分给两个工具各自求解,情况就不一样了:每个工具只认自己那一块的方程,两块之间必须约定一个交换时刻,在这个时刻互相把边界值递过去,然后各自往前算一段。于是凭空多出两样由人设定的东西——

  • 切分面:方程组被切在哪儿。它是人选的,⛔ 不是工具给的。
  • 宏时间步:两次边界交换之间隔多久。在这段时间里,每一块看到的对方都是旧的。(它的符号,以及「它在哪几种形态下才存在」这个前提,第 3 讲一次性定死。)

为什么这是结构差异而不是难度差异。 把每个子模型都做得更准——网格更密、容差更紧、关联式换成更贴合的那一条——都不会减小宏步耦合误差。这份误差由「边界值有多旧」决定,与子模型自身的精度无关。换句话说:两个满分子模型拼成的整车模型,它的耦合误差可以任意大,而这份误差不会出现在任何一个子模型的验证记录里

今天就能用的第一问:判一条系统级结论可不可信,先数它跨了几条切分面。

这条结论跨几条切分面 它主要由谁决定 你该拿什么去支撑它 判完的下一个动作
0 条(例:某换热器出口温度对该回路流量的敏感性) 子模型 那个子模型自己的验证记录 直接引用该子模型的误差带,⛔ 不必动耦合层
1 条 各半 那条边的接口契约卡(1.4) 先确认卡上七项填全,再看结论
2 条及以上(例:pull-down 时间对电池冷却优先级的敏感性) 耦合层 一次耦合层自检 ⛔ 报出它之前先做第 5 讲那次「改格式或减半重跑」的分诊

⚠ 本课⛔ 不给「跨几条以内可信」这种数——那取决于各条切分面上相互作用的强弱,而强弱是随平台与工况变的。第 5 讲把它写成一个可以手算的比值,那才是能定量的形式;在这里能分档就够用了。

为什么要在第一节就把这条判据交出来。 因为它决定了出事之后你往哪个方向走,而走错方向的代价在本课里是最贵的一笔。整车模型出现振荡、或者干脆发散的时候,人最容易做的那个动作是:回头去改子模型的物理参数——换一条传热关联式、加一点人为阻尼、把金属热容放大一些、把膨胀阀的流量特性抹平一点,然后在报告里写一句「模型不稳定,已通过修改换热器参数解决」。

这个动作的代价分三层,一层比一层贵:

  • ① 被改掉的是一个本来正确的物理模型。改完之后它在别的项目里也不能再复用了,而且没有人知道它为什么长成那样。
  • ② 振荡「看起来好了」,是因为这些改动把系统的真实增益压低了——而那个增益正是要仿真的东西。于是仿真回答了一个被自己改过的问题。
  • ③ 真正的开关从头到尾没被打开。换一个工况它会再来一次,而下一个人会重复同一套动作。

支撑这个错误动作的,通常是一句听起来很有道理的话:「我用的是串行调度,后一个子系统用的是前一个刚算出来的新边界,那就已经是强耦合了,宏步内的迭代开关不用管。」这句话是本课要点破的那一处,它错在两层:

  • 第一层:调度顺序与耦合强度是两个互相独立的维度。「用刚算出来的新值」只是把边界从「整拍旧」减到「半拍旧」,⛔ 没有把误差变成有界的。
  • 第二层:真正把这份误差压住的那一档做法有一个硬前提——从属那一侧必须能把自己的状态退回到宏步开头再算一次。不具备这个能力时,那档做法根本不可用,⛔ 不是「慢一点」。

这两层的完整展开在第 4 讲(两个维度、四种组合,以及那个硬前提该去哪里查);出了事之后怎么分辨「病在耦合层还是病在子模型」,在第 5 讲。这里只要记住一件事:那句话对耦合误差的大小几乎没有承诺力

易错点。

  • 把「每个子模型都验过了」当成「整车模型验过了」。前者的证据支撑不到跨切分面的结论上。
  • 出了问题先怀疑物理模型——上面那三层代价的入口。
  • 以为切分面是工具决定的。它是人选的:选在相互作用弱的地方代价最小,这一条在第 4 讲末尾会变成一个可执行的选点判据。
整车系统级模型的结构图。五个圆角框自左上顺时针排布:制冷剂回路、冷却液回路、座舱、电池、电驱,中间留白。框与框之间凡有物理相互作用处画一条粗虚线并标注切分面,每条切分面上用一个小方牌列出这条边要交换的量,例如座舱与制冷剂之间的方牌列出空气质量流量、送风温湿度、显热负荷、潜热负荷四项。图左侧另立一个灰底长条框,框名为外部驱动输入,内含车速、环境温度、日照、海拔、路谱五项,用单向箭头指向各子模型,箭头旁标注单向、无反馈。图右侧立一个蓝框,框名为控制器(离散时间),与冷却液、制冷剂两框之间画双线:一条标指令、方向向下,一条标反馈、方向向上,旁注两条线采样率可以不同。图底一行说明:切分面越多,跨切分面的结论越依赖对接方式。图上另有一行小字声明子模型构成取本课冻结的纯电基线,不含发动机与增程器热子模型。本图为定性示意,图上不标任何温度、流量、功率的数值,不得据图读取任何数值
图1 该读出三件事:① 系统级模型的对象是那几条粗虚线(切分面),⛔ 不是那几个框;② 每条切分面上都挂着一张写明交换量的方牌——空着的方牌就是一处由某一侧默默替你决定的边界;③ 外部驱动输入是全图唯一的单向源,因此也是唯一一类可以真正当常数灌进来的量(1.7)。子模型构成取本课冻结的纯电基线,⛔ 不含发动机与增程器热子模型;热流箭头方向按本课统一约定「进入所讨论的控制体为正」。⚠ 本图为定性示意,⛔ 图上不出现任何数值,切分面方牌里⛔ 不写任何数值或阈值,⛔ 不得据图读取任何数值。

1.2 先冻结构型基线:本课是纯电 SUV 的五个子模型,⛔ 不含发动机与增程器

联合仿真的一切结论都挂在「拼的是哪几块」上。所以子模型清单必须写在最前面,并且要写清哪几块不在

本课基线=纯电(BEV)SUV,五个子模型加一组外部输入:

为什么必须显式冻结,而不是「默认大家都懂」。 换一种构型,多出来的往往不是一个模块,而是一条新的强反馈回路——

不冻结基线,读者就会把纯电上成立的结论当成全称句用到别的构型上。⇒ 本课正文里的结论一律是「在本课基线上」成立的结论,⛔ 不写「整车热管理联合仿真都是这样」这类全称句。

子模型的数量本身⛔ 不是判据。 五块的模型完全可能比八块的更难耦合——难度由切分面上相互作用的强弱决定,不由框的个数决定。所以下面这三条都不是好的建模起点:数框、照抄别人的框图、按组织架构分块。好的起点只有一个:先画出本项目物理上真实存在的相互作用,再决定切在哪儿

今天就能做的一件事(十五分钟):把你手上这个模型的基线写成一页纸——在册的子模型逐个列名并写清它承自哪一门/哪一份既有模型;不在册的逐样写清「不在,去向是哪里」;再写一句本模型结论的适用构型。这一页纸是后面每一条结论的射程声明,⛔ 不写它,读者(包括三个月后的你自己)没有任何办法判断某条结论能不能搬走。

易错点。

  • 把「五个子模型」当成模板去凑,而不是按本项目的架构去画切分面。
  • 在正文或报告里把纯电上的结论写成对全部构型成立的全称句。
  • 以为构型换了只是「多加一个模块」——多出来的往往是一条新的强反馈回路,那是耦合格式要重选的事,⛔ 不是加个框的事。

1.3 跨切分面要传的量有九类,⛔ 不是「温度和流量」两类

这一节是本讲的清单。它是本课归纳的一份全集,⛔ 不是任何标准的条款,也⛔ 不是本课程体系其他课已经定死的分类;下文简称九类清单

先说为什么要先画全集再逐条核。沿「热和流」这条最熟悉的线索数下去,漏掉的不是一条,是整类——而整类不出现的时候,接口表看起来是完整的、每一行都对,没有任何东西会提示你少了什么

交换的是什么 这一类的特别之处
热流量 Q̇(产热源、换热量) ⚠ 它的一半内容是正方向约定,⛔ 不是数值
流体接口:ṁ 与它的状态(T、p、h,必要时含湿量与成分) ⛔ 一个 ṁ 不够——一条流体接口至少要传三个量,少传一个,下游就得自己假设一个
机械与电功率(压缩机轴功与电功、泵功、风扇功) 同时进电耗账与热账,是两本账唯一的公共项(第 7 讲)
控制指令(控制器 → 被控对象) 离散时间量,带采样相位
传感器反馈(被控对象 → 控制器) 与 ④ 方向相反、采样率常不同、还带滤波时延;⛔ 它与 ④ 不是同一根线的两头
拓扑与离散状态(阀位、通断、模式号) 它改变的是方程结构,⛔ 不是一个数值;跨切分面传它,意味着两侧的方程结构要同时切换
外部驱动输入(车速、环温、日照、路谱) 唯一一类不由任何子模型产出的量,因此也是唯一一类可以真正当常数灌进来的(1.7)
数值层的交换(宏步边界时刻、状态保存与恢复请求、事件时刻) ⛔ 它不是物理量,但它确实在接口上传递,而且它决定那档迭代式耦合可不可用
初值与初态(各子模型 t = 0 的一致初态) 只交换一次,因此最容易被漏(1.8)

只沿 ①② 数下去,会整类漏掉的是: ④⑤ 的方向与采样差异、⑥ 的结构性、以及 ⑧⑨ 这整两类。★ 这不是假想的风险——本课程体系点名的两条误区正好各落在一个被漏的类上:「各子模型初值不一致,系统冷启动长时间不收敛」整条落在 ⑨ 上;「控制器采样率与仿真步不匹配,执行器动作抖动」整条落在 ④⑤ 上。

本课在这九类上各讲到哪一层。

今天就能做的一次核对(十分钟)。 打开你手上那个系统级模型的接口表,拿这九类逐类打勾——⛔ 不是逐行看你写了什么,而是逐类问「这一类在不在表上」。这两种读法的结果差别很大:逐行读只能发现「写错的行」,逐类问才能发现「整类没写的行」,而后者正是这一节要防的那种缺陷。多数情况下 ⑧⑨ 两类整类不在,而 ④⑤ 会被画成一根双向箭头——这三处就是接下来两讲要处理的东西。

易错点。

  • 只传 ṁ 而让下游默认一个进口温度。那个默认值不会出现在任何接口表上,也不会被复核。
  • 把指令与反馈画成一根双向箭头。它们采样率不同、时延不同,画成一根线之后这两处差异就再也提不出来了(第 6 讲)。
  • 把阀位当成一个连续数值传过去。它改变的是方程结构,两侧要同时切换;当成数值传,切换时刻会被平滑掉。

1.4 接口契约卡:一条边七项,缺一项就有一处由某个子模型默默替你决定

九类清单回答的是「要传什么」,这一节回答「怎么把它写死」。接口契约卡是本课要求的交付物之一:逐条切分面一张,七个字段,⛔ 一项都不能空。

字段 这条边上要写死什么 缺了它会发生什么
① 传哪些量 逐个量名列全(拿 1.3 的九类清单逐类过一遍) 少传的那个量由下游自己假设一个,而那个假设值不出现在任何文档里
② 单位 kW 还是 W、Pa 还是 bar、kg/s 还是 g/s 差 1000 倍这类错大到一眼可见,因此常被误诊成「模型建错了」而不是接口没对齐
③ 基准 绝压还是表压、干基还是湿基、℃ 还是 K ℃ 与 K 之差在温差量上恰好是 0、在温度量上是 273.15 ⇒ 两种错的表现完全不同
④ 正方向 本课统一写「进入所讨论的控制体为正」 模型照跑、照收敛,只在能量流闭合残差里现形,而且残差恰好等于该项的两倍(第 7 讲用这条特征反查接口表)
⑤ 时间基准 三个都写:子系统内部积分步长、宏时间步、控制器周期(三个符号的定义与单位分别在第 3 讲与第 6 讲给全,卡上这三格现在就不能空 三个时钟各走各的。控制器执行时刻相对宏步边界逐拍漂移造成的那种低频抖动,就是这么来的(第 6 讲)
⑥ 权威方 这个量由哪一侧算出,另一侧只读 同一个量两侧都算得出来时,两侧各算各的,差值全数落进闭合残差,而两边都觉得自己是对的
⑦ 宏步内怎么用 零阶保持 / 外插 / 带一步延迟 工具替你选一个默认做法,而三种做法的偏差形状完全不同(第 3 讲)

为什么七项一个都不能省。 缺任何一项,结果都不是报错,而是由某一侧的默认值悄悄补上——而默认值不会出现在任何文档里,也不会被复核。这是本讲最需要带走的那条结构性认识:接口上的错误几乎全部是静默的。报错的那些反而好办。

⚠ 第 ⑥ 项最容易被整条忽略,因为它看起来不像一个「接口参数」。判它只要一句话:这个量两侧是不是都算得出来?是 ⇒ 必须指定一个权威方,另一侧只读;否 ⇒ 那一侧就是权威方,写上即可。

⚠ 本课⛔ 不给「几条接口算多」这种数。判据是每条边都有卡,⛔ 不是边少——边少而卡空着,比边多而卡填满危险得多。

这一节的产物规格(今天就能交出去):一份接口契约卡集。每条切分面一张,七行;每行两列——本项目填的值谁负责这一行。⚠ 卡必须与模型一起进版本管理,改模型时同一次提交里改卡;后面第 5 讲的分诊、第 7 讲的残差反查,用的都是这份卡。⛔ 卡不是文档工作:它是那两讲的输入,没有它,那两讲的判据一条也执行不了。

易错点。

  • 只写量名不写单位与基准。这是最常见的一张「填了等于没填」的卡。
  • 正方向靠「大家都这么用」。⛔ 这一项必须两侧各自白纸黑字写一遍,且写的是同一句。
  • 把契约卡写完就归档,而后续改了模型没有回来改卡。卡与模型不一致,比没有卡更危险——它会让复核的人停止怀疑。
上下两栏。上栏画一条切分面的接口契约卡:一张七行表,行名依次为传哪些量、单位、基准、正方向、时间基准(三个:子系统内部步长、宏时间步、控制器周期)、权威方(这个量由哪一侧算出)、宏步内怎么用(零阶保持或外插或带一步延迟);每行右侧留一个空白填写栏,栏头写本项目填。下栏画同一条边的一个错例:左右两个子模型框,中间一条热流箭头,左框旁标注本侧约定为流出为正,右框旁标注本侧约定为流入为正,箭头上打一个警示红叉并写同一个量、两个正方向,下方一行结论:这类错不会让模型报错,它只会让闭合残差恰好等于该项的两倍。图上不出现任何数值,本图为定性示意,不得据图读取任何数值
图2 该读出两件事:① 一条接口边要写死的是七项,缺任何一项都不会报错,只会由某一侧的默认值悄悄补上;② 正方向不一致这一类错的特征是「残差恰是该项的两倍」——这条特征在第 7 讲用来反查接口表。七项字段与本节正文逐字一致;正方向一栏统一写「进入所讨论的控制体为正」。⚠ 本图为定性示意,⛔ 图上不出现任何数值,空白填写栏内⛔ 不预填任何示例数值(预填会被读成推荐值),⛔ 不得据图读取任何数值。

1.5 产热接进水路是双向耦合:产热去、温度回——建成单向源会把反馈整条剪掉

从这一节起逐条走本课基线上的边。第一条是电驱与电池的产热接进冷却液回路。

为什么它是双向的。 电驱损耗与电池损耗随温度变:绕组电阻随温度上升,电池内阻随温度下降、又在低温急升。而温度本身又由冷却液带走多少热决定。⇒ 产热与温度构成一条真实存在的闭环,⛔ 不是一个建模技巧。

⇒ 接口上必须是两个量、两个方向

  • 从产热子模型 → 冷却液回路;
  • T(冷板或水套的代表温度)从冷却液回路 → 产热子模型。

把它建成单向源会发生什么。 单向源等于把「温度 → 产热」这一支剪掉。剪掉之后模型会在高温工况下系统性低估产热——因为产热不再随温升增大——而高温恰恰是要仿的那一档。★ 注意这个偏差的方向是确定的(恒定向乐观侧),⛔ 不是随机误差:它不会在多跑几个工况之后互相抵消,也不会因为样本多了就变小。

这里能给什么、不能给什么。 产热随温度的斜率是平台相关量(取决于电机绕组、电池化学体系与 SOC),本课⛔ 不给数,也⛔ 不给区间。本课给的是一条结构判据,它不需要任何数就能执行:

打开接口表,找到「电驱/电池 ↔ 冷却液」这一行:上面有几个方向的量?只有一个方向 ⇒ 反馈已经被剪断了。

这条判据今天就能用,而且它的结论是二值的——⛔ 不需要判断斜率取到多少才算「够」,也就不存在「取多少算合理」这一层争论。判成「只有一个方向」之后的下一个动作:把温度那一支加回来,然后在同一个高温工况上把新旧两版跑一遍——两者的差就是这条反馈原本被抹掉的部分,它同时告诉你这条边值不值得再往下细化。

⚠ 温度那一支还有一个测点问题:回传的温度必须与损耗模型实际使用的那个温度同一处。取冷却液进口而不是冷板/水套的代表温度,相位与幅值都会偏——而这类偏差在稳态对标里几乎看不出来,只在瞬态里现形。

这条判据什么时候不成立:如果损耗模型在你关心的整个温度区间里确实与温度无关(例如它本来就是一张按工况点标定的常温 map,而本次工况全程贴着标定温度跑),单向源不会引入这条偏差。⇒ 但这时要写清的是「本模型的损耗与温度解耦,适用温度区间为…」,⛔ 不是默认它成立——一旦工况走出那个区间,它会静默地失效。

易错点。

  • 用一张固定的产热 map 当边界灌进水路。那是把闭环拍成了开环。
  • 温度回传取错测点(冷却液进口 vs 冷板代表温度)。
  • 把这条反馈上出现的振荡直接归给耦合格式——它可能是物理上真实存在的。分辨的办法在第 5 讲,⛔ 不要在这里猜。
左右对照两幅。左幅标题为错的做法:单向热源。一个电驱与电池产热框用单箭头指向冷却液回路框,箭头标注热流量,回路框旁标注温度不回传,下方一行小字写产热不随温升变化,高温工况下系统性低估。右幅标题为对的做法:双向耦合。同样两个框,但有两条线:一条热流量从产热框到回路框,一条温度从回路框回到产热框,回传线旁标注测点必须与损耗模型所用的温度同一处;产热框内画一条向上的小箭头并标注损耗随温度变。两幅之间一条竖分隔线,线上自上而下写两行差异:反馈支路有无、高温工况下的偏差方向。两幅均不标任何温度与功率数值,本图为定性示意,不得据图读取任何数值
图3 该读出三件事:① 产热与温度构成一条真实的闭环,接口表上这条边必须有两个方向的量;② 建成单向源的偏差方向是确定的——高温工况下低估产热,而高温恰恰是要仿的那一档;③ 回传温度的测点要与损耗模型使用的温度同一处,取错测点时相位与幅值都会偏。Q̇ 正方向按本课统一约定「进入所讨论的控制体为正」。⚠ 本图为定性示意,⛔ 图上不出现损耗随温度的斜率或任何百分数(那是平台相关量),⛔ 不得据图读取任何数值。

1.6 座舱只接口、不重建:这条边上本课只管三件事

座舱多节点建模、参数辨识,以及把三维流场结果映射成一维分区,全部归 J1-08 座舱一维多节点热模型与参数辨识(含 CFD→1D 分区映射)。本课在这条切分面上⛔ 不重建任何东西,只定三件:传哪些量、显潜怎么分、湿空气物性取哪一套

一、传哪些量。

  • 送风侧:送风质量流量送风温湿度
  • 回风侧:回风温湿度
  • 座舱侧回传:负荷,且显热与潜热分列两项,⛔ 不合并成一个数。

二、显潜为什么必须分列。 座舱送风侧的热平衡是

Q̇_cabin = ṁ_air·c_p·(T_in − T_out) + 潜热项

其中 ṁ_air 取座舱送风侧那一路空气的质量流量(kg/s),T_in = 送入座舱的空气温度(℃)、T_out = 离开座舱的空气温度(即回风温度,℃),两者按本讲开头的口径以 ℃ 报、温差按 K 代入。只传合计值时,下游无法判断蒸发器要不要除湿——而除湿工况下潜热常常不是小项。⇒ 只算显热会让蒸发器负荷与压缩机功系统性偏低,且偏低的方向恒定向乐观侧。这正是本课程体系点名的一条误区:座舱负荷只算显热漏掉潜热,除湿工况能耗偏低。

显潜比给不给数。不给数、也不给比例区间——它随进风含湿量、新风比例与目标露点变化,给一个区间等于给出一个会被照抄的错值。替代物是算法路径,今天就能照着走:

  1. 取进风与回风两个状态点,在焓湿图上算它们的焓差,乘质量流量得到总负荷(承 A2-04 湿空气物理与焓湿图:空调负荷计算基石 的焓湿图口径,本课⛔ 不重讲物性);
  2. 析水质量流 × 汽化潜热算出潜热项
  3. 两者相减得到显热项

⛔ 不用比例去估——比例本身就是要求解的那个量。

三、湿空气物性口径。 跨这条切分面传湿空气时,接口卡的第 ③ 项里必须写死三件:c_p 取干空气还是湿空气 · 含湿量按干基还是湿基 · 相对湿度的参考温度取哪一点。物性本体与焓湿图用法承 A2-04 湿空气物理与焓湿图:空调负荷计算基石,本课只要求两侧同一套

易错点。

  • 接口只传温度不传湿度。这条边一旦少了湿度,上面那三步一步都走不了。
  • c_p 一侧取干空气、另一侧取湿空气。
  • 把「座舱负荷」这一个数报出去而不写它含不含潜热。⇒ 报这个数时必须同时写清口径——不写口径的座舱负荷是一个不能被复核的数。

⚠ 本节末补一条符号纪律,免得两路空气混起来:本节写作 ṁ_air 的是座舱送风侧那一路空气的质量流量;前端换热模块那一路的空气流量是另一条边上的量,第 2 讲另行给出,且那里还要分清体积流量与质量流量。⛔ 两路不得共用一个不带说明的符号——接口卡的第 ① 项里必须各自写清是哪一路。


1.7 环境与行驶工况:全图唯一一类真正可以当外部常数灌进来的量

车速、环境温度、日照、海拔、路谱这几类由工况定义给出,不由任何子模型产出。⇒ 它们在接口图上是单向的源:没有反馈支路,也就没有耦合误差可言,更不需要为它们约定耦合顺序。

为什么要把这一条单独讲。 因为它是「什么时候可以灌常数」这个问题的唯一肯定答案。而读者最常做的一件事,恰恰是把这个做法推广到别的接口上——尤其推广到前端进风量。那是第 2 讲要点破的第一个错:进风量看起来也是「从外面来的」,但它是风扇特性与整条空气侧阻力链求交的结果,⛔ 不是外部输入。

判据一句话:这个量是不是由某个子模型算出来的?是 ⇒ 它有反馈,⛔ 不能灌常数;否 ⇒ 它可以。这一问与接口卡的第 ⑥ 项(权威方)正好是同一件事的两面:能填出权威方的量,就不是外部输入。⇒ 判成「它有反馈」之后的下一个动作:把它从外部输入清单里移出来,在接口卡上给它开一行,并按 1.4 的七项填全——它一旦有权威方,就有正方向、有时间基准、有宏步内怎么用。

工况本体从哪来。 循环的速度—时间序列、初温、环境舱条件,由现行标准与本项目的试验规程给出。本课引用 GB/T 18386.1(电动车能耗与续驶里程)只写标准号与去向,⛔ 不写循环细节、⛔ 不写初温与环境舱条件、⛔ 不写任何容差与修正方法——本课未取得该标准原文;版次与实施日期以现行目录为准,引用前须核,⛔ 不作设计输入。⚠ 本课只讲「把工况喂进模型」这一步:工况定义与能量流分析方法归 B4-01 整车能量流与热量流协同分析,pull-down、快充、爬坡这类极端工况的定义归 B1-03 极端工况定义:高温、高原、低温、快充、拖挂爬坡

易错点。

  • 把车速灌进去,却忘了它与前端进风之间的关系——迎风动压那一支是有反馈的(第 2 讲)。
  • 日照只给一个总辐照度,而不分直射与散射、不分车身各分面。那是座舱子模型的输入口径,归 J1-08 座舱一维多节点热模型与参数辨识(含 CFD→1D 分区映射)
  • 把「工况是外部输入」推广成「边界都可以是外部输入」。⇒ 这是本课最贵的一次推广错误,第 2 讲整讲都在还这笔账。

1.8 系统级的一致初态也是一个接口量——它只交换一次,所以最容易被漏

九类清单的最后一类(⑨)在这里展开。

它是什么。 各子模型在 t = 0 必须处在互相相容的状态:水路给出的冷板温度、电池子模型自己的初温、座舱初温、制冷剂回路的初始压力与充注分布——这几样不能各拍一个数

为什么它是耦合层的事,而不是各子模型自己的事。 单个子模型的初值再一致,也不保证跨界的那几个量相容。举一个最直白的:水路那一侧给出的冷板温度,与电池子模型自己拍下的初温,明明描述的是同一块金属在同一时刻的状态,却差着一整个可观的温差——那么第一个宏步就会出现一个物理上并不存在的巨大热流。它不会报错,它只会让曲线在开头一段剧烈摆动,然后慢慢平掉,看起来像「模型还在收敛」

★ 这正是本课程体系点名的那条误区:各子模型初值不一致,系统冷启动长时间不收敛。⇒ 它的现场表现(跑很久不收敛)与「模型建错了」几乎同形,而两者的处置方向完全不同。

本课要求的做法:把初态写进接口契约卡,并规定一个「谁先起、谁跟」的顺序。 两条可选路线:

  • 路线一 · 浸车(soak)。 先跑一段共同的浸车过程,让各子模型在同一组环境条件下自洽下来,再切到目标工况。代价是墙钟时间,收益是初态由模型自己算出来,⛔ 不用人拍。
  • 路线二 · 热启动。 用上一工况的末状态作为本次初态。代价是上一工况的问题会被整段带进来 ⇒ ⚠ 用它之前必须先过一次能量流闭合残差自检(第 7 讲),⛔ 不检查就热启动,等于把污染源接力传下去。

⛔ 本课不给任何初温数值——那由本项目的工况定义与试验规程给出。给的是上面这两条做法,外加一条自检把初态整体平移一点(例如让全车初温同时改变一档),重跑,看你要报的那个量在稳定之后有没有变。变了 ⇒ 初态还没有真正自洽,或者你关心的那一段仍落在初态影响的射程内,两者都要求先解决初态再谈结论;没变 ⇒ 初态这一层可以放下了。⚠ 这条自检不需要知道正确的初温是多少,这正是它可执行的原因。

一致初值的数学侧求法(由代数约束反解代数变量)归 J7-08 一维系统模型的数值内核与「跑飞」排查:DAE/代数环、步长与容差、一致初值与守恒自检,本课⛔ 不重讲;本课只负责把它当作接口卡上的一项,规定它必须被显式给出、并规定给出的顺序。

易错点。

  • 只给温度,不给流量与压力的初态。制冷剂侧尤其如此——那一侧的初始压力与充注分布决定了整条回路的起点(承 J1-02 制冷循环一维建模与制冷剂物性)。
  • 用热启动而不检查上一工况是否收敛。
  • 把冷启动不收敛直接归给宏步太大。⇒ 这是第 5 讲分诊里两条不同的出口,猜错方向要返工两次。

本讲带走的三件东西。

  • 一个分档判据:这条结论跨了几条切分面,据它决定拿什么证据去支撑它、以及报出它之前还欠哪一步(1.1)。
  • 一份产物规格:逐条切分面一张接口契约卡(七项),配九类清单逐类核——⛔ 不是逐行看写了什么,而是逐类问「这一类在不在表上」(1.3、1.4)。
  • 三条二值的结构判据:产热那条边有没有两个方向的量(1.5)· 座舱负荷报没报显潜口径(1.6)· 某个量是不是由某个子模型算出来的——是就不能灌常数(1.7)。三条都不需要任何平台数值就能当场执行。

⇒ 第 2 讲把最后那一条判据用到一个几乎所有人都灌过常数的地方:前端进风量

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

会员专属

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

查看会员方案