
简介这份文档面向具备电气工程、自动化或电机控制基础的研究生、科研人员与工程技术人员围绕感应电机绕组短路、转子断条等典型故障的检测与诊断展开依托Simulink仿真思路梳理故障动态响应、信号采集、特征提取与分类判据设计帮助读者理解故障机理并搭建诊断算法原型。压缩包内共1个docx文件约261KB内容以技术说明和仿真实验讲解为主便于按章节查阅与复现。已有72人学习下载适合用于高校教学实验、企业状态监测与预测性维护方案验证也可作为相关故障诊断技术选型的参考。读者可从中获得故障模式分析框架、诊断流程组织方式及仿真验证思路以及诊断算法的性能测试方法并据此拓展至更多电机故障场景。1. 感应电机故障诊断不是跑个仿真就完事Simulink 模型卡住人的其实是故障显不显在 Simulink 里搭一台感应电机前半小时总是很顺拖一个 Asynchronous Machine 模块三相电源接上去负载转矩一给定子电流和转速波形就出来了。真正的麻烦从“让故障显出来”开始——转子断条明明设了频谱里那条边带死活找不到匝间短路加两匝仿真几毫秒就发散同一套判据换个负载点健康工况被误判成故障。这份围绕感应电机故障诊断的 Simulink 资源把定子绕组匝间短路、转子断条等典型故障的建模、数据采集、特征提取和判据验证串成了一条可复现的流程配套 Matlab 脚本负责批量跑工况和组织数据集。它适合已经会用 Simulink 搭基础模型手头有电机状态监测、预测性维护或电力系统相关课题的研究生和工程技术人员。下面按“故障在电流里长什么样 → 模型怎么改 → 特征怎么提 → 坑在哪 → 怎么扩展”的顺序拆。2. 感应电机故障的电磁本质与 Simulink 选型先把特征频率和额定工作点算清楚2.1 三类故障在定子电流里的指纹感应电机故障诊断的工程逻辑是从外部可测量反推内部异常。现场最容易拿到的是三相电压和电流所以主流方案走电机电流特征分析MCSA路线振动和温度作为辅助。定子绕组匝间短路、转子断条、气隙偏心这三类故障在电流频谱里的表现各有分工定子绕组匝间短路被短接的几匝形成闭合回路相当于在定子侧叠加一个反向磁动势气隙磁场不再对称。定子电流出现负序分量基波两侧也会长出边带。短路匝数越多负序分量越大这是判断严重程度最直接的指标。转子断条 / 端环开裂转子回路不对称会在定子电流中激发出 ((1 \pm 2s)f_1) 的边带(s) 是转差率(f_1) 是供电频率。这是最经典、也最适合在仿真里验证的一条判据。气隙偏心静态偏心带来 (f_1 \pm f_r) 的边带动态偏心会把边带展宽成一组调制成分通常需要电流和振动信号一起看。这里有个新手最常踩的认知坑转子断条的边带在负载下才明显。空载时转差接近零((1 \pm 2s)f_1) 几乎和基波重合频谱上根本分不开。所以做断条验证千万别在空载工况下找特征找一天也找不到。2.2 模型选型Asynchronous Machine 模块还是自建 dq 方程Matlab/Simulink 里做感应电机故障仿真实际就两条路各有明确边界。路线一Simscape Electrical 的 Asynchronous Machine SI Units 模块。开箱即用健康工况的稳态和暂态都稳适合先跑通额定工作点、做控制器联调。缺点是模块内部是理想对称模型定子绕组拓扑不能改转子电阻也不能随转子位置变化。要注匝间短路和转子断条得在模块外部加东西或者换模型。路线二自己用 dq 轴方程或三相绕组方程搭。前期工作量大但每一相电阻、电感都能单独改匝间短路可以在某一相上引抽头转子断条能把转子电阻写成转子位置的函数。这种模型跑起来慢参数也难调可一旦跑通故障注入的自由度是模块给不了的。我一般会先用模块跑通健康工况拿到额定电流、额定转速和稳态转差作为基准再切到自建模型注故障。这样做的好处是把“模型对不对”和“故障显不显”分开排查。一上来就自建模型注故障发散了都不知道是参数错还是故障设置错排查起来就是黑匣子。2.3 额定工作点参数清单与稳态校验不管走哪条路线第一步都是把铭牌参数和等效电路参数对齐。下表是一台 5.5 kW、4 极、380 V 感应电机的典型参数实际使用时按铭牌和空载/堵转试验校正别直接抄参数符号数值备注额定功率(P_N)5.5 kW连续工作制额定线电压(U_N)380 V星形接法额定频率(f_N)50 Hz极对数(p)24 极定子相电阻(R_s)1.405 Ω冷态值转子相电阻折算值(R_r)1.395 Ω折算到定子侧定子漏感(L_{ls})5.839 mH转子漏感(L_{lr})5.839 mH励磁电感(L_m)172.2 mH转动惯量(J)0.0131 kg·m²含负载折算参数录进去后先跑空载和额定负载两个点做校验。判断标准不复杂额定负载下稳态电流应在额定值附近5.5 kW / 380 V 约 11 A转差落在 2%5%三相电流不平衡度小于 1%。转差明显偏大优先查转子电阻和负载转矩启动电流异常查漏感和求解器步长。这一步做扎实后面注故障才有比较基准。3. 在 Simulink 里注入故障匝间短路抽头、转子断条和不对称电阻3.1 匝间短路定子绕组的抽头与短路支路匝间短路的物理本质是部分定子绕组被短接形成闭合回路等效为原绕组旁边多了一个耦合线圈。用自定义三相模型实现时把 A 相绕组拆成主绕组和短路支路两段主绕组剩下的匝数比例是 (1-\alpha)短路支路占 (\alpha)(\alpha) 等于短路匝数除以每相总匝数。电阻按匝数线性缩放漏感按匝数平方缩放主绕组与短路支路之间补一个互感项。参数化写法如下%% im_params.m —— 感应电机故障仿真基础参数 % 数值按 5.5 kW、4 极、380 V 电机铭牌与等效电路整理 function p im_params() p.p 2; % 极对数 p.f1 50; % 定子频率 (Hz) p.Ull 380; % 线电压 (V) p.Rs 1.405; % 定子相电阻 (Ohm) p.Rr 1.395; % 转子相电阻折算值 (Ohm) p.Lls 5.839e-3; % 定子漏感 (H) p.Llr 5.839e-3; % 转子漏感 (H) p.Lm 0.1722; % 励磁电感 (H) p.J 0.0131; % 转动惯量 (kg.m^2) p.Ns 48; % 每相串联总匝数按实际绕组改 end%% inject_turn_fault.m % 按短路匝数比例修改 A 相绕组参数供自定义电机模型调用 p im_params(); faultMag 5; % 短路匝数作为输入传入 alpha faultMag / p.Ns; % 短路匝数占总匝数比例 p.Rs_a_main (1 - alpha) * p.Rs; % 剩余有效绕组电阻 p.Lls_a_main (1 - alpha)^2 * p.Lls; % 漏感近似按匝数平方缩放 p.Rs_fault alpha * p.Rs; % 短路支路电阻 p.Lls_fault alpha^2 * p.Lls; % 短路支路漏感 p.M_af alpha * (1 - alpha) * p.Lm; % 主绕组与短路支路互感faultMag就是资源里控制故障程度的输入量改 1、2、5 匝分别对应轻度到中度匝间短路。p.Ns必须按实际绕组数据填填错会让短路比例整体偏大或偏小特征频率的位置不变但边带幅值会失真。这里用主绕组和短路支路的耦合模型而不是直接给 A 相串一个电阻原因是串电阻只能改变电流幅值不会产生反向磁动势负序分量根本出不来。仿真里判断匝间短路是否生效最直接的办法是看三相电流不平衡度和负序分量有没有随故障程度单调上升。3.2 转子断条转子电阻的非对称修改转子断条在 dq 模型里不好直接表达因为标准 dq 变换已经把转子当成对称三相处理。工程上常用的近似是让转子电阻随转子位置做周期性调制调制频率对应两倍转差周期。断条数越多平均电阻上升越多调制幅值也越大%% inject_broken_bar.m % 转子断条近似转子电阻随转子位置 2*theta_r 调制 p im_params(); Nbar 28; % 转子总导条数按机座号取 faultMag 3; % 断条数 k faultMag / Nbar; % 断条比例 Rr_mean p.Rr * (1 0.5 * k); % 平均电阻抬升 Rr_mod p.Rr * 1.2 * k; % 调制幅值 % theta_r 由 Simulink 模型的转子位置输出提供 Rr_inst (theta_r) Rr_mean Rr_mod * cos(2 * theta_r);Nbar和faultMag这两个参数是断条仿真的关键。Nbar取错断条比例就错边带幅值跟实测对不上faultMag从 1 根加到 3 根((1 \pm 2s)f_1) 边带幅值应该单调上升如果没上升多半是调制项没真正进到转子方程里。这种近似能复现边带的频率位置和变化趋势但没法精确对应每根导条的电流分布。如果课题要求定量分析断条位置得换成多回路模型工作量和参数辨识难度都上一个台阶。3.3 数据采集与工况表组织故障注进去只是第一步数据组织决定后面特征提取顺不顺。每个工况至少采三个量三相定子电流、转子转速、电磁转矩。采样率按后面要分析的最高边带频率定((12s)f_1) 在 50 Hz 电网下也就 55 Hz 左右但包络解调会用到更高频段实际采样率给到 10 kHz 比较稳妥。工况表按“故障类型 × 负载点 × 故障程度”组织每个工况仿真 2 s丢掉前 1.5 s 的启动暂态只留最后 0.5 s 稳态段工况编号类型负载转矩 (N·m)故障程度采样时长 (s)H1健康0—2H2健康9—2F1匝间短路92 匝2F2匝间短路95 匝2F3转子断条91 根2F4转子断条93 根2批量跑工况的脚本用assignin把变量写进基础工作区Simulink 模型里对应模块直接引用这些变量名%% run_cases.m % 批量跑工况并把稳态段数据存成 mat 文件 clear; clc; model IM_fault_diag; load_system(model); cases [ ... 1 0 0.0 0; % 健康空载 2 0 9.0 0; % 健康满载 3 1 9.0 2; % 匝间短路 2 匝 4 1 9.0 5; % 匝间短路 5 匝 5 2 9.0 1; % 转子断条 1 根 6 2 9.0 3]; % 转子断条 3 根 for k 1:size(cases,1) c cases(k,:); assignin(base,faultType, c(2)); % 0健康 1匝间 2断条 assignin(base,TLoad, c(3)); % 负载转矩 assignin(base,faultMag, c(4)); % 故障程度 out sim(model, StopTime,2.0, SaveFormat,Structure with time); t out.tout; idx t 1.5; % 只保留最后 0.5 s 稳态 data(k).t t(idx); data(k).ia out.ia(idx); data(k).ib out.ib(idx); data(k).ic out.ic(idx); data(k).wr out.wr(idx); data(k).label c(2); data(k).faultMag c(4); fprintf(工况 %d 完成类型 %d故障程度 %d\n, c(1), c(2), c(4)); end save(im_dataset.mat,data);这段脚本里SaveFormat选Structure with time是为了保留时间轴后面做 FFT 和包络解调要对齐采样点。StopTime设 2 s 对应小惯量电机大机座号电机启动时间更长得往上加。idx截取稳态段这一步容易被忽略带着启动暂态做频谱基波附近会混进一大堆低频分量边带直接被淹没。4. 从三相电流到故障特征MCSA 频谱与包络解调4.1 边带频率公式、采样率和频率分辨率转子断条的特征频率是 (f_{brb} (1 \pm 2s)f_1)。举例(f_1 50) Hz稳态转差 (s 0.03)两边带分别落在 47 Hz 和 53 Hz距基波只有 3 Hz。要把这两条线从基波泄漏里分出来频率分辨率至少要到 0.1 Hz 量级。频率分辨率等于采样率除以 FFT 点数10 kHz 采样、取 0.5 s 数据做 8192 点 FFT分辨率约 1.2 Hz不够取 2 s 数据凑 32768 点分辨率降到 0.3 Hz勉强能看。想再稳一点就继续加点数或者加长稳态段。%% fault_feature.m % 从稳态电流中提取 MCSA 边带特征 load(im_dataset.mat); fs 10000; % 采样率 (Hz)与 Simulink 一致 f1 50; % 基波频率 p_pole 2; % 极对数 N 2^nextpow2(2.0 * fs); % 用 2 s 数据做 FFT for k 1:numel(data) x data(k).ia - mean(data(k).ia); % 去直流分量 win hann(numel(x)); % Hanning 窗抑制泄漏 X fft(x .* win, N); f (0:N-1) * fs / N; amp 2 * abs(X) / sum(win); % 归一化幅值 wr_mean mean(data(k).wr); % 稳态平均机械角速度 s 1 - wr_mean / (2*pi*f1/p_pole); % 由转速反算转差 f_lsb (1 - 2*s) * f1; % 左边带 f_rsb (1 2*s) * f1; % 右边带 [~,i1] min(abs(f - f_lsb)); [~,i2] min(abs(f - f_rsb)); feat(k).lsb amp(i1); feat(k).rsb amp(i2); feat(k).label data(k).label; feat(k).faultMag data(k).faultMag; ends这里是从平均转速反算的比直接读 Simulink 里的转差变量更贴近实际采集场景因为现场也是用编码器或转速估算拿转速。hann窗必须加不加窗基波泄漏会把 3 Hz 外的边带盖掉这是频谱分析里最常见的翻车点。2*abs(X)/sum(win)这种归一化方式能让不同长度数据的幅值可比换工况时不用重新标定。4.2 包络解调把高频载波去掉再看低频故障分量边带幅值在轻度故障下很小直接看频谱容易被噪声底吃掉。包络解调是另一条常用路径对定子电流做 Hilbert 变换取解析信号模值得到包络再对包络做低通和 FFT故障引起的幅值调制就会在低频段显出来。%% envelope_demod.m % 对定子电流做 Hilbert 包络解调提取低频调制成分 ia data(k).ia; ia ia - mean(ia); % 去直流 env abs(hilbert(ia)); % 解析信号取模得到包络 env env - mean(env); % 去包络直流 % 包络里保留 0~200 Hz覆盖转差频率和边带差频 [b,a] butter(4, 200/(fs/2), low); env_lp filtfilt(b, a, env); % 零相位滤波避免时延偏移 N 2^nextpow2(numel(env_lp)); E fft(env_lp .* hann(numel(env_lp)), N); f_env (0:N-1) * fs / N; amp_env 2 * abs(E) / sum(hann(numel(env_lp)));butter(4, 200/(fs/2), low)里的截止频率按分析带宽调匝间短路产生的低频调制一般在几百赫兹以内200 Hz 够用如果供电侧有变频器谐波会污染包络截止频率要往下压。filtfilt而不是filter是因为零相位滤波不引入时延后面跟电流频谱对时间轴时不会错位。包络谱里关心的峰是转差频率 (2sf_1) 及其倍数断条严重时这个峰会明显抬高。4.3 特征量计算与跨负载稳定性单看一个边带幅值不够负载一变幅值就漂。工程上通常把几个量拼成特征向量左右边带幅值、负序分量、电流总谐波畸变率。负序分量用对称分量法算匝间短路时它上升最明显THD 作为辅助排除供电谐波干扰。%% build_feature_table.m % 汇总所有工况的特征量输出 csv 给分类器 names {lsb,rsb,negSeq,thd}; X zeros(numel(feat), numel(names)); Y zeros(numel(feat), 1); for k 1:numel(feat) X(k,:) [feat(k).lsb, feat(k).rsb, feat(k).negSeq, feat(k).thd]; Y(k) feat(k).label; end T array2table(X, VariableNames, names); T.label Y; writetable(T, feature_table.csv);这里要盯住一件事同一故障类型在不同负载下特征量的绝对值会变但变化趋势应该一致。比如断条边带幅值随负载上升而上升匝间短路的负序分量随短路匝数上升而上升。趋势不稳说明特征选错了或者数据里混进了暂态段。跨负载稳定性比单点精度重要得多现场负载本来就是变的。5. 避坑感应电机故障仿真最容易翻车的五个细节5.1 找不到断条边带先查采样率和窗函数现象转子断条设了三根频谱在 47 Hz 和 53 Hz 附近还是一条平线跟健康工况没差别。原因仿真步长太大导致等效采样率不够或者 FFT 没加窗基波泄漏把边带盖住还有一种情况是To Workspace模块设成 Array 格式后丢了时间轴重采样时对齐错位频谱整体偏移。解决固定采样率不低于 10 kHzFFT 前加 Hanning 窗频率分辨率压到 0.3 Hz 以下稳态段从启动后 1.5 s 再截长度不少于 0.5 s。跑完先拿健康工况验证一遍频谱基波幅值正常再往下做。5.2 故障一加就发散短路支路缺限流和刚性求解器现象匝间短路一投入仿真几毫秒内报积分失败或者步长被压到极小跑一个小时出不来一秒数据。原因短路支路电阻接近零定子方程刚性突然变强ode45 扛不住短路开关切换瞬间的电流冲击也会引起数值振荡。解决短路支路串一个 0.010.1 Ω 的接触电阻代表实际短路点的接触阻抗求解器换成 ode23tb 或 ode15s最大步长限制到 1e-4 s。改完还发散检查短路支路有没有形成代数环有的话加单位延迟打断。5.3 健康工况就有负序电源和参数不对称现象还没注故障三相电流就不平衡负序分量不为零后面所有判据的基准全乱。原因三相电压源幅值或初相有偏差或者电机模块里定子三相参数用了不同值再或者仿真步长过大采样点没落在同一时刻算出来的三相瞬时值本身就对不齐。解决先跑纯健康工况把三相电流幅值差压到 0.5% 以内再往下走。电源侧用三相对称的可编程电压源电机参数三相保持同值采样用固定步长。基准不干净后面所有特征都不可信。5.4 分类准确率虚高训练集和测试集共享了稳态段现象交叉验证准确率 99%换一个没见过的负载点直接掉到 60%。原因同一工况的不同时间窗被随机分到训练集和测试集模型学到的是这段数据的噪声指纹不是故障特征。Simulink 仿真数据尤其容易出这个问题因为同一工况的稳态段高度相似。解决按工况划分训练集和测试集同一负载、同一故障程度的数据只出现在一边至少留一个负载点做外部验证。分类器精度先别追高先看特征在没见过的负载点上还保不保持单调趋势。5.5 仿真和实测对不上别在理想模型上死磕绝对幅值现象仿真里断条边带清清楚楚现场采回来的频谱一团糟边带时有时无。原因Simulink 模型用的是理想正弦供电和线性电感实际电机有磁饱和、齿槽效应、轴承摩擦供电侧还可能挂着变频器开关谐波全叠在电流里。解决仿真的定位是验证判据和趋势不是复现实测波形。把判据放在“负载变化时边带幅值单调上升”这一层比死磕绝对幅值靠谱。真要把模型往实测靠得加饱和查表、PWM 供电和轴承摩擦模型工作量会翻几倍看课题需要再决定。6. 把单工况扩展本文还有配套的精品资源点击获取