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.4);
- 一页耦合设置卡——六项:调度顺序、显式还是迭代、宏步取多大、迭代上限与收敛容差、接口量在宏步内怎么用、松弛因子,每一项后面写清「凭什么这么取」(判据在第 3、4、5 讲,第 7 讲的动手做要求把它交出来);
- 一份可逐项对账的分项能量流——压缩机、冷凝风扇、水泵、Chiller 支路四项各自单独出流(其中 Chiller 那一项是冷量、不是电功,⛔ 两者不得相加),⛔ 不并成一项「空调功耗」(第 7 讲 7.6);
- 一份与试验侧同口径的输出量定义——每个量写清从哪个时刻起算、取哪个测点、用什么时窗、在哪个控制体上算(第 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.2 先冻结构型基线:本课是纯电 SUV 的五个子模型,⛔ 不含发动机与增程器
联合仿真的一切结论都挂在「拼的是哪几块」上。所以子模型清单必须写在最前面,并且要写清哪几块不在。
本课基线=纯电(BEV)SUV,五个子模型加一组外部输入:
- 制冷剂回路(承 J1-02 制冷循环一维建模与制冷剂物性);
- 冷却液回路(含电池与电驱两支,承 J1-03 冷却液回路水力与热仿真建模);
- 座舱(本体承 J1-08 座舱一维多节点热模型与参数辨识(含 CFD→1D 分区映射),本课只接口,见 1.6);
- 电池(产热与温度反馈,见 1.5);
- 电驱(电机 + 逆变器 + 减速器整链的损耗与温度反馈,见 1.5);
- 外部驱动输入:车速、环境温度、日照、海拔、路谱(见 1.7)。
为什么必须显式冻结,而不是「默认大家都懂」。 换一种构型,多出来的往往不是一个模块,而是一条新的强反馈回路——
- 混动与增程多出发动机热子模型,以及「起机—热」这条双向闭环:热状态决定要不要起机,起机又反过来改变热状态。它把耦合的性质都改了,宏时间步与积分器都要重选。这一整块归 J1-10 混动/增程整车热管理 1D 联合仿真:发动机热子模型、起机—热双向闭环与 CD/CS 工况驱动,那里还包含按 CD/CS 两段分别驱动并做使用因子加权的做法。
- 燃料电池多出电堆热源与 BOP 的空气路/氢路。电堆与 BOP 子模型本体归 J1-09 燃料电池系统一维建模与水/热耦合仿真;本课只在第 2 讲给出这条支路接口上的两点差异,⛔ 不建它的模型。
不冻结基线,读者就会把纯电上成立的结论当成全称句用到别的构型上。⇒ 本课正文里的结论一律是「在本课基线上」成立的结论,⛔ 不写「整车热管理联合仿真都是这样」这类全称句。
⚠ 子模型的数量本身⛔ 不是判据。 五块的模型完全可能比八块的更难耦合——难度由切分面上相互作用的强弱决定,不由框的个数决定。所以下面这三条都不是好的建模起点:数框、照抄别人的框图、按组织架构分块。好的起点只有一个:先画出本项目物理上真实存在的相互作用,再决定切在哪儿。
⇒ 今天就能做的一件事(十五分钟):把你手上这个模型的基线写成一页纸——在册的子模型逐个列名并写清它承自哪一门/哪一份既有模型;不在册的逐样写清「不在,去向是哪里」;再写一句本模型结论的适用构型。这一页纸是后面每一条结论的射程声明,⛔ 不写它,读者(包括三个月后的你自己)没有任何办法判断某条结论能不能搬走。
易错点。
- 把「五个子模型」当成模板去凑,而不是按本项目的架构去画切分面。
- 在正文或报告里把纯电上的结论写成对全部构型成立的全称句。
- 以为构型换了只是「多加一个模块」——多出来的往往是一条新的强反馈回路,那是耦合格式要重选的事,⛔ 不是加个框的事。
1.3 跨切分面要传的量有九类,⛔ 不是「温度和流量」两类
这一节是本讲的清单。它是本课归纳的一份全集,⛔ 不是任何标准的条款,也⛔ 不是本课程体系其他课已经定死的分类;下文简称九类清单。
先说为什么要先画全集再逐条核。沿「热和流」这条最熟悉的线索数下去,漏掉的不是一条,是整类——而整类不出现的时候,接口表看起来是完整的、每一行都对,没有任何东西会提示你少了什么。
| 类 | 交换的是什么 | 这一类的特别之处 |
|---|---|---|
| ① | 热流量 Q̇(产热源、换热量) | ⚠ 它的一半内容是正方向约定,⛔ 不是数值 |
| ② | 流体接口:ṁ 与它的状态(T、p、h,必要时含湿量与成分) | ⛔ 一个 ṁ 不够——一条流体接口至少要传三个量,少传一个,下游就得自己假设一个 |
| ③ | 机械与电功率(压缩机轴功与电功、泵功、风扇功) | 它同时进电耗账与热账,是两本账唯一的公共项(第 7 讲) |
| ④ | 控制指令(控制器 → 被控对象) | 离散时间量,带采样相位 |
| ⑤ | 传感器反馈(被控对象 → 控制器) | 与 ④ 方向相反、采样率常不同、还带滤波时延;⛔ 它与 ④ 不是同一根线的两头 |
| ⑥ | 拓扑与离散状态(阀位、通断、模式号) | 它改变的是方程结构,⛔ 不是一个数值;跨切分面传它,意味着两侧的方程结构要同时切换 |
| ⑦ | 外部驱动输入(车速、环温、日照、路谱) | 唯一一类不由任何子模型产出的量,因此也是唯一一类可以真正当常数灌进来的(1.7) |
| ⑧ | 数值层的交换(宏步边界时刻、状态保存与恢复请求、事件时刻) | ⛔ 它不是物理量,但它确实在接口上传递,而且它决定那档迭代式耦合可不可用 |
| ⑨ | 初值与初态(各子模型 t = 0 的一致初态) | 只交换一次,因此最容易被漏(1.8) |
只沿 ①② 数下去,会整类漏掉的是: ④⑤ 的方向与采样差异、⑥ 的结构性、以及 ⑧⑨ 这整两类。★ 这不是假想的风险——本课程体系点名的两条误区正好各落在一个被漏的类上:「各子模型初值不一致,系统冷启动长时间不收敛」整条落在 ⑨ 上;「控制器采样率与仿真步不匹配,执行器动作抖动」整条落在 ④⑤ 上。
本课在这九类上各讲到哪一层。
- ①②③④⑤⑥⑦ 在本课射程内,逐类讲接口契约怎么写(1.4 起)。
- ⑧ 本课只讲它的存在与后果——能不能回退重算决定那档迭代式耦合可不可用(第 4 讲);求解器侧的机制前指 J7-08 一维系统模型的数值内核与「跑飞」排查:DAE/代数环、步长与容差、一致初值与守恒自检。
- ⑨ 本课讲「系统级的一致初态怎么给、按什么顺序给」(1.8);而一致初值的数学侧求法(由代数约束反解代数变量)前指 J7-08 一维系统模型的数值内核与「跑飞」排查:DAE/代数环、步长与容差、一致初值与守恒自检,⛔ 本课不给反解方法。
⇒ 今天就能做的一次核对(十分钟)。 打开你手上那个系统级模型的接口表,拿这九类逐类打勾——⛔ 不是逐行看你写了什么,而是逐类问「这一类在不在表上」。这两种读法的结果差别很大:逐行读只能发现「写错的行」,逐类问才能发现「整类没写的行」,而后者正是这一节要防的那种缺陷。多数情况下 ⑧⑨ 两类整类不在,而 ④⑤ 会被画成一根双向箭头——这三处就是接下来两讲要处理的东西。
易错点。
- 只传 ṁ 而让下游默认一个进口温度。那个默认值不会出现在任何接口表上,也不会被复核。
- 把指令与反馈画成一根双向箭头。它们采样率不同、时延不同,画成一根线之后这两处差异就再也提不出来了(第 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 讲的残差反查,用的都是这份卡。⛔ 卡不是文档工作:它是那两讲的输入,没有它,那两讲的判据一条也执行不了。
易错点。
- 只写量名不写单位与基准。这是最常见的一张「填了等于没填」的卡。
- 正方向靠「大家都这么用」。⛔ 这一项必须两侧各自白纸黑字写一遍,且写的是同一句。
- 把契约卡写完就归档,而后续改了模型没有回来改卡。卡与模型不一致,比没有卡更危险——它会让复核的人停止怀疑。
1.5 产热接进水路是双向耦合:产热去、温度回——建成单向源会把反馈整条剪掉
从这一节起逐条走本课基线上的边。第一条是电驱与电池的产热接进冷却液回路。
为什么它是双向的。 电驱损耗与电池损耗随温度变:绕组电阻随温度上升,电池内阻随温度下降、又在低温急升。而温度本身又由冷却液带走多少热决定。⇒ 产热与温度构成一条真实存在的闭环,⛔ 不是一个建模技巧。
⇒ 接口上必须是两个量、两个方向:
- Q̇ 从产热子模型 → 冷却液回路;
- T(冷板或水套的代表温度)从冷却液回路 → 产热子模型。
把它建成单向源会发生什么。 单向源等于把「温度 → 产热」这一支剪掉。剪掉之后模型会在高温工况下系统性低估产热——因为产热不再随温升增大——而高温恰恰是要仿的那一档。★ 注意这个偏差的方向是确定的(恒定向乐观侧),⛔ 不是随机误差:它不会在多跑几个工况之后互相抵消,也不会因为样本多了就变小。
这里能给什么、不能给什么。 产热随温度的斜率是平台相关量(取决于电机绕组、电池化学体系与 SOC),本课⛔ 不给数,也⛔ 不给区间。本课给的是一条结构判据,它不需要任何数就能执行:
打开接口表,找到「电驱/电池 ↔ 冷却液」这一行:上面有几个方向的量?只有一个方向 ⇒ 反馈已经被剪断了。
这条判据今天就能用,而且它的结论是二值的——⛔ 不需要判断斜率取到多少才算「够」,也就不存在「取多少算合理」这一层争论。判成「只有一个方向」之后的下一个动作:把温度那一支加回来,然后在同一个高温工况上把新旧两版跑一遍——两者的差就是这条反馈原本被抹掉的部分,它同时告诉你这条边值不值得再往下细化。
⚠ 温度那一支还有一个测点问题:回传的温度必须与损耗模型实际使用的那个温度同一处。取冷却液进口而不是冷板/水套的代表温度,相位与幅值都会偏——而这类偏差在稳态对标里几乎看不出来,只在瞬态里现形。
⚠ 这条判据什么时候不成立:如果损耗模型在你关心的整个温度区间里确实与温度无关(例如它本来就是一张按工况点标定的常温 map,而本次工况全程贴着标定温度跑),单向源不会引入这条偏差。⇒ 但这时要写清的是「本模型的损耗与温度解耦,适用温度区间为…」,⛔ 不是默认它成立——一旦工况走出那个区间,它会静默地失效。
易错点。
- 用一张固定的产热 map 当边界灌进水路。那是把闭环拍成了开环。
- 温度回传取错测点(冷却液进口 vs 冷板代表温度)。
- 把这条反馈上出现的振荡直接归给耦合格式——它可能是物理上真实存在的。分辨的办法在第 5 讲,⛔ 不要在这里猜。
1.6 座舱只接口、不重建:这条边上本课只管三件事
座舱多节点建模、参数辨识,以及把三维流场结果映射成一维分区,全部归 J1-08 座舱一维多节点热模型与参数辨识(含 CFD→1D 分区映射)。本课在这条切分面上⛔ 不重建任何东西,只定三件:传哪些量、显潜怎么分、湿空气物性取哪一套。
一、传哪些量。
- 送风侧:送风质量流量与送风温湿度;
- 回风侧:回风温湿度;
- 座舱侧回传:负荷,且显热与潜热分列两项,⛔ 不合并成一个数。
二、显潜为什么必须分列。 座舱送风侧的热平衡是
Q̇_cabin = ṁ_air·c_p·(T_in − T_out) + 潜热项
其中 ṁ_air 取座舱送风侧那一路空气的质量流量(kg/s),T_in = 送入座舱的空气温度(℃)、T_out = 离开座舱的空气温度(即回风温度,℃),两者按本讲开头的口径以 ℃ 报、温差按 K 代入。只传合计值时,下游无法判断蒸发器要不要除湿——而除湿工况下潜热常常不是小项。⇒ 只算显热会让蒸发器负荷与压缩机功系统性偏低,且偏低的方向恒定向乐观侧。这正是本课程体系点名的一条误区:座舱负荷只算显热漏掉潜热,除湿工况能耗偏低。
显潜比给不给数。 ⛔ 不给数、也不给比例区间——它随进风含湿量、新风比例与目标露点变化,给一个区间等于给出一个会被照抄的错值。替代物是算法路径,今天就能照着走:
- 取进风与回风两个状态点,在焓湿图上算它们的焓差,乘质量流量得到总负荷(承 A2-04 湿空气物理与焓湿图:空调负荷计算基石 的焓湿图口径,本课⛔ 不重讲物性);
- 按析水质量流 × 汽化潜热算出潜热项;
- 两者相减得到显热项。
⛔ 不用比例去估——比例本身就是要求解的那个量。
三、湿空气物性口径。 跨这条切分面传湿空气时,接口卡的第 ③ 项里必须写死三件: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 讲正文 · 关键公式 · 案例拆解 · 常见误区 · 动手做