做电机台架试验那阵子,我白天测温升、晚上跑仿真,最头疼的事情不是试验设备出故障,而是仿真模型算出来的绕组温度和实测值对不上。有一次稳态工况下仿真给出的绕组热点只有85℃,实际热电偶已经测到了118℃,差了三十多度。这个差距直接让整个项目的热设计方案失去参考价值。
后来我把有限元模型扔到一边,回到最朴素的电机热网络模型,反而在一个月内把预测误差压到了5℃以内,还能跑实时在线计算。这篇文章就是我当时整理的学习笔记,核心围绕电机热网络温度预测模型展开:从怎么把电机拆成一张热网络、热阻热容怎么定、参数怎么用实测去校,再到真实工程中那些很难从教材里找到的坑。如果你也在做电机温升校核或者电机控制器里的温度在线观测,这篇内容应该能帮你在热管理的路上少走几天的弯路。
1. 为什么电机温度预测这么重要,又为什么非要建网络模型
1.1 绕组绝缘寿命和磁钢退磁是两条“高压线”
电机设计阶段做温度预测,最直接的理由是保护两样东西:绕组绝缘和永磁体。哦,有时候还要加上轴承油脂。
绕组绝缘的寿命和温度之间服从一个非常经典的阿伦尼乌斯经验关系。工程上常用“10℃法则”来辅助理解:绝缘材料在基准温度之上每升高10℃,热老化寿命大约减半。举个例子,某B级绝缘的额定寿命可能是20000小时,绕组长期比额定温度高20℃运行,寿命就只剩下5000小时上下。这在量产产品里是不可接受的。
磁钢的问题更麻烦,它是不可逆的。钕铁硼永磁体在高温下会发生不可逆退磁,且矫顽力越低的牌号对温度越敏感。我们常用的N35SH磁钢,最高工作温度约150℃,但如果反磁场很强,可能在130℃就开始出现明显的退磁拐点。磁钢一旦掉了磁,电机反电动势下降、转矩常数变小、电流跟着往上飙,进一步加剧发热,最后整个系统进入正反馈恶性循环。
所以温度预测绝不是“看个数字心里有底”那么简单,它直接关系到绝缘寿命计算、磁钢退磁校核、轴承油脂寿命评估,再往大了说,关系到一台电机在客户那里能不能质保三年。
1.2 稳态温升校核不够用了,控制器需要“实时温度”
传统的热设计方法是稳态温升校核,设计人员用平均损耗和冷却条件算一个稳态温度,乘上一个经验安全系数,然后就在那守着降额曲线。这个方法的问题是它只能回答“最终温度多高”,回答不了“现在温度多高”。
现代电机控制器里普遍实现了基于温度的实时降额控制。整车工况、伺服工况都是剧烈变载的,上一秒还在峰值转矩,下一秒就空载滑行。如果只用固定的降额曲线,要么太保守浪费性能,要么太冒险损坏电机。控制器的热管理策略需要每一时刻预测绕组热点温度,在逼近限值之前提前降转矩。
在这种需求下,有限元热仿真不合适——一个三维瞬态电磁热耦合模型在普通工控机上算一晚上才出一个工况的结果,在控制器里根本跑不动。电机热网络温度预测模型就派上用场了:它把电机离散成几十个温度节点,用常微分方程描述热量传递,计算量小到绝大多数MCU里都能实时跑,同时保留了对电机物理结构的物理解释能力。这就是为什么热网络模型到现在依然没有过时。
2. 从电机结构到热网络拓扑:我建网时是怎么切节点、选热路的
2.1 热路就是电路:热阻、热容、热源的等效关系
拿过一台电机,我通常不会急着画网络,先在心里把热传递过程转成电路。这个类比是所有热网络模型的地基。
热流量对应电流,温度差对应电压,热阻对应电阻,热容对应电容,损耗则相当于电流源。传热的三种基本方式在电路里一一对应:导热对应热阻,对流也对应热阻(但与表面换热系数相关),辐射在常规电机温升范围里经常折算成一个等效对流系数;热容则是节点储存热量的能力,代表温度变化的惯性。
集中参数热网络模型本质上是在做“空间离散化”:把一个连续的物理对象,划分成若干个温度近似均匀的节点。这个划分不是拍脑袋,背后有个物理判据需要考虑——毕渥数(Bi数)。Bi数的物理意义是内部导热热阻与表面换热热阻之比。如果Bi数远小于1,可以认为物体内部温度基本均匀,适合作为一个集中节点。对电机铁芯来说,硅钢片导热系数高,在换热系数不太大的风冷条件下,齿部或者轭部单独划分为一个节点通常能满足这个条件。但如果是有强迫液冷的机壳,换热系数很高,机壳周向温度分布不均匀,可能就需要把机壳进一步划分成多个节点。
还有一个判断依据是傅里叶数(Fo数),它反映了热扰动传播的深度,可以用来判断瞬态过程中对象能否视为薄壁物体。我在判断绕组是否该分层时偶尔会用它辅助分析,但实际工程中用毕渥数更直接一些。
2.2 一台永磁同步电机的典型网络划分
以一台常见的液冷永磁同步电机为例,我给它是这样划分节点的。
先说绕组。绕组不能简化成一个节点。电机绕组由槽内有效部分和端部组成,两者散热路径完全不同:槽内绕组主要往定子铁芯传热,端部绕组主要靠腔体内空气对流和少量辐射散热。如果合成一个节点,端部和槽内的温差就完全看不出来了,而恰恰端部可能是整个电机温度最高的地方。所以我至少分两个节点:槽内绕组有效部分节点和绕组端部节点。
定子铁芯也可以再细分。定子齿部和轭部散热条件和产热分布不同,齿部靠近绕组,主要接收槽内绕组传导过来的热量;轭部贴近机壳,是定子向机壳传热的主要通道。齿部、轭部分开建模,网络精度明显提升。如果追求更细,甚至可以每颗齿单独一个节点,但那样节点数爆炸,工程上不必要。
转子和转轴区域的分割也要结合散热需要考虑。转子磁钢既是热源(涡流损耗),又是温度敏感对象。我通常会单独给磁钢建一个节点,转子铁芯一个节点,转轴一个节点。转轴两端连接轴承,轴承座和端盖各自合并为节点。如果腔体内有空气对流,那还要建一个“腔内空气”节点,连接绕组端部、转子表面、定子端面和机壳内壁。
机壳节点也不能省。液冷机壳的水道区域和端部区域温度差异很大,至少分两个节点以上。水道附近直接决定冷却边界条件,端部机壳主要靠自然对流和辐射散热,温度和结构本体也有差异。
这样算下来,一台常规永磁同步电机的热网络节点数大约在12到30个之间。我再把每个节点的热源、热容和连接关系整理成下表:
| 节点 | 热源 | 热容来源 | 主要散热路径 |
|---|---|---|---|
| 槽内绕组 | 铜耗 | 铜、绝缘漆、浸渍漆 | 定子齿部、定子轭部 |
| 绕组端部 | 铜耗端部比例 | 铜、绝缘漆 | 腔内空气、端盖 |
| 定子齿部 | 铁耗(齿) | 硅钢片 | 槽内绕组、定子轭部 |
| 定子轭部 | 铁耗(轭) | 硅钢片 | 机壳水道 |
| 腔内空气 | 无 | 空气热容(极小) | 定子端面、转子表面 |
| 转子铁芯 | 转子铁耗 | 硅钢片 | 磁钢、转轴、腔内空气 |
| 磁钢 | 涡流损耗 | 钕铁硼 | 转子铁芯、腔内空气 |
| 转轴 | 轴承传热 | 钢 | 轴承、腔内空气 |
| 轴承/端盖 | 轴承摩擦损耗 | 钢 | 机壳、外部空气 |
| 机壳水道 | 无 | 铝合金 | 冷却液对流 |
2.3 热阻怎么算:导热、对流、接触热阻的计算与取值
热网络模型建立后的第一版参数,都是从几何尺寸和材料物性算出来的。
导热热阻的计算公式是R = L / (λ × A)。意思是:热阻等于导热路径长度除以导热系数与截面积的乘积。这个公式看着简单,实际应用时需要在径向和轴向上分别处理。电机里硅钢片的导热系数是各向异性的,单片硅钢片平面内导热系数可以到40-60 W/(m·K),但叠片方向靠片间绝缘层和叠压间隙,等效导热系数会跌到1-5 W/(m·K)。这个差异如果不注意,折算出来的热阻能差一个数量级。
铁芯的等效导热系数,我一般取轴向(叠压方向)的经验值1.5-3 W/(m·K),径向经验值则是20-30 W/(m·K)。有条件的话用激光闪射仪实测样件最准确,没有条件就靠经验值起步,后续用实验数据去校。
对流换热系数的取值范围很宽,也是最容易出错的地方。我把自己常用的经验范围整理成了下面的表:
| 冷却方式 | 换热系数范围 W/(m²·K) | 备注 |
|---|---|---|
| 自然风冷机壳外壁 | 5-15 | 与表面黑度、结构有关 |
| 强迫风冷风道 | 30-300 | 取决于风速和流道设计 |
| 水冷机壳水道 | 1000-8000 | 与流速、水道结构强相关 |
| 油冷喷淋 | 300-2000 | 喷油量和覆盖面积影响大 |
| 腔内空气与绕端部 | 10-50 | 转子旋转会强化对流 |
| 转子端面与腔内空气 | 30-100 | 转速越高系数越大 |
接触热阻是一个经常被人忽略的问题。定子铁芯外圆与机壳内圆之间的配合如果是过盈压入,金属接触面存在微观间隙,实际接触面积远小于名义面积,热流只能在接触凸点处通过。工程上常用“间隙等效厚度”来折算接触热阻。我用过的一种方法:取间隙等效厚度0.02-0.05mm,间隙内导热系数按空气计算,折算出一个接触热阻值。如果是灌胶或者涂导热硅脂的装配,接触热阻会大幅下降。总之,不要把这个接触热阻设为零,否则仿真温度会明显偏低。
3. 参数辨识与实测校准:让模型从“能跑”到“可信”
3.1 先把传感器的位置和模型的节点绑定
热网络模型建好初版参数之后,只是个半成品。要让模型可信,必须用真实温升实验来校核。但校核之前有个关键动作:搞清楚传感器测量位置对应网络中的哪个节点。
热电偶测到的绕组温度,取决于探头埋在绕组哪个位置。如果是嵌在槽内的测温电阻(PT100),它测的是槽内绕组平均温度附近的值,对应“槽内绕组”节点。如果是贴在绕组端部表面的热电偶,那它测的是表面温度,对应“绕组端部”节点。这两个位置温度可以相差15℃以上,不能混为一谈。
我见过有人拿端部表面热电偶测出来的温度去验证槽内绕组节点,最后模型越校越歪,就是这个原因。叶片热电偶最好做成绑轧式,紧贴绕组,并确认绑轧不会影响局部对流。传感器标定也不能省,做实验之前用冰点或干体炉过一遍,保证温度采样的绝对误差控制在±1℃以内。
实验工况设计是另一门学问。做参数辨识用的工况不能太单一,至少覆盖:低速大转矩(铜耗为主)、高速轻载(铁耗和机械损耗占比高)、中间转速不同冷却液流量。每个工况都要记录相电流、电压、转速、冷却液入口温度、流量,并保证运行足够长时间达到热稳态。这样得到的温升数据才能把模型里不同热阻段的误差区分出来。
3.2 用实验数据做参数辨识
有了实验数据之后,参数辨识本质上是一个优化问题:寻找一组热阻、热容值,使得模型预测温度曲线和实测温度曲线的误差最小。我经常用的方法是最小二乘类算法,比如Levenberg-Marquardt算法。把每个时间步的温度残差平方加起来作为目标函数,让优化程序去迭代修改模型参数,直到残差最小。
不过参数辨识不能一股脑把所有参数都丢给算法去自由优化,那样很容易出现“过拟合”——模型在某些工况下确实很准,换个工况就垮了。我的做法是分级处理:
先把可靠性最高的几何类和材料类参数直接固定,比如铜的热容、硅钢片密度比热容、铁芯尺寸这些,不需要辨识。然后只让算法去辨识那些不确定性大的参数,比如接触热阻、绕组绝缘等效导热系数、腔内空气对流换热系数、水道换热系数、损耗在绕组端部的分配比例。这样可以最大限度地减少辨识自由度,提升参数的可辨识性。
辨识完成后的验证环节同样重要。千万不要只用参与辨识的那几组数据进行验证,那只能证明优化收敛了,证明不了模型泛化能力强。正确的做法是:留出一两个工况不做辨识,等参数辨识结束后再用这两组数据进行盲测,看看模型预测结果是否依然准确。我个人的标准是盲测工况的绕组温度误差在±5℃以内,冷却相关的温度误差在±3℃以内,才认为模型可以交付使用。
4. 仿真和实测对不上?我的排查链路
4.1 症状一:稳态温度整体偏高或偏低
如果模型算出来的所有节点温度系统性偏高或偏低,首先怀疑两个参数:总热耗和总热阻。
总热耗如果估算偏大,所有测点温度都会跟着偏高。但我们做的是电机试验,输入电功率、输出机械功率都测得到,总损耗=输入电功率-输出机械功率,这个值误差不大。真正容易出问题的是损耗在绕组和铁芯之间的分配比例。高频PWM供电下铁耗和附加损耗可能比预期高很多,绕组的交流损耗也会随频率和温度变化。如果你发现定子温度准而转子温度偏差大,大概率是损耗分配不对。
总热阻偏低的典型表现是:模型温度整体高于实测。比如水道换热系数初值取大了,模型里冷却“太强”,自然温度偏低。机壳水道流量的测定也不能只看泵的频率,最好直接装流量计,流量偏差会造成对流系数大幅偏移。
4.2 症状二:时间常数明显不对
瞬态过程中模型温度爬升太快或太慢,问题多半出在热容或者节点划分上。
热容的取值其实不容易错,材料质量和比热都是查表可得。但是“有效热容”这个概念容易被忽略。以槽内绕组节点为例,它不只是铜的热容,还包括绝缘漆、绝缘纸、浸渍漆和部分槽楔的热容。这些材料热容虽小,但对瞬态响应影响明显。如果建模时只算铜的热容,时间常数会明显偏快。
节点划分太粗也会导致时间常数错误。例如把整个机壳当成一个节点,冷却水道对机壳的冷却效果被平均化,水道附近机壳的真实温度波动就看不出来了。时间常数的匹配,需要在瞬态段单独检查。方法是做一个阶跃负载实验:电机从空载直接切到额定转矩,连续记录绕组温度前30分钟的上升曲线,把它与模型预测曲线对比,看斜率是否一致。
4.3 症状三:转速对温升的影响没有体现
很多热网络模型在低速工况校得好好的,一上高速偏差就出来了。这通常是两个原因。
第一是腔内空气对流换热系数对转速的依赖。转子高速旋转像个小风扇,腔内空气的流速显著增加,绕组端部和转子表面的等效对流换热系数会随转速上升。如果模型中这个系数写死不变,高速下模型温度就会偏高。
第二是机械损耗和附加损耗随转速增加而变大。轴承摩擦损耗、转子风摩损耗和齿槽转矩脉动引起的附加损耗都跟转速相关。如果热网络模型里的热源只考虑了铜耗加铁耗,高速工况下模型就有可能显著低于实测温度。排查方法很简单:单独跑一次空载温升试验,此时输出的机械功率为零,输入功率近似等于机械损耗和铁耗。对比这个数据就能把损耗分配校出来。
4.4 症状四:冷却条件变化后偏差扩大
有些模型在一个冷却条件下校得很准,换一个冷却流量或入口温度就不行了。这种问题一般出在冷却边界条件的建模方式上。
最常见的一个坑是:只把冷却液入口温度当作边界温度,忽略了冷却液沿水道流动时的温升。电机损耗几十千瓦量级时,冷却液出水口和入水口温度可以相差5-10℃,如果模型中所有机壳节点都对着同一个入口温度,水道下游的机壳温度就会被明显低估。正确做法是把水道沿流动方向分成多段,每段入口温度等于上一段出口温度,才能真正反映冷却液的实际升温。
另外一个容易被忽略的问题是水道结垢和壁面粗糙度。长期运行的电机水套内壁如果结垢,传热系数会下降百分之二三十。做实验室验证时水套是干净的,但实际使用一段时间后模型就开始偏差。这时候要么在水道对流换热模型中乘以一个老化修正系数,要么在控制器里用实测温度做在线修正。
5. 热网络模型的工程落地:从离线仿真到在线观测器
5.1 在线运行需要什么样的模型结构
热网络模型真正发挥最大价值的地方,是作为电机控制器内部的在线温度观测器。把模型塞进控制器代码之前,需要把模型整理成状态空间形式:
dT/dt = A·T + B·P
其中T是节点温度向量,P是热源向量(铜耗、铁耗、机械损耗等),A矩阵包含节点间的热阻关系,B矩阵是热输入系数。写成这种形式之后,用一阶欧拉法或者四阶龙格-库塔法就能离散化,在控制器的每个控制周期里迭代一次。一个20节点左右的模型,在常见的单片机定时中断里执行时间远远小于1毫秒,实时性完全不是问题。
生成代码时推荐使用模型库工具自动生成C代码,减少手工编写矩阵运算带来的低级错误。我在工程中使用的流程是:在建模环境里完成图形化建模和离线验证,然后自动生成嵌入式C代码,再接入控制器外围的温度采样和电流采样信号,做成一个独立的“热管理模块”。
5.2 用实测温度做反馈修正,别让模型“裸奔”
任何模型都有误差,在线运行中温度传感器是唯一的校准信息来源。如果控制器里已经装了绕组温度传感器或机壳温度传感器,那这些信号绝对不能浪费,要做反馈修正。
工程中常用方法包括模型参考自适应和无迹卡尔曼滤波。以绕组温度传感器为例:假设绕组端部有实测温度,而模型预测的温度与实测值产生偏差,就可以利用偏差去修正模型内部的损耗分配系数或者热阻参数,让模型逐渐趋向真实状态。这个做法的本质是让模型“看着温度计走”,长期运行漂移也被校正掉。
有一种常见误区:既然已经装了传感器,直接读传感器不就行了,为什么还要模型?这是因为传感器响应慢,而且不可能覆盖电机里所有部位。绕组热点在槽内,传感器未必能插到槽内最深的位置;转子磁钢温度根本没有办法用传感器直接测量。模型可以推断出那些没有传感器位置点的温度,同时用有传感器的位置做校验,这个组合比单独用传感器或者单独用模型都可靠得多。
5.3 热网络模型和有限元、机器学习之间的取舍
我在不少场合被问到:现在机器学习这么火,为什么不直接用神经网络预测温度?这个问题得分开看。
有限元/计算流体力学方法精度高,能细致刻画电机内部复杂流场和温度场,但它的网格生成和计算代价决定了它只适合设计阶段的离线仿真,做不了实时预测。机器学习方法在数据充分、工况稳定的场景下确实能达到很高精度,但它是黑盒模型,外推能力差——训练数据中没有覆盖的工况,预测结果往往不可信,而且几乎无法解释“为什么这个温度高”。
电机热网络温度预测模型的优势在于:物理结构清晰、计算量小、适合在线执行、拥有足够的外推解释能力。它的劣势是需要一定的人工建模经验,而且模型精度上限受限于节点划分的精细程度。实际工程中,我一般是设计初期用有限元做精细化热仿真验证方案,然后用热网络模型做整车的在线热管理,机器学习方法在数据积累充足之后再做辅助校核。三者不是替代关系,而是不同阶段的不同工具。
下表是我自己常用的选型判断:
| 方法 | 计算成本 | 物理可解释性 | 适用范围 |
|---|---|---|---|
| 三维有限元/CFD | 高 | 强 | 设计阶段、热点分析 |
| 集总参数热网络 | 极低 | 强 | 在线观测、控制、批量化参数扫描 |
| 神经网络/机器学习 | 中 | 弱 | 数据充足、工况边界稳定 |
| 查表法 | 极低 | 无 | 粗略估算、单一工况 |
回到文章开头的那个案例。当时我把热网络模型建好、标定完、嵌进控制器之后,台架上的实测数据变成了模型的“校正源”。同一台电机,同样的工况,模型预测绕组热点温度与实测最大偏差稳定在4℃以内,而控制器的降额逻辑也因此可以提前1.5秒介入,把峰值转矩降下来,既没有浪费性能,也没有让绕组越过极限。这个项目结题后我自己复盘,最大的体会是:热网络模型难的不是公式推导,而是三件事——节点划分的依据要站得住脚,参数初值要来源于物理而不是拍脑袋,标定之后必须保留盲测工况做验证。这三件事做到了,热网络模型在工程中的可靠性一点都不比更复杂的工具差。