拓冰建站拓冰建站
首页 / 资讯中心 / 正文

基于残差信号与混合诊断的PMSM匝间短路故障识别

简介这是一份针对永磁同步电机匝间短路故障诊断的PDF研究文档面向电机控制领域的科研人员、电气工程师及从事早期故障检测的研究生系统解决故障初期残差信号微弱、难以识别的问题。内容涵盖PMSM健康与故障状态数学模型、基于龙伯格观测器的电流残差信号分析与频率跟踪算法、电压残差信号诊断方法并延伸到改进型故障数学模型、自适应龙伯格观测器、完整诊断系统实现与实验验证平台模拟。文中配有可运行的Python代码、Simulink仿真思路及逐步中文解释便于读者复现与扩展。资源为单个PDF文件约820KB内容精炼、章节完整。已有80人学习下载适合用于理解匝间短路故障机理、开发基于残差信号的电机故障诊断系统也可作为毕业设计或课题研究的参考资料。1. 从残差信号下手为什么是匝间短路诊断的最优解永磁同步电机PMSM的匝间短路故障是绕组绝缘失效后最常见也最难早期发现的电气故障。它的特殊之处在于故障初期相电流幅值变化很小但故障相绕组内部已经出现一个独立的短路回路这个回路会产生远大于额定值的局部环流并叠加在正常电流上。传统的FFT频谱分析、相电流幅值比较、负序分量检测在轻度匝间短路短路匝数占比小于5%时往往被负载波动和逆变器噪声淹没误报率和漏报率都很难接受。残差信号从根本上改变了这个问题。它的思路不是去“看”电流有多大而是先建立PMSM的数学模型预测正常情况下电机应该输出什么样的电流和转矩再用实际测量值与模型预测值做差。这个差值就是残差。正常运行时残差接近零一旦发生匝间短路模型参数尤其是定子电阻和电感矩阵与实际绕组不再匹配残差会表现出明显的相位偏移和幅值突变。相比直接分析原始信号残差的信噪比高得多因为负载变化、转速变化等共模因素在求差过程中被抵消了。这套方案适合三类人做电机故障诊断算法研究的工程师需要给实验室台架搭建在线监测系统的开发人员以及正在做PMSM矢量控制又想顺手加诊断功能的学生。整个诊断链路拆开看就三步建立能够描述正常绕组结构的数学模型、用可调残差算法突出故障特征、最后用混合诊断系统比如阈值判断加机器学习结合提高判别的鲁棒性。下面我按这个顺序把每一步的命令、代码和调参细节铺开讲。2. PMSM在匝间短路下的数学模型从dq轴到故障相的残差源头要生成残差第一步必须有一个“无故障对照模型”。绝大多数工程实现是在dq同步旋转坐标系下建立PMSM的理想模型然后在此基础上叠加短路回路的故障项。这里有个容易被忽略的前提dq模型把三相绕组等效成两相正交绕组但它隐含了“三相绕组结构对称”的假设。匝间短路恰恰破坏了这种对称性所以不能直接拿理想dq模型去做故障仿真必须先回到三相静止坐标系把故障相多出来的短路支路单独建模。2.1 理想PMSM在dq坐标系下的电压方程与磁链方程先写出无故障时的基准模型这是后面算残差的基础。表贴式PMSM的dq轴电压方程是% 理想PMSM dq轴电压方程 ud Rs * id Ld * did_dt - we * Lq * iq; uq Rs * iq Lq * diq_dt we * (Ld * id Psif);其中Rs是定子电阻Ld和Lq分别是直轴和交轴电感表贴式转子可以认为Ld Lqwe是电角速度Psif是永磁体磁链。这个方程成立的前提是三相绕组对称、反电动势为正弦分布、磁路不饱和。实际工程中前两个前提基本满足但饱和效应会导致Ld、Lq随电流变化后面做残差时要用在线辨识的值而不是铭牌值。磁链方程决定了转矩输出和反电动势的计算方式。定子磁链在dq轴的分量分别是Ld*id Psif和Lq*iq电磁转矩方程为Te 1.5 * p * (Psif*iq (Ld-Lq)*id*iq)。对于表贴式电机Ld Lq转矩只和iq成正比这让残差分析简单很多——转矩偏差可以直接映射到iq偏差上。2.2 匝间短路时三相静止坐标系下的故障绕组模型匝间短路的本质是同一相绕组内相邻几匝之间形成了低阻抗回路。设A相出现了匝间短路短路匝数占比短路环匝数与总匝数之比记为mu故障位置的电气角度记为theta_f。在三相静止坐标系下A相绕组被分成两段正常段和短路段。短路段两端接在一起形成一个独立的闭合回路这个回路的电压方程要单独写% A相匝间短路时的短路回路电压方程 0 (mu * Rs) * i_f (mu * Lls L_fault) * di_f_dt - mu * d(Psi_pm)/dt;i_f是短路环内的环流Lls是每相漏感L_fault是短路环自感Psi_pm是永磁体在该短路匝位置产生的磁链。这个方程的关键是短路回路没有外部电源它完全靠变压器电动势由变化的气隙磁场感生驱动因此i_f可以远大于额定相电流。当我们把这个故障方程和正常相电压方程联立把A相总电流写为i_a i_f正常分量叠加环流分量再通过Park变换转到dq轴时会多出两个故障项一个反映在ud、uq方程中的额外耦合电压一个反映在磁链方程中的不对称电感。实际建模时我建议直接用Simulink的Simscape Electrical建立三相绕组模型用两个串联绕组段模拟正常段和短路段然后用Breaker或直接受控开关模拟短路电阻R_f——这样比纯解析模型更接近真实故障看得出来环流的相位关系。2.3 故障特征量负序分量、零序分量与dq轴二倍频波动匝间短路在dq轴上的表现非常独特由于故障破坏了绕组对称性Park变换后的id、iq不再恒定在故障相与转子位置存在特定夹角时会出现二倍频2*we的波动分量。同时三相电流中会激发出显著的负序分量。这两个现象是设计残差阈值的关键。我在工程上习惯的做法是对三相电流做对称分量分解提取负序电流的有效值作为第一个特征量再对id或iq做带通滤波提取2倍电气频率附近的幅值作为第二个特征量。负序分量对短路匝数mu的灵敏度在轻故障时近乎线性但容易受三相电压不平衡干扰dq轴二倍频分量和负载电流水平相关度低适合在线监测。2.4 残差生成基于滑模观测器还是模型参考自适应有了故障模型和理想模型残差的实现方式可以直接决定诊断灵敏度。目前常见的有两种路线。第一种是基于滑模观测器设计电流残差将dq轴电流的观测值与实际值做差构建滑模面当发生匝间短路时由于实际电机参数偏离模型观测误差会偏离滑模面等效控制量中会产生明显的低频分量变化。这种方法的优势是对参数摄动鲁棒但抖振问题需要加低通滤波器会影响残差的快速性。第二种是模型参考自适应MRAS将实际电机视为参考模型把带参数估计的可调模型与之并联用自适应律实时辨识Rs和Lq。当发生匝间短路时Rs的辨识值会异常增大因为短路环相当于额外消耗这个突变本身就能作为故障指标。我一般用第二种来生成残差因为它同时能定期校准模型的电感和磁链参数保证正常运行时残差基线不会漂移。但要注意MRAS的自适应增益不能调太大否则转速波动会被误判为故障。下面给一个基于电流残差的生成核心代码用Python可以离线仿真验证import numpy as np # 电流残差生成类对比实测电流与模型预测电流 class PMSMCurrentResidual: def __init__(self, Rs, Ld, Lq, Psif, Ts): self.Rs, self.Ld, self.Lq, self.Psif Rs, Ld, Lq, Psif self.Ts Ts # 采样周期 def predict_current(self, id_prev, iq_prev, ud, uq, we_elec): # 前向欧拉离散化的dq轴电流预测 did_dt (ud - self.Rs * id_prev we_elec * self.Lq * iq_prev) / self.Ld diq_dt (uq - self.Rs * iq_prev - we_elec * (self.Ld * id_prev self.Psif)) / self.Lq id_pred id_prev did_dt * self.Ts iq_pred iq_prev diq_dt * self.Ts return id_pred, iq_pred def compute_residual(self, id_meas, iq_meas, id_pred, iq_pred): # 归一化残差避免负载电流大小影响阈值 res_id (id_meas - id_pred) / max(abs(id_meas), 0.1) res_iq (iq_meas - iq_pred) / max(abs(iq_meas), 0.1) return np.array([res_id, res_iq]) # 参数示例10kW 表贴式PMSM res_obj PMSMCurrentResidual(Rs0.15, Ld0.5e-3, Lq0.5e-3, Psif0.15, Ts1e-4)这段代码的核心是把dq轴电压方程直接离散化用上一时刻的电流预测当前电流。注意predict_current只依赖电压和转速不依赖电流测量所以残差能反映模型与实际电机的失配。compute_residual里做了归一化是因为电机轻载和满载时电流幅值差异很大直接用绝对误差会导致阈值失去意义。归一化残差同时包容了参数误差和故障影响但代价是轻负载时对传感器噪声更敏感。3. 混合诊断系统怎么设计阈值判断融合机器学习先做特征再做分类残差信号算出来之后直接拿原始残差波形做阈值判断在大负载波动下足够用了但要覆盖变转速、变负载工况单纯阈值会出现很多误报。混合诊断系统的价值就在这里先用物理模型残差作为第一层特征再用机器学习分类器处理多特征组合两层叠加下来既保留了对轻度故障的灵敏度又把误报率压到可接受水平。3.1 诊断特征集哪些量能进分类器我从工程经验出发常用的特征集分为三组时域残差统计量、频域特征量、辨识参数偏移量。时域残差统计量包括残差电流的均值、方差、峰值因子和峭度这些量对短路匝数变化反应快但容易受负载瞬变影响。频域特征量包括残差信号中2倍电气频率分量的幅值和相位以及负序电流的基波幅值、5次和7次谐波幅值——匝间短路会让电流波形在故障相上出现削顶和毛刺谐波含量会明显增加。参数辨识偏移量是最有物理意义的一类。做MRAS在线辨识时Rs、Lq和Psif的估计值在发生匝间短路后会向异常方向移动比如Rs突然比额定值高15%到30%Psif的辨识值则会因为磁路饱和等效减弱而下降。这三个量的变化趋势组合在一起几乎不可能被正常的温度漂移或负载变化模仿。下面给出特征提取的Python实现它从残差时间序列中抽取上述三类特征def extract_features(res_id, res_iq, time_axis, fs, we_elec): # 输入归一化残差序列、采样率、电气频率 features {} # 时域特征均值、方差、峭度、峰值因子 features[res_id_mean] np.mean(res_id) features[res_iq_var] np.var(res_iq) features[res_id_kurt] np.mean((res_id - np.mean(res_id)) ** 4) / (np.var(res_id) ** 2 1e-12) features[res_iq_crest] np.max(np.abs(res_iq)) / (np.sqrt(np.mean(res_iq ** 2)) 1e-12) # 频域特征2倍电气频率分量幅值用Goertzel滤波更轻量 from scipy.signal import spectrogram f, t_axis, Sxx spectrogram(res_id, fs, nperseg256, noverlap128) f_target we_elec / (2 * np.pi) * 2 # 2倍电频率 idx_f np.argmin(np.abs(f - f_target)) features[res_id_2f_amp] np.mean(Sxx[idx_f, :]) # 参数偏移量由MRAS模块返回此处占位 features[Rs_offset_ratio] rs_estimate_offset_ratio return features特征提取时有两个容易踩的坑。第一个是频谱计算用的窗长窗长太短会让2倍频分量和基波泄漏混在一起取值建议固定不少于10个电周期第二个是当转速变化时2倍频的频谱位置会漂移所以不能取固定频率点要根据实时we_elec计算目标频率后取最近频点。3.2 第一层诊断自适应阈值与残差方向判断混合系统的第一层不需要机器学习它解决的是“快速报警”问题。我会在这个层面设计两个独立的判别器任何一个触发都先产生提示性报警等第二层分类器复核。第一个判别器是dq轴残差绝对值的滑动窗口均值窗口长度取5个电气周期输出一个自适应阈值阈值表达式为th k * (sigma_id sigma_iq) / 2其中k取3~5sigma_id和sigma_iq是系统正常运行时残差的标准差统计值。这里有个非常关键的操作细节阈值不能做成固定数值因为PMSM在不同转速和负载下运行时的噪声基底差异很大。我一般让系统在上电后的第一个运行周期内自动学习噪声统计值之后每10分钟更新一次滑动平均这样即使电机因温度变化导致参数缓慢漂移阈值也能跟着更新不会把缓慢漂移误判为故障。但更新时要注意剔除故障期间的数据否则故障特征会被当作正常基底学进去导致灵敏度下降。第二个判别器是残差方向。res_id和res_iq组成了一个向量当发生匝间短路时这个向量的相位角会落在特定扇区内取决于故障相和故障位置角度。用反正切函数把残差向量转成角度设定一个扇区范围只有在残差幅值超过阈值且方向角在故障扇区内时才确认触发电气故障预警。这个“方向幅值”双重条件能滤掉大部分与故障无关的干扰比如逆变器开关暂态、电流传感器尖峰噪声。3.3 第二层诊断XGBoost还是轻量神经网络第二层分类器的选型取决于部署硬件的计算能力和训练数据规模。如果只有实验室数据几百组样本量首选XGBoost因为它对特征量纲不敏感能直接用特征重要度做消融判断哪一个残差特征贡献最大。如果现场有大量工况数据可以考虑一维CNN直接吃残差波形让网络自己学特征但训练成本和可解释性都更差。XGBoost的输入特征就是上一节提取的特征向量。我没有做标准化因为树模型不依赖特征尺度。但分类器的输出需要和后验概率结合最终决策逻辑如下import xgboost as xgb def build_xgb_model(X_train, y_train, X_val, y_val): # y0 正常y1 匝间短路 dtrain xgb.DMatrix(X_train, labely_train) dval xgb.DMatrix(X_val, labely_val) params { max_depth: 3, eta: 0.05, objective: binary:logistic, subsample: 0.8, colsample_bytree: 0.8, eval_metric: auc, seed: 42 } model xgb.train( params, dtrain, num_boost_round200, evals[(dval, val)], early_stopping_rounds10, verbose_evalFalse ) return model # 推理时残差特征经过XGBoost后输出概率 prob_fault model.predict(xgb.DMatrix([feature_vector]))[0] alarm_level 预警 if prob_fault 0.6 else 正常 if prob_fault 0.2 else 待观察max_depth3是防止过拟合因为样本量通常不大subsample0.8和colsample_bytree0.8引入了随机性让树之间相关性降低。在实际项目中我需要根据验证集混淆矩阵调整预警阈值如果更怕漏报短路发展到一定程度烧毁绕组把阈值从0.6降到0.5如果更怕误报干扰运维决策可以适当抬到0.7。这里的概率输出比硬分类更适合工程融合因为可以和第一层的报警信号做“与”或“或”逻辑。混合诊断系统的整体决策我建议这样设计第一层阈值报警为“疑似故障”进入第二层分类器复核第二层概率超过设定阈值才输出“确诊故障”。这种级联结构有个好处第一层计算量很小可以每个控制周期执行一次第二层推理稍慢约几十毫秒用中断或事件触发即可。4. 仿真与实验从Simulink模型到台架验证参数这样设才能复现标题里的“可运行代码”如果只给Python脚本工科读者还是觉得没法闭环。完整的落地路径分三段Simulink跑故障模型生成带标签数据Python做残差提取和分类器训练再用RTDS或DSP实现实时诊断。这一章我把Simulink部分的搭建过程和需要注意的参数全部列出来保证你能在自己机器上复现。4.1 Simulink中搭建PMSM匝间短路模型的三种方式目前Simulink里建PMSM匝间短路模型有三种主流方式各有适用场景。第一种是纯Simscape Electrical的PMSM模块加外部绕组修改直接在内部打开封装后用两个绕组串联模拟短路段和正常段用可变电阻作短路电阻。这种方式最直观仿真速度偏慢适合研究短路环流波形。第二种是用基本电气元件搭建三相绕组包括电阻、电感和反电动势源把反电动势写为转子位置的函数这种方式最灵活可以任意在某一相的两段之间插入短路支路且能手动控制短路回路电感。第三种是解析方程法直接在Simulink中用MATLAB Function模块写电压方程和磁链方程把故障项加入方程。这种方式仿真速度最快也最容易和后续的残差生成算法共用模型结构。我的建议是做算法验证用第三种做波形精确分析用第一种因为Simscape能捕捉漏感和集肤效应的影响。下面给出解析方程法的核心MATLAB函数代码这是整个仿真模型的核心function [id, iq, i_fault, Te] pmsm_fault_model(u_abc, theta_e, we, motor_params, fault_params) % 输入三相电压、电角度、电角速度 % motor_params: Rs, Ls, Psif % fault_params: mu(短路比例), Rf(短路电阻), theta_f(故障位置) % 三相静止坐标系下的电感矩阵含故障非对称项 L_abcf [Ls, -0.5*Ls, -0.5*Ls, 0; -0.5*Ls, Ls, -0.5*Ls, 0; -0.5*Ls, -0.5*Ls, Ls, 0; mu*Ls/3, 0, 0, mu*Lls Lfault]; % 上式仅示意实际需要包含Park变换等价矩阵 % 使用MATLAB Function的persistent变量做数值积分 persistent x; if isempty(x) x zeros(4,1); % [i_a, i_b, i_c, i_fault] end % 状态方程: dx/dt A*x B*u F*E_pm % 故障相A相短路回路额外一个状态 A inv(L_abcf) * [-R_fault*eye(3) Rf_mu, -mu*Rs; zeros(1,3), -Rf/Lfault]; B inv(L_abcf) * [eye(3); zeros(1,3)]; F inv(L_abcf) * [1;1;1; -mu]; % 反电动势耦合 E_ab motor_params.Psif * we * [cos(theta_e); cos(theta_e-2*pi/3); cos(theta_e2*pi/3)]; dx A*x B*u_abc F*E_ab; x x dx * Ts; ia x(1); ib x(2); ic x(3); i_fault x(4); % Park变换求id, iq [id, iq] park_transform(ia, ib, ic, theta_e); Te 1.5 * motor_params.p * (Psif*iq (Ld-Lq)*id*iq); end这段代码最难理解的是状态矩阵A中反电动势耦合项的符号。短路匝产生的变压器电动势方向和正常相绕组相反所以F矩阵中A相和短路环的耦合项符号相反。如果这里符号写错短路环流的相位会偏差180度整个残差特征都会反相导致诊断系统报错位置。另外注意Lfault的取值应远小于L_magnetizing否则短路环流太小故障特征不明显。通常Lfault取正常相自感的0.05倍附近。4.2 故障仿真参数设置表短路比例、转速、负载怎么定仿真参数不是随便填的为了覆盖实际工程中“轻度故障→严重故障→故障将烧毁”的完整过程我会按下面的梯度设置参数正常工况轻度故障中度故障严重故障短路比例 mu03%8%15%短路电阻 Rf无穷大0.5 Ω0.15 Ω0.05 Ω负载转矩 (Nm)10 ~ 50 渐变10200~30 渐变转速 (rpm)600~2000 渐变150015001000~2000 渐变采样频率 (kHz)10101010轻故障用mu3%且Rf0.5Ω模拟的是绕组内部刚刚出现绝缘击穿点此时相电流几乎看不出变化但残差信号中已经能看到2倍频分量。中故障用8% 0.15Ω此时短路环流较大相电流波形会出现明显畸变负序电流含量显著上升。到严重故障设置15% 0.05Ω此时短路环流可达额定电流10倍以上温度飙升仿真中可以看到转矩脉动急剧增大。仿真时长我建议每个工况跑20秒。前5秒让电机从带载启动到稳态中间10秒采集正常残差基底最后5秒投入故障并观察残差变化。这样一组数据同时包含了正常段和故障段可以自动给数据打标签无需额外记录。负载梯度用匀速斜坡而不是阶跃是为了避免负载瞬态被误提成故障特征样本。4.3 台架验证时的传感器噪声处理与转速同步仿真验证完就要考虑实验台上真实传感器带来的问题因为实际电流传感器有偏置、标度因子误差和采样噪声。做残差之前必须先做传感器校准把dq轴电流在零速时测出的偏置记录下来在线运行时每个周期减去更严谨的做法是给三相电流加二极管钳位采样A/D转换时用中心斜率的两个点抵消偏置。转速同步对残差算法的影响同样致命。转矩波动会引起转速波动转速波动又导致dq轴电流的二倍频分量变化这个变化和故障特征混在一起。解决方法是残差计算中使用电气角速度而不是机械角速度并且要在控制器里做好转速环的陷波滤波。一般台架上用增量编码器分辨率至少2500线以上否则转速微分相位滞后过大。下面给一个现场台架调试时最常用的诊断验证流程# 第一步采集正常运行数据生成残差基线 python diagnose.py --mode baseline --data normal.csv --output baseline.pkl # 第二步模拟故障人为短接两匝引出线采集故障数据 python diagnose.py --mode extract --data fault.csv --baseline baseline.pkl --output fault_features.csv # 第三步训练混合诊断模型 python train_xgb.py --features fault_features.csv --model model_xgb.json # 第四步实时在线推理打印诊断结果 python diagnose.py --mode online --model model_xgb.json --baseline baseline.pkl数据采集时的采样率不是越高越好。电流环通常10kHz足够过高会带来高频开关噪声反而让残差信号毛刺变大过低则无法捕捉2倍电频率假设最高电频率2000Hz2倍频4000Hz采样率至少要20kHz。实际我取10k到20k之间再用5阶巴特沃斯低通滤波把开关频率以上噪声滤掉截止频率设为1.5倍最高电频率。5. 残差阈值怎么躲开误报负载瞬变、温度漂移和逆变器死区的三个坑阈值是决定这系统能不能实际用的核心但两成的工程精力花在模型上八成的精力花在防误报上。谐振负载造成残差瞬时冲高IGBT死区造成电流波形畸变温度升高让Rs漂移20%以上这三种情况都会让残差信号偏离零基线。5.1 负载瞬变工况下的残差形态鉴别PMSM在突加负载时iq电流阶跃上升如果预测模型没有同样的输入res_iq在瞬态瞬间会冲得很高和短路故障表现极其相似。区分它们有两个方法。第一是从时域表现看负载瞬变的残差尖峰持续时间极短小于一个电气周期而短路故障的残差变化是持续性的至少保持几十个周期。所以第一层阈值判断中引入“持续N个周期超过阈值”才报警的逻辑N取5~10。这要权衡灵敏度N太大会让轻度故障检测时间变长N太小又滤不掉瞬态。第二是从残差方向看负载瞬变导致的res_id几乎没有变化只有res_iq变化而匝间短路会同时让res_id和res_iq变化因为故障破坏了dq轴对称性。用残差向量在dq平面上的轨迹来判断负载瞬变是沿着iq轴直线运动短路故障则是斜向椭圆轨迹。这个特征在第二层分类器中通常排在特征重要度的前两位。5.2 温度漂移造成电阻参数失配残差基线缓慢上升电机运行30分钟后温度从常温升到80度铜绕组的Rs按0.00393/K的温度系数会增加约23%。残差模型如果用的是常温Rs正常运行时残差就会随着温度上升缓慢正偏最后触碰到阈值并持续报警。处理方式有两种。一种是在残差模型中加入温度修正经验公式Rs_est Rs_ref * (1 alpha*(T_est - T_ref))用电机热模型或温度传感器估计绕组温度。另一种更省事的方法不用固定阈值而用一个慢速自适应基线。每秒计算一次残差幅值然后做一阶低通滤波滤波器时间常数设为120秒。这个慢速漂移信号在线跟随温度的影响故障突变毫秒到秒级则不会被跟踪进去二者可以区分开。但必须警惕自适应基线的副作用如果故障缓慢发展短路匝数逐步增加故障引入的残差也会被慢速基线吸收导致系统不报警。避免的办法是让自适应基线只作用在残差的直流分量上而检测关注的是2倍频交流分量——温度漂移几乎不改变残差的交流分量只会抬高直流偏置把交流分量和直流分量分开处理就完整了。5.3 逆变器死区时间导致的电流过零点畸变逆变器开关要加死区死区时间下三相电流过零点附近会有一段电流恒定不变的平台这个平台让电流波形产生低次谐波。在残差信号里过零点畸变表现为和转子位置相关、重复出现的尖刺频率恰好是6倍电频率三相轮流过零。这个6倍频分量如果不去除会干扰2倍频故障特征的提取甚至被分类器误认为故障信号。解决手段是在残差提取前加陷波滤波器% 6倍电气频率陷波, 消除死区效应 wn 6 * we_elec / (fs/2); % 归一化频率 [num, den] iirnotch(wn, wn/50); % 陷波宽度设为频率的1/50 res_id_filtered filter(num, den, res_id);陷波器的带宽不宜太宽。带宽太窄比如wn/100当转速波动时6倍频分量漂移出陷波范围滤波不彻底带宽太宽则把相邻的故障频段信息也滤掉。我一般取wn/30到wn/50之间并在转速变化大时事先用在线辨识的频率来更新系数。如果实测中死区贡献的谐波幅值远小于故障特征也可以不加陷波直接用机器学习分类器的频带特征自动学习这个干扰模态——但这要求训练数据里必须包含各种转速下的正常死区干扰样本。6. 用参数辨识结果反查故障相残差方向加零序电流定相定位诊断系统只报“短路了”还不够工程上运维需要知道是哪一相短路、短路严重程度如何。这一章给出一个利用残差方向角和零序电流相位定位故障相的具体方法这也是从“能诊断”到“能维护”的关键进阶。三相星形连接且中性点不接地时正常对称绕组中零序电流为零。当A相出现匝间短路时短路环流在定子中形成的不对称磁动势会产生一个零序电流分量这个分量的相位近似对应故障相。具体做法是同时采集三相电流ia, ib, ic计算i0 (ia ib ic) / 3然后提取i0的基波分量其相位角phi0与转子电角度theta_e之间的差值指向故障相。实测经验公式是phi0 - theta_e在0度附近对应A相120度附近对应B相240度附近对应C相。下面给出一个离线诊断脚本的核心部分可以直接用故障数据进行定位def locate_fault_phase(ia, ib, ic, theta_e_series): i0 (ia ib ic) / 3.0 # 用DFT提取基波相位 n_samples len(i0) win np.hanning(n_samples) i0_win i0 * win # 基波频率可以从theta_e微分得到 we_elec np.mean(np.diff(theta_e_series) / dt) f0 we_elec / (2 * np.pi) phasor np.sum(i0_win * np.exp(-2j * np.pi * f0 * np.arange(n_samples) / fs)) / n_samples phi0 np.angle(phasor) theta_e_mean np.mean(theta_e_series) delta (phi0 - theta_e_mean) % (2 * np.pi / 3) if delta np.pi / 3 or delta 5 * np.pi / 3: phase A elif delta np.pi: phase B else: phase C # 计算短路比例mu的粗估计零序电流幅值与残差交流幅值比 mu_est np.abs(phasor) / np.sqrt(np.mean(res_iq ** 2)) * 0.1 return phase, mu_estlocate_fault_phase函数里的0.1是一个经验标定系数它依赖电机的具体结构和漏感参数最好在实验室环境下用已知mu的故障实验数据标定一次。如果现场不方便做标定实验粗定位的精度大约在10%以内对运维来说决定检查哪一相已经足够。需要注意定位结果受转速波动影响极大转速不稳定时theta_e_series的均值误差会让delta出现随机摆动。因此我建议定位计算必须在电机转速稳态下进行稳态判定条件设定为1秒钟内转速波动不超过额定转速的2%。还有一个工程细节短路电阻Rf越小零序电流相位越稳定定位越准轻故障下相位噪声大最好用多个周期的平均再判相。最终的系统输出不应只给“A相短路”还应该给出置信区间。把第二层分类器输出的概率值和零序电流信噪比综合成一个综合置信度分类器概率越接近1、零序电流幅值越大则置信度越高。当置信度低于70%时建议系统进入“增查模式”提高采样率到50kHz持续收集10秒数据做精细重定位而不是直接给出一个可能误导运维的错误结论。这种残差加混合分类再加定相定位的三段式结构在工业现场已经被验证是可行的故障检出率远高于单一阈值法误报率又能被控制在可接受范围。做在线部署时建议把第一层阈值和残差计算放在FPGA或C2000系列DSP里把机器学习推理放到工控机或边缘盒子两者之间用简单的寄存器通信传递特征向量和报警标志这样即使分类器部分软件崩溃第一层预警依然能兜底。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门