车载空调这东西,看着是个普普通通的汽车零部件,真要较真起来能让人头大一圈。热力学、流体力学、控制理论、结构设计全搅在一起,你光会仿真或者光会画图都不够,得从算法推导一路干到图纸落地才算是真本事。我这些年折腾车载空调建模,从最开始只会搭Simulink模型,到后来被逼着去调CFD网格,再被要求出可量产的工程图纸,踩过的坑比空调管路上的接头还多。
这篇文章算是把这条链路完整记录一遍:怎么从热力学方程出发去描述车厢热负荷,压缩机、蒸发器、冷凝器怎么用数学模型表达,PID和强化学习这类控制算法怎么嵌进去调参,模型跑通了之后又如何把结果转化成风道设计、部件选型和加工图纸。适合手里有建模比赛题目不知道怎么下手的同学,也适合刚进车企做热管理仿真、想系统搞懂全流程的小伙伴。
1. 整体设计与思路拆解
1.1 车载空调系统建模的特殊性
做整车热管理的人都知道,车载空调跟家用空调最大的区别在于工况范围宽得离谱。家用空调一年到头基本就在一个相对稳定的室内环境里工作,但车载空调要面对零下二十度的严寒、四十度以上的暴晒、前挡玻璃被太阳直射到表面温度七八十度,这些极端条件下系统仍然必须稳定运行。
其次它是强耦合系统。发动机转速一变,压缩机转速跟着变;车速一变,冷凝器的迎面风量就变;乘客数量、车门开关频率、车窗开度全都会直接干扰车内热负荷。所以建模时不能只盯着空调箱看,得把整车看成一个大热容系统,周围环境、发动机舱余热、乘员散热、阳光辐射全都得算进去。
另一个特点就是实时性要求高。整车厂做控制器标定时需要在真实ECU上跑控制算法,模型跑太慢根本没法用,所以建模时必须平衡精度和计算量,不能一股脑全用三维CFD,那就等着算一次工况用半天吧。
1.2 一条链跑通的核心逻辑
整条链路可以拆成四个大块:物理建模、控制算法、仿真验证、工程图纸。物理建模解决的是"系统怎么响应"的问题,控制算法解决的是"怎么让系统达到目标温度"的问题,仿真验证解决的是"这套方案是否可靠"的问题,工程图纸则是把前面所有工作的结论固化到可制造的产品上。
很多刚入行的朋友容易犯一个错误,觉得仿真做完、控制算法调通了,任务就算完事了。实际上到这一步只是完成了理论验证,后面画图纸、做DFM分析、处理公差和工艺约束才是真正折磨人的阶段。一套算法就算在仿真里把温度控制得再好,到了工程图纸阶段发现蒸发器芯体放不进HVAC总成,风扇选型超出布置空间限制,那还是白搭。
1.3 白箱、灰箱和黑箱模型怎么选
车载空调建模通常有三种路线。白箱模型从物理机理出发,比如用能量守恒方程描述车厢热负荷,用质量守恒和能量方程描述制冷剂在蒸发器冷凝器里的换热,这种模型物理意义清晰、外推能力强,但建立起来费时费力,而且对参数依赖很大。
黑箱模型直接用数据拟合输入输出关系,比如神经网络映射转速、温度设定值到压缩机输出,优点是开发快,但对数据覆盖范围要求很高,超出训练域的工况就完全失真。灰箱模型介于两者之间,用物理结构搭骨架,部分参数通过实验数据辨识,这是工程上最常用的路子。
我做的这个项目选的就是灰箱路线。底盘和车身传热特性用一个简化的RC热网络模型,制冷剂侧则保留完整的蒸发器、冷凝器、压缩机方程。这样既能较准确地预测不同工况下的系统响应,又不会让方程组的刚性大到数值求解崩溃。
2. 核心细节解析与实操要点
2.1 车厢热负荷模型:一切控制的地基
算法上第一个要拿下的硬骨头就是车厢热负荷模型的建立。热负荷决定了空调需要的制冷量,制冷量估算不准,后面的所有控制策略都是空中楼阁。车厢热负荷可以拆成五块:车体围护结构传热、太阳辐射透过玻璃的得热、新风带入的热量、乘员产热、车内电子设备产热。
车体围护结构传热可以用最简单的传热方程表达:Q = K × A × ΔT。这里的K是车体综合换热系数,单位是W/(m²·K),包括内外表面对流换热和壁面导热串联后的总效应;A是换热面积;ΔT就是车内外温差。但车身不是均匀体,玻璃、金属、保温材料的导热系数差别很大,所以更精细的做法是把车身拆成若干节点,前风挡、侧窗、顶棚、地板、车门各算各的。
太阳辐射这部分最容易被人忽略,但在夏天暴晒工况下,它可是热负荷的大头。透过玻璃的辐射得热可以用简化式子估算:Q_solar = η × G × A_glass。G是太阳辐射强度,单位W/m²,正午时分地面垂直方向的辐射强度轻松突破800W/m²;η是玻璃的透过率修正系数,双层玻璃和贴膜玻璃差异明显。我还习惯把阳光直射在乘员手臂和座椅表面的短波辐射单独建一个模型,因为这部分直接影响了人体热舒适性感受,会被驾驶员的反馈直接感知出来。
新风热负荷相对简单,就是Q_vent = m_dot × c_p × (T_out − T_in),m_dot是新风质量流量,c_p是空气定压比热约1005J/(kg·K)。但这里要注意的是新风流量和车速有关,车速越高,车身密封性不好时渗漏风量越大,因此做整车工况仿真时新风负荷实际上是一个时变量。
乘员产热可以查标准:成年男性静止状态下显热约70W,潜热约45W,四个人就是接近500W的热量。这部分在夏天占比不大,冬天却是保温度的重要痛点,所以建模时必须保留乘员数量的输入接口。
把这些负荷项汇总,再列一个车内空气热容的能量守恒方程:
M_air × c_air × dT/dt = Q_传热 + Q_太阳 + Q_新风 + Q_乘员 + Q_设备 + Q_空调
其中M_air是车厢内空气质量,一般轿车约3.5~4.5kg。等式左边是车内温度变化率,右边把热源和空调制冷量放在一起。求解这个常微分方程需要用适当的积分算法,我通常用MATLAB的ode45配合事件触发,在空调ON/OFF切换时重新初始化积分器,避免数值振荡带来的虚假抖动。
2.2 制冷循环建模:压缩机、蒸发器和冷凝器
空调制冷循环的灵魂其实就是热力学课本里那套东西,但是落地到车载系统时每个部件都得有自己的脾气。压缩机是系统的"心脏",车载压缩机大多是斜盘式可变排量压缩机,排气量随斜盘倾角变化,因此建模时排量是一个控制输入,而不像定排量压缩机那样恒定的。
压缩机的简化模型用多变指数压缩过程描述:T_2 = T_1 × (P_2/P_1)^((k-1)/k),k是制冷剂的多变指数,R134a大概在1.1到1.3之间,具体取值跟工况有关。变排量压缩机的排量由控制阀根据蒸发器出口过热度来调节,建模时可以用一阶惯性环节模拟这个调节过程,时间常数大约0.5到2秒。别小看这个惯性,现场标定如果把这个时间常数设错,控制器的PID参数怎么调都感觉不对味。
蒸发器和冷凝器如果全用分布参数建模,参数辨识的工作量太大,我自己用的办法是分集总参数区段模型。冷凝器按制冷剂状态分成过热气体区、两相区和过冷液区,三个区分别求换热面积和传热系数,再并联求解出口温度。蒸发器则看制冷剂出口状态,如果过热度为零,说明两相区直接覆盖全部换热面积,这时蒸发器出口温度等于制冷剂饱和温度,COP会下降,系统效率很差,这种情况模型必须要能捕捉到。
蒸发器空气侧的处理是另一个重点。空调箱里湿度高时,蒸发器表面温度低于露点温度会产生冷凝水,这时候不仅有显热换热,还有潜热换热。工程上常用"湿球效率法"处理,把显热换热量和潜热换热量分开计算,然后再合在一起算出口空气焓值。这样处理后续做风道温度分布时才能算出真实送风温度,否则你的送风温度模型在潮湿天气下会跟实车测试差出一大截。
2.3 控制算法设计:从PID走到强化学习
热负荷模型和制冷循环模型搭建完毕,下一步就该设计控制算法了。这里我需要澄清一个常见误解:很多人一提车载空调控制就堆机器学习算法,实际上量产车上跑得最稳的还是PID全家桶。但比赛或者预研项目里,强化学习确实很有表演力和创新空间,关键是要知道两者各自的生态位。
经典PID用在空调温度控制上,被控对象就是车内温度传感器读到的温度值,误差e = T_setpoint − T_cabin,控制量是压缩机排量或风机转速指令。PID公式不用多写:u = Kp × e + Ki × ∫e dt + Kd × de/dt。关键是整定方法。我常用的套路是先只用P增大到系统出现等幅振荡,记录振荡周期T_crit和临界增益K_crit,再按齐格勒-尼科尔斯整定表推Kp、Ki、Kd的初值。这样整定出来的参数不会太离谱,然后人工微调一到两轮就能稳定。
但PID在车载空调上有一个短板:系统非线性太强。夏天暴晒工况和春秋天温和工况,对象增益差得非常远,一组固定PID参数没法全工况都表现优秀。所以工程上更常见的是模糊PID:根据误差大小和误差变化率的不同区间,动态调整Kp、Ki、Kd的权重。模糊PID的难点是隶属度函数的设计,初始版本可以均匀划分论域,但一定要留出足够的重叠区域,不然模糊推理表会形成"死区",控制量在跨越论域边界时出现跳变。
强化学习这里我单独说一下DQN的做法,因为这是最近几年参赛作品里最容易被用好的算法。DQN把空调控制建模成一个马尔可夫决策过程:状态定义为车内温度、设定温度、外界温度和车速(四维向量);动作定义为压缩机排量增加、保持、减小三档离散量;奖励函数设置为舒适度误差的负值和能耗惩罚的线性组合。
DQN核心还是那张Q表变成深度网络,更新公式:
Q(s,a) ← Q(s,a) + α × (r + γ × max_a' Q(s',a') − Q(s,a))
用神经网络拟合Q(s,a)时,经验回放池至少存一万条以上transition,batch_size取64,学习率取1e-4。训练初始阶段不用急着让它表现好,先用ε-greedy探索策略,ε从1.0线性衰减到0.1,这个过程大概需要十几万个步的交互。我在项目里同时考虑了PPO算法,PPO在连续动作空间里天然占优,更适合做压缩机排量连续调节的场景。PPO的裁剪目标函数里clip范围我设0.2,当新旧策略概率比超出这个范围就会截断梯度更新,避免一次更新的步子太大破坏已有策略。
2.4 图纸输出前的"热力学→CFD→CAD"翻译
模型算出来是一堆温度场和流量数据,要把这些数据翻译成图纸,中间需要经过CFD仿真和结构设计两道关卡。很多做算法的同学在这一步就断链了——大脑里其实很清楚怎么让空调工作,但不知道风道怎么布置才能让数据流到实际产品里。
第一道关卡是HVAC总成内部流场的CFD分析。蒸发器和加热器芯体之间的风量分配、风门位置开度变化对不同出风模式(吹面、吹脚、除霜)的流量切换,这些必须用三维流场仿真验证。网格划分时壁面第一层网格高度要满足y+在30到80区间内,这样用壁面函数处理湍流边界层才有意义。结构网格和四面体非结构网格混用的策略我经常用,蒸发器芯体区域用多孔介质模型代替,这个多孔介质阻力参数是由蒸发器供应商提供的实验曲线拟合而来,如果拿不到实验数据,先用经验公式估算也可以凑合,但一定要在报告中注明。
第二道关卡是CFD结果转边界条件。仿真得到的不同模式下的出口流量和温度值,就是CAD阶段设计出风口、选配风道截面尺寸的边界条件。出风口的流速限制有讲究:吹面模式出口风速快一点没关系,但除霜模式对风道均匀性非常敏感,挡风玻璃左右两侧温度差必须控制在5℃以内,否则除霜除不净。这一步在图纸设计前就要做CFD验证,我习惯用RMST这个指标去评估出风均匀性,RMST值越小说明各个出风口的温度波动越小,整车客户的舒适性评价就越高。
3. 实操过程与核心环节实现
3.1 仿真平台搭建:MATLAB/Simulink还是Python
建模平台的选择直接影响工作效率。我个人的习惯是整车热管理建模用MATLAB/Simulink,因为Simulink里的物理建模工具箱比较多,示波器调试也方便。但对于要做参数辨识、强化学习训练的团队,Python环境反而更舒适,PyTorch生态做神经网络训练简直不要太顺手。
我的项目用的是混合双层架构:热力学被控对象模型放在Simulink里,用S-Function跟外部Python脚本通过TCP/IP通信。控制算法部分在Python端跑,DQN训练完成后把策略网络参数导出ONNX格式,再导入Simulink做硬件在环联合仿真。这套流程最需要注意的坑是通信延迟,TCP/IP通信每步交换数据大约有10到50毫秒延迟,如果仿真步长小于延迟就会导致数据错位。我最后把通信周期固定为100毫秒,然后双方案度同步,保证两边的仿真时钟不会越跑越远。
3.2 参数辨识与传感器数据处理
建立好模型结构后,参数从哪来是个大问题。车厢热容、车体换热系数、蒸发器传热系数这些都不能凭空拍脑袋。我在做参数辨识时,先做了一组环境舱实验:车在恒温环境舱内分别稳定在-10℃、25℃、40℃,然后开启空调并记录车内温度和空调出风温度的变化曲线。有了这几条稳态和动态响应曲线,再用最小二乘拟合的方式去辨识RC热网络模型中的热阻和热容参数。
这里我要重点提醒:实验数据进模型前,一定要做滤波预处理。环境舱里的温度传感器信号说实话躁得很,压缩机开启的瞬间电子元件会带来明显的电磁干扰,温度曲线上会出现尖刺。我用的是滑动平均滤波,窗口长度设为5个采样点,公式就是y(n) = (1/5) Σ x(n-i),这个窗口如果设太大,真实温度变化趋势也会跟着被抹平,响应变慢;窗口太小又滤不干净噪声。实测下来5个点最合适,兼顾平滑度和响应速度。
3.3 典型工况设计与对比实验
模型标定完成后,下一步就是设计基准工况矩阵来验证模型能力和算法表现。这个工况矩阵要覆盖三个维度:环境温度(-20℃、0℃、25℃、45℃)、太阳辐射强度(0、400、800W/m²)、车速(0、60、120km/h)。正交组合之后就是一大批算例,跑起来很费时间,所以我在预研阶段只挑有代表性的8个组合跑全工况回归,然后每个算法各跑这8个工况。
我的测试结果很有代表性:纯PID在中等负荷工况下温度波动能控制在±0.5℃以内,但切换到暴晒起步工况时超调量直接拉满到2.3℃,然后长时间振荡;模糊PID把超调压到1.1℃,稳定时间缩短了约40%;PPO算法经过大概120万步的训练后,在连续工况里温度偏差的均方根误差比模糊PID又低了18%,同时压缩机累计启停次数下降了25%。不过PPO对训练数据分布非常敏感,如果训练工况和测试工况差距太大,表现会跌回比PID还差。这也是强化学习在工程落地中最尴尬的地方——泛化性不够硬。
3.4 从仿真数据到CFD风道验证
仿真控制逻辑跑通之后,CFD那一步主要是验证风量分配。我用的是STAR-CCM+做HVAC总成的三维流场仿真,几何模型从CATIA导入,做包面处理抽出一个封闭流道。网格数量控制在800万左右,局部在风门铰链处和百叶窗叶轮处做了加密,第一层附面层高度设置为0.3mm。
边界条件设置其实很有门道:蒸发器入口的流量分配不是均匀的。实际芯体两侧由于进风面形状不规则,流速分布天然不均。所以做CFD时最好用蒸发器供应商的多孔介质阻力和换热曲线做内部迭代,而不是简单给一个均匀流速入口。我就是因为一开始图省事给了均匀边界条件,结果算出来的出风均匀性和台架实验差了10%以上,后来改成多孔介质模型才把差距压到3%以内。
强风挡除霜模式的风道均匀性不满意的话,就要回头改CAD几何,调整导流片角度、扩大或收缩局部截面积,这个过程在CFD和CAD之间迭代两三轮很正常。我的实际经验是:别指望一轮CFD就能通过,设计阶段多留25%左右的设计余量,比什么都管用。
4. 常见问题与排查技巧实录
4.1 模型求解发散的经典原因
现象是仿真跑着跑着车内温度直接变成绝对零度或上千度,一看图形曲线跟心电图一样疯狂振荡。这通常是三个原因之一:积分步长过大导致数值不稳定、模型代数循环没断开、某个增益参数给得太大。
排查的流程我固定为三步走。第一步把定步长缩小为原来的十分之一,看振荡幅值是否明显下降,如果是就是步长问题,重新选求解器;第二步检查模型中是否有直接从输出反馈到输入的瞬时通道,需要添加Unit Delay或Memory模块打破代数环;第三步检查参数是否合理,尤其是压缩机排量对蒸发器出口过热度的影响系数,如果增益设定的绝对值接近甚至超过物理极限,模型发散是必然的。
经验上,我建议工程师在搭建模型时就把所有物理参数的量纲和合理范围列成一张表,在标定前用静态检查工具跑一遍,能提前拦住80%的发散问题。
4.2 强化学习训练不收敛怎么处理
DQN和PPO训练不收敛是群里被问烂的问题。训练到中途loss曲线不降反升,或者明明已经收敛了策略却完全不对——比如应该降温的时候压缩机反而关掉了。我的排查顺序是:先看奖励函数的设置合不合理。尤其在多目标情境下(既要温控又要节能),两个目标的权重必须预先做敏感性分析。我的做法是用归一化后的指标,把温度误差和能耗均缩放到0到1之间,权重起始各0.5,然后扫描0.2、0.3、0.7、0.8等不同权重,找出一条合理的帕累托前沿。
再看探索策略。DQN的ε衰减过快会导致探索不充分,过早陷入次优策略;衰减过慢整个训练过程又慢又低效。我一般分阶段调:前20%训练周期用高探索率0.8到0.9,中间40%用0.3,最后40%衰减到0.05。还要检查经验回放池采样是否均匀,如果某些类型的状态转移记录过多,网络会被偏好数据带偏,用优先经验回放或做裁剪过采样都能改善。
4.3 图纸阶段最容易踩的DFM坑
仿真做满意了,图纸阶段翻车的情况我见过太多次。最典型的是DFM(面向制造的设计)问题:风道模具脱模角度不够,注塑件脱模时拉伤表面;钣金件的折弯半径小于板材厚度导致应力开裂;结构件公差标注不合理,和相邻零件装配时从"刚刚好"变成"卡不进"。
解决这系列问题只有一个笨办法:把模具厂、装配车间的师傅请到图纸评审会上去,让他们对着图纸当场提意见。公差带设置、脱模角、圆角过渡这类知识,教科书上写得再清楚也挡不住现场工艺给的"我们做不出来"的一句话。
另外一个细节是图纸上必须明确关键件的GD&T基准,也就是几何公差基准体系。HVAC箱体上下壳体之间的密封面,如果位置度给得太松,合箱后漏风率超标,整车NVH和吹面风速都会受影响。我的经验是密封面位置度控制在0.2mm以内,铆接螺柱孔的位置度允许放到0.5mm,不用所有尺寸都往死里标。
5. 实操心得与经验总结
5.1 建模仿真环节最耗时间的部分
整个项目做下来,最耗精力的不是写控制算法,而是参数标定。算法方程写在纸上十分钟就完事,但参数标定的数据采集、清洗、拟合往往占用超过半程工期。尤其是蒸发器换热系数的修正,不同迎面风速、不同蒸发温度下换热系数相差明显,单纯用一个常数去拟合,误差大到你根本没法收敛。所以我给后来者的建议是:建完数学模型后先别急着跑控制算法,花两到三天做实验数据采集和参数辨识,把模型基础打牢,后面会省出十倍的时间。
5.2 协作链路里的三张关键表
跨专业协作时,热管理工程师、算法工程师、结构工程师经常互相甩锅。我的经验是项目一开始就建立三张表杜绝扯皮:接口定义表(罗列每个信号的物理含义、单位、范围、更新频率)、模型版本表(模型文件版本号、修改人、修改日期、主要修改内容)、工况覆盖矩阵表(每个工况编号对应的环境条件、车辆状态、控制模式、验收指标)。
有了这三张表,仿真结论和图纸标注争论时翻表即决。尤其是工况覆盖矩阵,在给领导汇报、给评审专家答疑、给队友分配任务时几乎是万能说服工具,多少能保住一个项目不被无限期地"补充验证"。
5.3 后续可以扩展的方向
这套建模方法往后走还有几个很有意思的扩展点。一个是把乘客个体热舒适模型接进来,把PMV/PPD指标作为控制目标,而不是单纯控温度到设定值;另一个是把车身实际热响应数据和气象预报结合起来做预测性热管理,车还没到家提前算好最优降温曲线,降低暴晒条件下的制冷能耗。再就是目前很多参赛团队开始把强化学习的多智能体框架用于同时控制空调和座椅加热,类似这种多舒适子系统协同控制的课题,也是下一阶段车载热管理建模的热门方向。
这一拍拍下来,从一张白纸到一本厚厚的设计包,表面的公式和图纸背后都是反复试错的过程。希望这份全流程的记录能帮你少走些弯路。