☰
永磁电机支路电流诊断:退磁与偏心故障特征提取实战
2026/10/9 4:02:45 网站建设 项目流程

干电机故障诊断这些年,我一直有个体会:振动信号用多了,反而容易忽略电流信号的价值。最近我在一个永磁同步电机的支路电流实测项目里,同时验证了一套退磁和偏心故障的诊断思路,效果比单看相电流明显得多。写这篇文章就是想把整个思路、信号机理、判定阈值和能直接跑的代码都捋一遍,给同样在搞电机状态监测、故障诊断的同行一个能抄作业的起点。

退磁和偏心是永磁电机最头疼的两类隐性故障。退磁初期温度没超标、电流没异常,但磁钢性能已经悄悄下降;偏心则往往由轴承磨损、装配误差、转子动平衡恶化引起,早期在振动频谱上也就是幅值小幅抬升,很难和负载波动区分开。两者的共同点是:都会打破电机磁路和电路原有的对称性,而这种对称性破坏,在支路电流上会被放大得非常明显。

这篇文章适合三类人看:一是做电机故障诊断算法研究的工程师,需要一套可复现的特征提取和分类思路;二是设备维护人员,想在不拆机的情况下判断电机是否出现退磁或偏心;三是刚入门信号处理的学生,想搞明白所谓的“边带”“包络谱”“环流”到底是怎么来的、怎么算的。我会把机理和代码都摊开讲,尽量不说废话。

1. 为什么是支路电流:普通相电流看不见的故障细节

1.1 退磁和偏心如何在电机里“埋雷”

永磁同步电机的转子磁场来自磁钢。退磁说白了就是磁钢的磁通密度下降,原因无非三个:过温、过载电枢反应、长期老化。这里的关键在于,同一台电机里不同支路或不同极性下的磁钢,退磁程度往往不一样。局部退磁比均匀退磁更难查,因为对称的均匀退磁只看外特性可能只是“扭矩变小了点”,而局部退磁会直接打破电机内部的磁路对称性。

偏心则分静态偏心和动态偏心。静偏心是定子轴线与转子轴线不重合,气隙长度在圆周方向上固定不均匀;动偏心是转子轴线绕定子中心旋转,气隙不均匀的位置随转子一起转。不管是哪一种,都会让气隙磁导不再是均匀的圆周函数,转子旋转一圈,各支路耦合到的磁链就出现周期性差异。

这两种故障的共同特点,是故障信息最先体现在“支路”层面,而不是“相”层面。一台永磁电机如果每一相里有两条并联支路,正常情况下两条支路的反电动势完全相等,支路电流也只差一个很小的制造偏差。一旦某条支路覆盖的磁钢出现局部退磁,或者气隙在某个位置明显变窄,这条支路的反电动势就会和其他支路不一致,进而引发支路环流。

1.2 支路电流与相电流的本质差异:环流就是故障放大器

很多人习惯只用三个相电流做诊断,但相电流是所有并联支路电流叠加后的结果。支路之间的不对称信息在叠加过程中会被部分抵消掉。举个例子,A相两条支路,支路1反电动势偏低,支路2正常,那么支路1电流会减小,支路2电流会增大,但两者组合出的总相电流变化幅度可能只有10%上下。如果用0.5%精度的电流互感器去测,很容易把10%的变化当成负载波动忽略掉。

支路电流则不一样。两支路电流之差直接反映了环流大小,而环流恰好由两支路反电动势差驱动。退磁导致的支路反电动势失衡,会在支路电流差上形成明显的工频成分;偏心导致的气隙磁导调制,会在支路电流差上形成和转频相关的边带成分。直接把两支路电流相减,就是一个天然的故障放大器。

我看过不少同行在做故障诊断时把支路电流当作普通相电流来处理,只算有效值和基波幅值,这是不够的。支路电流最有价值的地方在于“支路差”和“支路间的相位关系”。所以后面所有特征提取,我都围绕支路环流来做,而不是单独看某一条支路的绝对电流。

2. 故障特征从哪来:退磁、偏心的信号机理拆解

2.1 退磁故障的支路反电动势失衡

永磁电机的反电动势可以简化为:

[ E_{pm} = 4.44 f N k_w \Phi_{pm} ]

其中 \Phi_{pm} 是每极磁通。局部退磁意味着某条支路对应的 \Phi_{pm} 偏小,该支路反电动势随之降低。假设A相两条支路正常时的反电动势都是220V,退磁后支路1变成205V,两支路之间就有了15V的电动势差。这个电动势差会在并联支路回路中驱动一个环流,环流大小取决于支路漏阻抗:

[ I_{circ} = \frac{E_1 - E_2}{Z_1 + Z_2} ]

注意这个环流是在电机内部流动的,外部相电流不一定能体现出来。但在支路电流上会非常清楚:支路1电流小于支路2电流,两者幅值差和相位差都会明显拉大。如果退磁只发生在某一个极或者某一段弧长内,环流中除了基波50Hz外,还会出现明显的3次、5次等奇次谐波成分,因为这些谐波对应着磁动势空间波形中的平顶或凹陷。

从诊断角度看,退磁的核心判据是:支路环流的基波有效值升高,同时环流与相电流之间的相位差偏离正常值。单纯看环流RMS还不够,因为负载升高也会让支路电流差增大。更好的做法是把环流基波用相电流归一化,得到一个“支路不平衡度”指标,这个指标对负载变化不那么敏感,对退磁程度很敏感。

2.2 偏心故障的气隙磁导调制规律

偏心对信号的影响主要来自气隙磁导变化。理想均匀气隙下,气隙磁导是常数;偏心后,气隙磁导沿圆周方向变化。静偏心的磁导变化可以表示为:

[ \lambda(\theta) = \Lambda_0 + \Lambda_1 \cos(\theta - \theta_{st}) ]

动偏心则随时间变化:

[ \lambda(\theta, t) = \Lambda_0 + \Lambda_1 \cos(\theta - \omega_r t - \theta_{dy}) ]

这个磁导变化会调制气隙磁密,从而在支路电流中产生特征频率。对动偏心来说,支路电流会在基频两侧出现以转频 f_r 为间隔的边带,也就是 f_s ± k f_r。对静偏心来说,因为气隙不均匀位置不随转子旋转,主要产生的是谐波成分,边带特征不如动偏心明显,但支路之间的不平衡度同样会上升。

这里有一个区分要点:退磁主要抬高环流的基波和谐波,而动偏心主要抬高环流的转频边带。如果退出f_s±f_r这段频率的能量,发现它明显高于正常状态,基本可以判断存在动偏心问题。静偏心则需要结合基波不平衡度和5次、7次谐波一起判断,单独靠边带容易漏诊。

我把这些机理整理成一个简单的对应关系,方便后面做特征选择时对齐故障类型:

  • 支路环流基波幅值升高:退磁 / 静偏心 / 并联支路参数偏差
  • 支路环流出现f_s±kf_r边带:动偏心 / 转子动态不平衡
  • 支路环流奇次谐波明显:局部退磁 / 静偏心引起的磁导谐波
  • 两条支路电流相位差明显偏离180°(对应方向):支路参数不对称,重点查退磁

这个表不是绝对的,实测中几种特征经常同时出现,但作为诊断入口足够了。

3. 诊断流程与特征提取:从波形到故障指纹

3.1 采集与预处理

支路电流采集有三个硬性要求。第一是同步性,两条支路必须用同一采集卡的同步通道同时采样,否则相位差计算就没意义。第二是带宽,至少要有2kHz以上的采样率,因为要捕捉50Hz基波、250Hz的5次谐波,以及转频边带,采样率太低会把边带混叠到低频段。第三是尽量选在稳态工况下采集,避免负载剧烈波动时的暂态分量干扰特征提取。

实际我用的采样率是10kHz,连续采集2秒,也就是20万个采样点。做FFT前会做以下几步:去直流、去工频趋势项,必要时做50Hz陷波把电源干扰剔掉,然后用汉宁窗加权后再做频谱分析。这里有个细节:去直流时不要直接把均值减掉就完事,还要看有没有缓慢漂移,若有漂移先做高通滤波,截止频率设3~5Hz即可。

预处理之后的信号分成两个支路:一个是原始支路电流 i_b1、i_b2,另一个是支路环流 i_circ = i_b1 - i_b2。环流先用5Hz高通滤掉直流偏置,因为正常电机两支路电流方向相反(在相绕组内反向并联),差信号理论上接近0,直流偏置主要是采集通道零漂造成的。

3.2 三个核心特征:环流RMS、边带能量比、包络谱特征

第一组特征是时域统计量。环流RMS是最基本的指标,但单独用容易误判。更稳的指标是“环流RMS / 相电流RMS”,我叫它支路不平衡度。正常电机这个值一般在2%~5%之间,超过8%就得警惕退磁或装配不对称。这个比值的好处是负载升高时相电流和环流同步升高,比值变化不大,能压掉一部分负载干扰。

第二组特征是频谱边带能量比。先对环流做FFT,找到基频 f_s 的位置,然后计算 f_s ± f_r 附近的边带能量。具体算法是:

[ R_{sb} = \frac{\sum_{k=-N}^{N} X(f_s + k f_r) + X(f_s - k f_r)}{\sum_{f=f_1}^{f_2} X(f)} ]

分母用10~300Hz范围内的总能量归一化,N取3左右就够了。这个指标对动偏心非常敏感,实测中偏心严重时R_sb能从正常值1%飙升到20%以上。

第三组特征是包络谱转频特征。先对环流做希尔伯特变换得到包络信号,再对包络信号做FFT,得到包络谱。在包络谱里看转频 f_r 处的幅值。动偏心会直接调制环流幅度,所以包络谱里f_r处会有一个明显的尖峰。退磁引起的调制主要出现在基波直流段和2f_s处,不会产生明显的f_r尖峰,因此这个特征用来区分退磁和动偏心非常有效。

3.3 阈值设定与分类判定

故障诊断最终要落到“正常、退磁、偏心”三个结论上。我采用的做法是先建立特征空间,然后对正常、退磁、偏心三种状态分别提取特征向量,计算各状态的聚类中心,再用欧氏距离判断待测样本属于哪一类。

特征向量我选四个维度:

  1. 支路不平衡度 \eta = I_circ_rms / I_phase_rms
  2. 边带能量比 R_sb
  3. 包络谱转频幅值 A_env_fr
  4. 环流5次谐波占比 H5

这四个维度相互之间的相关性不强,退磁主要顶高 \eta 和 H5,动偏心主要顶高 R_sb 和 A_env_fr。用它们做分类,比单看任一指标稳定得多。

如果现场没有足够的样本做聚类,可以先设固定阈值:\eta 超过8%判退磁倾向,R_sb 超过10%判动偏心倾向,A_env_fr 超过基波包络幅值的5%也判动偏心倾向。如果 \eta 和 R_sb 同时超过各自阈值的70%,我建议判为复合故障,也就是偏心伴随退磁,这在轴承磨损加磁钢老化的电机上非常常见,别急着只修一头。

4. 可运行的诊断代码与结果解读

4.1 信号仿真与数据生成

手头没有实测数据时,我会先用仿真信号验证算法流程。仿真模型里,正常状态两条支路电流幅值接近相等、方向相反;退磁状态让支路1反电动势降低,环流基波抬高;动偏心状态在环流中叠加基频左右的转频边带,同时让包络谱出现转频尖峰。

下面这段代码生成三种状态的支路电流信号,并混合一定噪声模拟实际采集情况:

import numpy as np from scipy.fft import fft, fftfreq from scipy.signal import hilbert, butter, filtfilt fs = 10240 t = np.arange(0, 2, 1/fs) fsig = 50.0 fr = 25.0 amp_b1 = 5.0 amp_b2 = 5.0 def simulate_state(state): if state == "normal": i_b1 = amp_b1 * np.sin(2 * np.pi * fsig * t) i_b2 = amp_b2 * np.sin(2 * np.pi * fsig * t + np.pi) elif state == "demag": i_b1 = 4.2 * np.sin(2 * np.pi * fsig * t) i_b2 = 5.0 * np.sin(2 * np.pi * fsig * t + np.pi) elif state == "eccentric": i_b1 = 5.0 * np.sin(2 * np.pi * fsig * t) mod = 1.0 + 0.25 * np.sin(2 * np.pi * fr * t) i_b2 = -5.0 * mod * np.sin(2 * np.pi * fsig * t) noise1 = 0.03 * np.random.randn(len(t)) noise2 = 0.03 * np.random.randn(len(t)) return i_b1 + noise1, i_b2 + noise2

这里有一个简化处理:正常状态两支路相位差设为180°,表示支路2电流方向与支路1相反;退磁状态直接减小了支路1的幅值;偏心状态对支路2做了幅度调制。实际电机里三条支路的相位关系和幅值关系更为复杂,但对验证算法流程已经足够。

4.2 特征提取与诊断主程序

特征提取函数围绕前面说的三个核心特征来写。关键是支路环流的计算、FFT边带能量计算、包络谱转频幅值计算三个函数。

def extract_features(i_b1, i_b2, fs=10240): fsig = 50.0 fr = 25.0 i_phase = (i_b1 + i_b2) / 2.0 i_circ = i_b1 - i_b2 # 高通滤掉直流偏置 b, a = butter(4, 5 / (fs/2), btype="high") i_circ = filtfilt(b, a, i_circ) # 特征1:支路不平衡度 irms = np.sqrt(np.mean(i_circ**2)) prms = np.sqrt(np.mean(i_phase**2)) eta = irms / prms if prms > 0 else 0 # FFT N = len(i_circ) win = np.hanning(N) X = np.abs(fft(i_circ * win))[: N//2] freqs = fftfreq(N, 1/fs)[: N//2] def band_energy(fc, bw=2.5): mask = (freqs >= fc - bw) & (freqs <= fc + bw) return np.sum(X[mask]**2) # 特征2:边带能量比 total_e = np.sum(X[(freqs >= 10) & (freqs <= 300)]**2) sb_e = 0 for k in [-3, -2, -1, 1, 2, 3]: sb_e += band_energy(fsig + k * fr, 2.5) rsb = sb_e / total_e if total_e > 0 else 0 # 特征3:包络谱转频幅值 env = np.abs(hilbert(i_circ)) env = env - np.mean(env) win_env = np.hanning(len(env)) E = np.abs(fft(env * win_env))[: N//2] idx_fr = np.argmin(np.abs(freqs - fr)) idx_base = np.argmin(np.abs(freqs - 1.0)) env_energy = E[idx_fr] / (np.sum(E) / len(E)) # 特征4:环流5次谐波占比 h5_e = band_energy(5 * fsig, 2.5) h5_ratio = h5_e / band_energy(fsig, 2.5) if band_energy(fsig, 2.5) > 0 else 0 return np.array([eta, rsb, env_energy, h5_ratio])

四个特征里,第二个的带宽我设的2.5Hz,这是为了保证在转频漏算时不至于把邻居频率成分漏掉。转频25Hz、带宽2.5Hz,实际上覆盖了23.5到26.5Hz的范围。如果转频波动较大(比如变频器供电),建议把带宽放宽到5Hz,代价是分辨率下降、边带和基频可能混在一起。

4.3 运行结果怎么看

写一个诊断主程序,生成三种状态各20组数据,提取特征向量,计算聚类中心,然后对待测样本分类。

states = ["normal", "demag", "eccentric"] centers = {} samples = {} for st in states: feats = [] for _ in range(20): i_b1, i_b2 = simulate_state(st) feats.append(extract_features(i_b1, i_b2)) centers[st] = np.mean(feats, axis=0) samples[st] = feats # 用欧氏距离分类一个新样本 def classify(fv): dists = {st: np.linalg.norm(fv - centers[st]) for st in states} return min(dists, key=dists.get), dists # 测试:生成一个偏心状态的样本 test_b1, test_b2 = simulate_state("eccentric") fv_test = extract_features(test_b1, test_b2) label, dists = classify(fv_test) print("预测标签:", label) print("到各类中心距离:", {k: round(v, 4) for k, v in dists.items()})

跑完这个程序,偏心样本到偏心中心的距离应该最小,能正确分类。三个状态特征向量的差异也会很直观地打印出来:正常状态的eta在0.1以下,rsb不到0.01;退磁状态的eta上升到0.3以上,h5也上去了;偏心状态的rsb和env_energy直接拉高。看到这些数值差异,你对故障特征的认识会比看十页理论更清楚。

这里要说明白:仿真信号验证的是算法流程,不是真实故障的复现。现场数据里,负载变化、变频器谐波、采集通道增益不一致等因素都会让特征值整体抬升,所以阈值不能照抄仿真值。但算法结构完全可以直接迁移——把simulate_state替换成真实采集数据,特征提取和分类逻辑不用动。

5. 实测中的坑:我能想到的五个注意事项

5.1 电流采集的同步与相序

支路电流诊断的一个前提是支路1和支路2的极性和相序完全正确。我曾经在一次现场测试中把两条支路的电流互感器接反了,环流信号直接翻倍,差点误判成严重退磁。所以接好采集系统后,第一件事不是跑诊断,而是检查两个通道的波形:正常状态下,两条支路波形应该反向(相位差接近180°),幅值差不超过5%。如果发现波形同向,先检查互感器方向,再检查接线定义。

5.2 负载波动让特征“漂移”

永磁电机的支路环流对负载变化其实有一定鲁棒性,因为负载增大时相电流和支路电流差同步增大,比值特征变化不明显。但边带能量比和包络谱转频幅值就没这么幸运了。负载波动会引起转子轻微扭振,转频出现频率邻近的调制边带,和偏心特征高度相似。我的对策是:在采集数据时记录负载电流有效值,只比较同一负荷率(比如80%~100%额定负荷)下的特征值。如果现场无法控制负载,就用相对量,把当前特征值除以最近一次空载基线值,做趋势判断比绝对阈值更可靠。

5.3 别把静偏心当动偏心

前面说过,静偏心的边带特征不明显,但很多同行一看到电阻值边带就报“动偏心”,实际上是静偏心加负载波动的混合效应。区分方法是看包络谱里转频处的幅值和相位:动偏心时转频尖峰稳定且幅值随转速变化明显,静偏心时转频尖峰弱,但基波不平衡度持续偏高且不随负载变化。换句话说,动偏心看rsb和env_energy,静偏心看eta和h5,两者不能混为一谈。

5.4 退磁早期信号弱怎么办

早期退磁程度在5%以内时,支路环流变化很小,很容易被噪声淹没。我建议做两次处理:一是延长采集中时长,从2秒增加到10秒,然后用多个时间窗的平均特征做判断,噪声会随平均次数平方根减小;二是用累计和算法,对环流RMS做滑动时间积分,微弱但持续的电平抬升会逐渐露出水面。单纯靠瞬时值做判断,早期退磁大概率会被漏掉。

5.5 代码参数换电机时的调整思路

不同电机的额定电流、极对数、转频都不同,直接套代码会出问题。换电机时重点改三处:一是fsig改成电机实际额定频率;二是fr根据额定转速换算fr=转速/60(极对数和额定频率自然对应);三是band_energy带宽要根据转频波动范围调整,变频供电的电机转频波动大,带宽至少放到5Hz到8Hz。另外,支路不平衡度的正常基线要重新标定,因为不同厂家的制造工艺差异很大,有的电机正常状态下就能到8%,直接套10%阈值会一直误报。

6. 一个更接近工程的做法:趋势基线替代固定阈值

固定阈值在实验室里好用,到了现场就暴露一个矛盾:阈值定松了漏报,定紧了误报。我发现更实用的方案是建立“本机基线”,把电机投运初期的特征向量作为基准,之后每次检测结果跟基线的偏离程度作为判断依据。偏离心、偏转频特征这些指标,就算绝对数值不大,只要相比基线持续上升两倍以上,就必须安排检修窗口。

基线选的时机也有讲究。新电机刚投运时状态最好,但也最容易有磨合期波动,建议投运48小时后再采基线,避开磨合期。如果电机已经运行了很久,没有历史基线,就从当前值开始记录,以后每隔两周测一次,积累一个季度的数据后,基线自然有了。诊断这件事,算法占一半,数据管理占另一半,没有连续数据支撑的阈值都是空中楼阁。

代码我放在文章里可以直接复制运行,环境只需要Python、NumPy和SciPy。跑完仿真数据后,建议拿一台已知健康状态的电机实测一次,把真实特征向量打印出来,和仿真值对比。亲自对比过仿真和实测差异后,你对这类故障诊断的边带特征和环流趋势会建立起比看文档更扎实的直觉。

最后再分享一个小技巧:现场排查时优先看支路环流里25Hz附近的边带,而不是看450Hz以上的高频分量。中频段信噪比高,外界的变频器载波干扰也少,动偏心的特征在25Hz边带上非常突出,哪怕特征值只抬升了大约3到5个百分点,也值得深入检查轴承和转子动平衡。这些中低频段的特征,才是支路电流诊断真正值钱的地方。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询