☰
基于Simulink的感应电机故障诊断:建模、故障注入与特征提取
2026/10/15 6:53:30 网站建设 项目流程

简介:这份资源面向电气工程、自动化方向的研究生、科研人员及工程技术人员,聚焦感应电机故障检测与诊断的Simulink仿真实现。内容围绕绕组短路、转子断条等典型故障模式,构建电机动态响应模型,并结合信号处理与故障特征提取方法,验证诊断算法的有效性,帮助读者理解故障机理与诊断流程。资源包内含1个docx文档,约261KB,以文字说明与模型思路为主,便于快速查阅与对照学习。目前已有70人学习关注。读者可借此掌握故障信号采集、特征提取与分类判据设计的完整思路,用于高校教学实验、企业状态监测与预测性维护系统的仿真验证,也可作为搭建诊断算法原型的参考,并拓展至滚动轴承等其他故障诊断场景。

1. 感应电机故障诊断为什么值得用 Simulink 做一遍

一台三相感应电机在实验室台架上跑得好好的,电流频谱干净得像教科书,可一旦装到现场、带上变载工况,定子电流里就会冒出一些说不清道不明的边频分量。很多做设备维护的工程师第一反应是拿手持测振仪去测,测完发现振动烈度没超阈值,于是判定“正常”,结果几周后轴承抱死或者转子断条导致停机。这类翻车现场我见过不止一次,问题往往不在仪器,而在于故障特征本身太弱,被工频和噪声淹没了。

Simulink 在这个场景里的价值,不是替代现场仪器,而是让你在动手拆机之前,先把“故障到底会在哪个频段留下什么痕迹”这件事在模型里跑清楚。你可以人为注入转子断条、定子匝间短路、气隙偏心、轴承外圈故障,然后观察定子电流、转矩、转速的响应,再决定现场该采什么信号、用什么算法。适合谁?适合做电机状态监测、做预测性维护、或者正在写相关课题但不想只停留在公式推导的人。这一篇就按“建模—注故障—提特征—判类型”的顺序,把可复现的路径讲透。

2. 感应电机建模与故障注入:从数学到 Simulink 模块

2.1 为什么选 dq 轴模型而不是直接搭有限元

做故障诊断仿真,第一道选择题是模型精度和仿真速度怎么平衡。有限元能算出齿槽谐波和局部饱和,但一个瞬态工况跑几小时,参数扫一遍基本不现实。常见做法是用 dq 轴动态模型打底,它把三相变量变换到两相旋转坐标系,定转子电压方程和磁链方程都是常微分方程,Simulink 里用积分器和代数运算就能搭起来,单次仿真秒级完成。

代价是 dq 模型默认气隙均匀、铁芯不饱和、绕组对称。故障特征要显式注入,不能指望它自己“长”出来。这恰恰是诊断研究需要的:你知道故障是怎么加进去的,才能反过来验证检测算法有没有抓对特征。我一般会先用 dq 模型跑通健康状态,确认空载和负载下的电流有效值、转差率跟铭牌对得上,再动故障注入的部分。

具体参数上,定子电阻、转子电阻、定转子漏感、互感这几个值直接决定电流波形。如果手头没有实测参数,可以用堵转和空载试验反推,或者参考同功率等级电机的典型值先跑起来,后面再做灵敏度分析。注意互感饱和在重载时影响明显,如果只做轻载故障诊断,忽略饱和问题不大;要做重载断条检测,最好加一个饱和修正环节。

2.2 用 Simulink 搭一个能跑通的最小 dq 模型

下面这段是初始化脚本,把电机参数和仿真步长先定下来。放在模型回调或者单独的 m 文件里都行。

% 感应电机 dq 模型参数初始化 Rs = 1.405; % 定子电阻 (ohm) Rr = 1.395; % 转子电阻 (ohm) Ls = 0.178; % 定子电感 (H) Lr = 0.178; % 转子电感 (H) Lm = 0.172; % 互感 (H) J = 0.013; % 转动惯量 (kg·m^2) p = 2; % 极对数 Ts = 1e-5; % 仿真步长 (s) Tend = 2.0; % 仿真时长 (s) % 派生参数 sigma = 1 - Lm^2/(Ls*Lr); % 漏磁系数 Tr = Lr/Rr; % 转子时间常数

这段脚本的关键在 sigma 和 Tr。漏磁系数影响动态响应的快慢,转子时间常数决定转子磁链的衰减速度。如果 Tr 设得偏大,转子磁链跟不上定子频率变化,转矩波形会出现不真实的振荡。步长 Ts 取 1e-5 是为了让 PWM 开关频率附近的谐波不被数值积分抹掉,做 FFT 时高频段才可信。仿真时长 Tend 至少覆盖 1.5 秒,因为故障特征频率的分辨率取决于采样窗口长度,窗口太短频谱会糊成一片。

模型主体用三个积分器分别积分定子电流 d 轴、q 轴和转子磁链,代数环用 Unit Delay 打断。转矩方程里 Te = 1.5pLm/Lr*(psi_rdi_sq - psi_rqi_sd),这个式子直接决定负载突变时转速的响应。转速经积分得到机械角速度,再乘极对数得到电角速度,反馈回电压方程。整个环路闭合后,先给一个额定负载转矩,看转速是否稳定在同步转速附近。

2.3 转子断条和定子短路的注入方式

转子断条在 dq 模型里不能直接“删掉一根导条”,常见做法是在转子电阻上叠加一个随转差频率变化的调制量。断条会让转子电阻周期性变化,反映到定子电流就是 (1±2s)f 附近的边频。注入代码如下:

% 转子断条故障注入:转子电阻调制 s = (ns - n)/ns; % 转差率 f_brb = 2*s*f_s; % 断条特征频率 Rr_fault = Rr * (1 + 0.15*sin(2*pi*f_brb*t)); % 15% 调制深度

调制深度 0.15 是经验值,对应一根断条的情况。断条根数增加,边频幅值会上升,但线性关系只在早期成立,断条多了之后转子电阻整体抬升,特征反而被掩盖。定子匝间短路则是把定子电阻和电感按短路匝数比例减小,同时引入一个短路环流支路。短路匝数占比一般从 1% 到 5% 扫,超过 10% 电机很快就过热,仿真里表现为电流急剧上升,这时候诊断已经没意义了,保护应该先动作。

注入故障后别急着做 FFT,先看时域波形。断条时转矩脉动会明显增大,转速有低频晃动;匝间短路时三相电流不对称度上升,短路相电流有效值偏高。这些时域现象是后面频域分析的锚点,如果时域看不出异常,频域大概率也提不出稳定特征。

3. 故障特征提取:FFT、包络谱和 Park 矢量怎么选

3.1 定子电流 FFT 的分辨率和窗函数怎么定

定子电流频谱是感应电机故障诊断最常用的手段,但很多人直接对整段仿真数据做 FFT,结果边频被工频泄漏盖住。问题出在窗函数和采样窗口没配合好。工频 50 Hz 的幅值比断条边频高两三个数量级,不加窗的话频谱泄漏会把边频淹没。

我一般用 Hann 窗,窗口长度取 2 秒,采样率 10 kHz。这样频率分辨率是 0.5 Hz,断条边频在转差率 2% 时距离工频 2 Hz,刚好能分开。如果转差率更低,比如 0.5%,边频距离工频只有 0.5 Hz,这时候要么加长窗口到 4 秒,要么改用 MUSIC 这类超分辨率方法。仿真里加长窗口没有成本,现场就得权衡实时性了。

% 定子电流频谱分析 fs = 1/Ts; % 采样率 N = length(ia); % 采样点数 win = hann(N); % Hann 窗 IA = fft(ia.*win); f = (0:N-1)*(fs/N); IA_mag = abs(IA)/sum(win)*2; % 幅值修正 % 只看 0-200 Hz 范围 idx = f <= 200; plot(f(idx), IA_mag(idx));

幅值修正那一步容易漏。加窗之后信号能量被窗函数压低,不除以 sum(win) 得到的幅值没有物理意义,不同窗口之间也没法比较。另外仿真步长和采样率要一致,如果模型里用了变步长求解器,输出数据得先重采样到均匀网格再做 FFT,否则频谱会出现虚假的宽带噪声。

3.2 包络谱在轴承故障里的适用边界

轴承故障的特征频率通常在几千赫兹,直接看定子电流频谱在这个频段信噪比很低。常见做法是取电流信号某个高频段的包络,再对包络做低通滤波和 FFT,这样轴承故障特征会以边频形式出现在低频段。但包络谱有个前提:故障冲击必须激发出足够的高频共振,如果轴承故障还处于早期,冲击能量太弱,包络谱里什么都看不到。

仿真里注入轴承故障,一般是在转矩上叠加一个周期性冲击序列,冲击频率按轴承外圈故障频率 BPFO 算。BPFO 跟轴承几何参数和转速有关,公式是 BPFO = (n/2)fr(1 - (d/D)*cos(alpha)),其中 n 是滚珠数,fr 是机械转频,d 是滚珠直径,D 是节径,alpha 是接触角。这些参数在仿真里可以自己设,但设完要检查冲击频率是否落在电流包络能分辨的范围内。如果 BPFO 跟工频谐波重合,包络谱里会分不清是轴承故障还是负载波动。

3.3 Park 矢量轨迹:一个直观但容易误判的工具

Park 矢量把三相电流变换到 dq 平面,健康电机的轨迹是一个以原点为中心的圆,故障时圆会变成椭圆或者出现畸变。这个方法直观,适合快速筛查,但误判率不低。负载不平衡、电压不对称、甚至采样通道增益不一致,都会让轨迹变形。我见过有人拿 Park 矢量轨迹当唯一判据,结果把电压不平衡误报成匝间短路。

正确用法是把 Park 矢量轨迹的椭圆度和倾角作为辅助特征,跟电流频谱的边频幅值一起送进分类器。仿真里可以很方便地扫不同故障程度,看轨迹畸变跟故障严重度的关系。如果轨迹畸变在故障早期就饱和,说明这个特征对早期诊断不敏感,得换别的。

% Park 矢量变换 i_alpha = (2/3)*(ia - 0.5*ib - 0.5*ic); i_beta = (2/3)*(sqrt(3)/2)*(ib - ic); % 轨迹椭圆度指标 ratio = (max(i_beta)-min(i_beta))/(max(i_alpha)-min(i_alpha));

ratio 接近 1 表示轨迹接近圆,偏离 1 越多说明不对称越严重。但这个指标对负载变化也敏感,所以要在同一负载水平下比较。仿真里可以固定负载转矩,只改故障程度,这样 ratio 的变化才归因于故障。

4. 避坑与排查:仿真跑通了但结果不对怎么办

4.1 频谱里找不到边频,先查转差率符号

现象:注入转子断条后,定子电流频谱在 (1±2s)f 附近没有明显峰值。原因通常是转差率符号搞反了。电动状态下转差率是正的,但如果在仿真里把转速初始值设得高于同步转速,电机进入发电状态,转差率变负,边频位置就跑到工频另一侧去了。解决:在注入故障前先确认转速稳定在同步转速以下,或者直接在代码里打印 s 的符号和数值。

4.2 仿真步长太大导致高频特征丢失

现象:轴承故障的包络谱里看不到 BPFO 及其谐波。原因可能是仿真步长 1e-4 甚至更大,而轴承冲击的上升沿只有几十微秒,步长太大直接把冲击抹平了。解决:把步长降到 1e-5 或更小,或者用变步长求解器并限制最大步长。代价是仿真时间变长,但做特征提取这一步不能省。

4.3 故障注入后电机直接失稳

现象:匝间短路匝数设到 10% 以上,电流发散,仿真报错。原因不是模型错了,是故障太严重,电机已经进入不稳定运行区。解决:把短路匝数从 1% 开始扫,每次增加 0.5%,记录电流和转矩的变化。诊断算法要覆盖的是早期故障,不是已经烧机的状态。仿真里跑到失稳反而说明模型动态是对的。

4.4 FFT 幅值跟理论值对不上

现象:断条边频幅值比文献里的经验值低一个数量级。原因可能是窗函数幅值修正没做,或者采样窗口太短导致边频能量泄漏到相邻谱线。解决:先确认幅值修正公式正确,再把窗口长度加倍看幅值是否收敛。如果加倍后幅值明显上升,说明之前窗口不够长。另外仿真里的调制深度是人为设的,跟实际断条根数的对应关系需要标定,不能直接拿仿真幅值去推现场断条数。

4.5 分类器在仿真数据上准确率很高,换工况就崩

现象:用固定负载下的数据训练的分类器,换到变载工况准确率掉到随机水平。原因是故障特征频率跟转差率耦合,负载一变,边频位置就漂移,固定频点的幅值特征失效。解决:要么用阶次分析把频率轴归一化到转差率,要么在训练集里覆盖足够多的负载水平。仿真里扫工况成本低,别只在一个负载点采数据。

5. 从仿真到现场:特征频率跟踪与阈值自适应

仿真跑通之后,真正难的是把方法搬到现场。现场没有“故障注入”按钮,你只有电流互感器采回来的信号,而且负载一直在变。我自己的习惯是先在仿真里把故障特征频率跟转差率的关系曲线扫出来,做成一张查找表,现场用转速或者转差率估计值去查表,动态跟踪边频位置,而不是死盯一个固定频点。

具体做法是:仿真里让转差率从 0.5% 扫到 5%,每个点记录断条边频和工频的幅值比,画成曲线。现场采到电流后,先用转速传感器或者无速度传感器算法估计转差率,然后按曲线查当前转差率下的预期幅值比,超过阈值就报警。阈值不能设死,因为不同电机、不同负载水平的基线不一样。我一般用健康状态下跑一周的数据统计幅值比的均值和标准差,阈值设成均值加三倍标准差,再根据误报率微调。

验证方法上,仿真数据可以用来做算法选型,但最终判据得用现场数据。一个可行的路径是:在仿真里对比 FFT、包络谱、Park 矢量三种特征在不同故障程度下的可分性,选出最好的两个特征;然后到现场采健康数据和已知故障数据,看这两个特征的实际分布有没有重叠。如果重叠严重,说明仿真里的故障注入模型跟实际故障机理有差距,得回去修正注入方式,比如断条调制深度是不是设得太理想化了。

还有一个容易忽略的点:现场电流互感器的带宽。仿真里电流是理想正弦,现场互感器在几千赫兹以上可能已经衰减了。如果轴承故障特征在 5 kHz 以上,而互感器带宽只到 2 kHz,包络谱里什么都提不到。做仿真的时候可以加一个互感器传递函数,把带宽限制考虑进去,这样选出来的特征频率才落地。

最后说一个我踩过的坑:仿真里用理想转速做转差率计算,现场转速估计有误差,导致边频跟踪偏了几赫兹,幅值就掉到阈值以下。后来改成用电流频谱里的工频和边频联合估计转差率,不依赖转速传感器,鲁棒性好了很多。这个思路在仿真里也能验证:给转速估计加一个随机误差,看特征提取算法还能不能稳住。希望帮到你。

本文还有配套的精品资源,点击获取

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

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

立即咨询