利用残差分析进行离心泵故障诊断

此示例示出了用于检测和发生在泵送系统不同类型的故障的诊断基于模型奇偶方程的方法。本实施例中扩展了提出的技术离心泵的故障诊断泵采用稳态实验适用于泵运行跨越多种工况的场合。

下面的例子是Rolf Isermann[1]在故障诊断应用程序书中给出的离心泵分析。它使用来自系统识别工具箱™、统计和机器学习工具箱™、控制系统工具箱™和Simulink™的功能,不需要预测维护工具箱™。万博1manbetx

多速泵运行 - 诊断通过有限元应力分析

如果泵在快速变化或更大的速度范围内运行,稳态泵头和扭矩方程不会产生准确的结果。摩擦和其他损失可能会变得很严重,模型的参数表现出对速度的依赖。在这种情况下,一种广泛适用的方法是创建行为的黑盒模型。这些模型的参数不一定具有物理意义。该模型被用作模拟已知行为的设备。模型的输出从相应的测量信号中减去进行计算残差。余部,例如其平均值,方差和功率的特性被用来正常和有故障的操作之间进行区分。

使用静态泵头方程,并且动态泵管方程,如在图中所示的4个残差,可以计算。

模型由以下组件组成:

  • 静态泵模型: Δ p Ť = θ 1 ω 2 Ť + θ 2 ω Ť

  • 动态管道模型: Q Ť = θ 3 + θ 4 Δ p Ť + θ Q Ť - 1

  • 动力泵管道模型: Q Ť = θ 3 + θ 4 Δ p Ť + θ Q Ť - 1

  • 动态逆泵型号: 中号 Ø Ť Ø [R Ť = θ 6 + θ 7 ω Ť + θ 8 ω Ť - 1 + θ 9 ω 2 Ť + θ 1 0 中号 Ø Ť Ø [R Ť - 1

该模型参数 θ 1 θ 1 0 显示在泵速的依赖。在这个例子中,对于参数的分段线性逼近来计算。划分工作区域分为3项制度:

  1. ω 9 0 0 [R P 中号

  2. 9 0 0 < ω 1 0 0 [R P 中号

  3. ω > 1 0 0 [R P 中号

一个健康的泵用的0的基准速度范围运行 - 3000 RPM在闭环与闭环控制器。参考输入是经修饰的PRBS信号。在10Hz的采样频率,收集为电机转矩,泵转矩,速度和压力的测量值。加载测量信号并绘制参考和实际泵速(这是大型数据集,大约20MB的,这是从MathWorks的下载支持文件的网站)。万博1manbetx

URL ='//www.tianjin-qmedu.com/万博1manbetxsupportfiles/predmaint/fault-diagnosis-of-centrifugal-pumps-using-residual-analysis/DynamicOperationData.mat';websave ('DynamicOperationData.mat'URL);负载DynamicOperationData图图(吨,RefSpeed,T,W)xlabel(“时间(s)”)ylabel ('泵转速(RPM)')图例(“参考”'实际'

定义基于泵的转速范围内操作制度。

I1 =瓦特<= 900;%第一工作机制I2 = W> 900&W <= 1500;%第二工作状态I3 = W> 1500;第三%操作状态

型号识别

A.静态泵模型识别

估计参数 θ 1 θ 2 在静态泵方程中采用泵转速的实测值 ω Ť 和压差 Δ p Ť 输入-输出数据。查看辅助函数staticPumpEst执行此估计。

TH1 =零(3,1);TH2 =零(3,1);dpest =楠(大小(DP));预计压差%[TH1(1),TH2(1),dpest(I1)] = staticPumpEst(瓦特,DP,I1);%Theta1,Theta2估计政权1[TH1(2),TH2(2),dpest(I2)] = staticPumpEst(瓦特,DP,I2);%Theta1,Theta2估计政权2[TH1(3),TH2(3),dpest(I3)] = staticPumpEst(瓦特,DP,I3);%Theta1,Theta2估计政权3情节(吨,DP,T,dpest)%比较实测和预测的压差xlabel(“时间(s)”)ylabel ('\三角洲P')图例(“测量后”“估计”“位置”'最好')标题(“静态泵模型验证”

B.动态管道模型辨识

估计参数 θ 3 θ 4 θ 在管排出流方程 Q Ť = θ 3 + θ 4 Δ p Ť + θ Q Ť - 1 使用流量的测量值 Q Ť 和压差 Δ p Ť 输入-输出数据。查看辅助函数dynamicPipeEst执行此估计。

TH3 =零(3,1);TH4 =零(3,1);TH5 =零(3,1);[TH3(1),TH4(1),TH5(1)] = dynamicPipeEst(DP,Q,I1);%的ta3, ta4, ta5估计了政权1[th3 (2), th4 (2), th5 (2)] = dynamicPipeEst (dp Q I2);%的ta3, ta4, ta5估计了政权2[th3 (3), th4 (3), th5 (3)] = dynamicPipeEst (dp Q I3);%的ta3, ta4, ta5估计了政权3

不同于静态泵模型的情况下,动态管道模型显示了流量值的动态依赖性。为了模拟变速制度下的模型,一个分段线性模型在Simulink使用控制系统工具箱的“LPV系统”块创建的。万博1manbetx见Simulin万博1manbetxk模型LPV_pump_pipe和辅助功能simulatePumpPipeModel执行模拟。

检查控制系统工具箱的可用性ControlsToolboxAvailable =〜的isEmpty(版本('控制')) && 执照('测试''Control_Toolbox');如果ControlsToolboxAvailable%模拟动态管道模型。使用的压力输入的测量值TS = T(2)-T(1);开关=酮(大小(W));开关(I2)= 2;开关(I3)= 3;UseEstimatedP = 0;Qest_pipe = simulatePumpPipeModel(TS,TH3,TH4,TH5);情节(T,Q,T,Qest_pipe)%比较测量的和预测的流速其他的从分段线性Simulink模型%负载预先保存的仿真结果万博1manbetx负载DynamicOperationDataQest_pipeTS = T(2)-T(1);情节(T,Q,T,Qest_pipe)结束xlabel(“时间(s)”)ylabel ('流率(Q),立方公尺/ s' 的)图例(“测量后”“估计”“位置”'最好')标题(“动态管模型验证”

C.泵动态管路模型识别

动态泵管道模型使用上面确定的相同的参数( θ 3 θ 4 θ ),除了该模型仿真需要使用估计的压力差,而不是测量的一个的。因此,没有新的识别是必需的。检查的为估计值 θ 3 θ 4 θ 给泵管动力学的良好再现。

如果使用estimatedp = 1;Qest_pump_pipe = simulatePumpPipeModel (Ts、th3 th4, th5);情节(t, Q t Qest_pump_pipe)%比较测量的和预测的流速其他的负载DynamicOperationDataQest_pump_pipe情节(t, Q t Qest_pump_pipe)结束xlabel(“时间(s)”)ylabel ('流量Q (m^3/s)')图例(“测量后”“估计”“位置”'最好')标题(“动态泵管模型验证”

配合几乎是相同于使用测得的压力值获得的一个。

D.动态逆泵模型辨识

参数 θ 6 θ 1 0 可以以类似的方式来识别,通过对先前的扭矩和速度测量回归测得的扭矩值。然而,得到的分段线性模型的完整的多速模拟不提供良好的数据拟合。因此不同的黑盒建模方法试图涉及识别与合理的回归量非线性ARX模型来拟合数据。

%用途第一300个样本总分550进行识别N = 350;sys3 = identifyNonlinearARXModel (Mmot, w, Q, Ts, N)
SYS3 =非线性ARX模型用1个输出和2个输入输入:U1,U2输出:对应于所述订单Y1标准回归量:NA = [2] NB = [2 1] NK = [0 1]自回归量:U1(叔2)^ 2 U1(t)的* U2(T-2)U2(T)^ 2非线性回归量:无模型输出是线性的回归量。采样时间:0.1秒状态:估计使用时域数据NLARX。适合于估计数据:50.55%(模拟聚焦)FPE:1759,MSE:3214
Mmot_est = SIM(SYS3,[W Q]);情节(T,M电机,T,Mmot_est)%对比测量的和预测的电动机转矩xlabel(“时间(s)”)ylabel (“电机转矩(Nm)”)图例(“测量后”“估计”“位置”'最好')标题(“逆泵模型验证”

残差产生

限定残留的模型作为测量的信号和相应的模型产生的输出之间的差。计算对应四个模型组件四个残差。

R1 = DP  -  dpest;R2 = Q  -  Qest_pipe;R3 = Q  -  Qest_pump_pipe;

为了计算逆泵模型残余物,适用于使用移动平均滤波器,因为原来的残基显示出大的方差模型输出的平滑操作。

R4 = M电机 -  movmean(Mmot_est,[1 5]);

培训残留的观点:

图副区(221)情节(T,R1)ylabel('静态泵- r1')次plot(222)次plot(t,r2)“动力管道- r2”)副区(223)图(T,R 3)ylabel(“动力泵管 -  [3”)包含(“时间(s)”)副区(224)情节(吨,R4)ylabel(“动态逆泵 -  4”)包含(“时间(s)”

残留物特征提取

残基是从合适的特征被提取用于故障隔离的信号。由于没有参数信息是可用的,认为是从信号特性得出纯粹诸如最大振幅或信号的方差特征。

考虑一组泵管道系统20个上使用实验PRBS输入的实现。实验组被重复用于每个以下模式:

  1. 健康泵

  2. 故障1:穿在间隙

  3. 故障2:小额存款,在叶轮出口

  4. 故障3:在叶轮入口存款

  5. 故障四:在叶轮出口磨粒磨损

  6. 故障5:破刃之剑

  7. 故障6:空化

  8. 故障7:速度传感器偏置

  9. 故障8:流量计偏置

  10. 故障9:压力传感器偏置

加载实验数据

URL =“//www.tianjin-qmedu.com/万博1manbetxsupportfiles/predmaint/fault-diagnosis-of-centrifugal-pumps-using-residual-analysis/MultiSpeedOperationData.mat”;websave ('MultiSpeedOperationData.mat'URL);负载MultiSpeedOperationData%生成操作模式标签标签= {'健康''ClearanceGapWear'“ImpellerOutletDeposit”...'ImpellerInletDeposit''AbrasiveWear'“破刃之剑”“空化”“SpeedSensorBias”...'FlowmeterBias''PressureSensorBias'};

计算残基为每个集合与每个操作模式。这需要几分钟的时间。因此,剩余数据被保存在数据文件中。跑过helperComputeEnsembleResidues生成残差,如:

%HealthyR = helperComputeEnsembleResidues(HealthyEnsemble,TS,SYS3,TH1,TH2,TH3,TH4,TH5);%的健康数据残差
从“helperComputeEnsembleResidues”跑%预加载保存的数据URL =“//www.tianjin-qmedu.com/万博1manbetxsupportfiles/predmaint/fault-diagnosis-of-centrifugal-pumps-using-residual-analysis/Residuals.mat”;websave (“Residuals.mat”URL);负载残差

具有最多模式分辨能力的留数的特征是未知的。因此,为每个残差生成几个候选特征:均值、最大振幅、方差、峰度和1-范数。所有特征都是使用健康总体中的值范围进行缩放的。

CandidateFeatures = {@mean,@(x)的最大值(ABS(X)),@kurtosis,@var,@(x)的总和(ABS(X))};FeatureNames = {'意思'“最大”“峰度”'方差''OneNorm'};%以上每个故障模式的聚集残差生成特征表[HealthyFeature,MINMAX] = helperGenerateFeatureTable(HealthyR,CandidateFeatures,FeatureNames);Fault1Feature = helperGenerateFeatureTable(Fault1R,CandidateFeatures,FeatureNames,MINMAX);Fault2Feature = helperGenerateFeatureTable(Fault2R,CandidateFeatures,FeatureNames,MINMAX);Fault3Feature = helperGenerateFeatureTable(Fault3R,CandidateFeatures,FeatureNames,MINMAX);Fault4Feature = helperGenerateFeatureTable(Fault4R,CandidateFeatures,FeatureNames,MINMAX);Fault5Feature = helperGenerateFeatureTable(Fault5R,CandidateFeatures,FeatureNames,MINMAX);Fault6Feature = helperGenerateFeatureTable(Fault6R,CandidateFeatures,FeatureNames,MINMAX);Fault7Feature = helperGenerateFeatureTable(Fault7R,CandidateFeatures,FeatureNames,MINMAX);Fault8Feature = helperGenerateFeatureTable(Fault8R,CandidateFeatures,FeatureNames,MINMAX);Fault9Feature = helperGenerateFeatureTable(Fault9R,CandidateFeatures,FeatureNames,MINMAX);

每个特征表有20个特征(每个残差信号有5个特征)。每个表包含50个观察值(行),每个实验一个。

N = 50;的各个模式中的实验编号%FeatureTable = [...[HealthyFeature(1:N,:),repmat(标签(1),[N,1])];...[Fault1Feature(1:N,:),repmat(标签(2),[N,1])];...[Fault2Feature(1:N,:),repmat(标签(3),[N,1])];...[Fault3Feature (1: N,:), repmat(标签(4),[N, 1]));...[Fault4Feature(1:N,:),repmat(标签(5),[N,1])];...[Fault5Feature(1:N,:),repmat(标签(6),[N,1])];...[Fault6Feature(1:N,:),repmat(标签(7),[N,1])];...[Fault7Feature (1: N,:), repmat(标签(8),[N, 1]));...[Fault8Feature (1: N,:), repmat(标签(9),[N, 1]));...[Fault9Feature(1:N,:),repmat(标签(10),[N,1])]];FeatureTable.Properties.VariableNames {端} ='条件';%预览训练数据的一些样品DISP(FeatureTable([2 13 37 49 61 62 73 85 102 120],:))
Mean1非常刻薄的Mean3 Mean4 Max1 Max2 Max3 Max4 Kurtosis1 Kurtosis2 Kurtosis3 Kurtosis4 Variance1 Variance2 Variance3 Variance4 OneNorm1 OneNorm2 OneNorm3 OneNorm4条件________累积_________说替替_____替替说说_________________________ 0.32049 0.6358 0.6358 0.74287 0.39187 0.53219 0.53219 0.041795 0.45647 0.6263 0.6263 0.18957 0.089492 0.089489 00.15642 0.56001 0.63541 0.63541 0.24258{“健康”}0 0.21975 0.19422 0.19422 0.83704 0.12761 0.12761 0.27644 0.18243 0.19644 0.19643 0.20856 0.033063 0.16772 0.16773 0.025119 0.057182 0.19344 0.19344 0.063167{“健康”}0.1847 0.25136 0.25136 0.87975 0.32545 0.13929 0.1393 0.084162 0.72346 0.091488 0.091485 0.052552 0.063757 0.18371 0.18371 0.023845 0.10671 0.25065 0.25065 0.04848{“健康”}1 1 1 0 0.78284 0.94535 0.94535 0.9287 0.41371 0.45927 0.45926 0.99783 0.80689 0.75934 0.92332 - 1 11{“健康”}-2.6545 0.90555 0.90555 0.9574 0.86324 1.3037 0.7492 0.7492 0.97823 -0.055035 0.57019 0.57018 1.4412 1.4411 0.73128 0.73128 0.80573 3.2084 0.90542 0.90542 0.49257 {‘ClearanceGapWear} -0.89435 0.43384 0.43385 1.0744 0.82197 0.30254 0.30254 -0.022325 0.21411 0.098504 0.0985 -0.010587 0.55959 0.29554 0.29554 0.066693 1.0432 0.43326 0.43326 0.13785 {‘ClearanceGapWear} -1.2149 0.53579 0.53579 1.0899 0.87439 0.47339 0.47339 0.29547 0.058946 0.048138 0.048137 0.17864 0.796480.48658 0.48658 0.25686 1.4066 0.5353 0.5353 0.26663 {‘ClearanceGapWear} -1.0949 0.44616 0.44616 1.143 0.56693 0.19719 0.19719 -0.012055 -0.10819 0.32603 0.32603 -0.0033592 0.43341 0.12857 0.12857 0.038392 1.2238 0.44574 0.44574 0.093243 {‘ClearanceGapWear} -0.1844 0.16651 0.16651 0.87747 0.25597 0.080265 0.080265 0.49715 0.5019 0.29939 0.29938 0.5338 0.072397 0.058024 0.058025 0.1453 0.20263 0.16566 0.16566 0.14216 {‘ImpellerOutletDeposit} -3.0312 - 0.9786 0.9786 - 0.75241 1.473 - 0.978390.97839 1.0343 0.0050647 0.4917 0.4917 0.89759 1.7529 0.9568 0.9568 0.8869 3.6536 0.97859 0.97859 0.62706{‘ImpellerOutletDeposit’}

分类器设计

A.使用散点图显示模式的可分性

通过目测特征开始分析。为此,考虑缺点1:间隙磨损。要查看哪些功能最适合检测此故障,请生成带有“健康”和“ClearanceGapWear”标签的功能散点图。

T = FeatureTable (:, 1:20);P = T.Variables;R = FeatureTable.Condition;I = strcmp (R,'健康')| strcmp (R,'ClearanceGapWear');f =图;gplotmatrix(P(I,:),[],R(I))f.Position(3:4)= f.Position(3:4)* 1.5;

虽然不能清楚地看见,在功能列1和17提供最分离。更仔细地分析这些功能。

f =图;名称= FeatureTable.Properties.VariableNames;J = [1 17];fprintf中(“对于间隙故障选功能:%S \ n”,strjoin(名称(J),''))
对于间隙故障选择功能:Mean1,OneNorm1
gplotmatrix (P (I, 17 [1]), [], R (I))

从图中可以清楚地看出,feature Mean1和OneNorm1可以用来区分间隙故障模式和正常模式。可以对每个故障模式进行类似的分析。在所有情况下,都有可能找到一组特征来区分故障模式。因此发现一个错误的行为总是可能的。然而,错隔离是比较困难的,因为相同的功能是由多种故障类型的影响。例如,设有Mean1(平均数为r1)和OneNorm1(R1的1范数)示出对于许多故障类型的变化。还存在一些缺陷,如传感器偏差更容易可分离其中故障在许多功能分离。

对于这三个传感器偏置故障,从散点图的手动检查接特征。

图;I = strcmp (R,'健康')| strcmp (R,'PressureSensorBias')| strcmp (R,“SpeedSensorBias”)| strcmp (R,'FlowmeterBias');J = [1 4 6 16 20];%选择功能指数fprintf中(“偏见“的传感器选择功能”:%S \ n”,strjoin(名称(J),''))
传感器偏差的选择特征:Mean1, Mean4, Max2, Variance4, OneNorm4
gplotmatrix(P(I,J),[],R(I))

的选定特征示出散点图,该4种模式可以在一个或多个对特征进行区分。培养出20个成员树巴格分类器对于该组的故障减少使用一组降低的特征(仅传感器偏差)。

rng默认%的再现性MDL = TreeBagger(20,FeatureTable(I,[J 21]),'条件'...'OOBPrediction'“上”...'OOBPredictorImportance'“上”);图图(oobError(MDL))xlabel(“株数”)ylabel (“误分类概率”

误分类误差小于3%。因此,可以用较小的一系列功能,挑选和工作故障的某个子集分类。

B.使用分类学习App进行多类分类

前一节重点介绍手动检查散点图,以减少特定故障类型的特征集。这种方法可能很繁琐,而且可能不能覆盖所有的故障类型。你能设计一个能以更自动化的方式处理所有故障模式的分类器吗?在统计和机器学习工具箱中有许多分类器。一个快速的方法来尝试他们中的许多人,并比较他们的表现是使用分类学习应用程序。

  1. 启动分类学习者App和从工作区选择FeatureTable作为一个新的会话工作数据。设置数据的一边的20%(10个样品的每个模式的),用于抵抗验证。

  2. 选择所有型号类型主选项卡的一部分。然后按火车按钮。

  3. 在很短的时间,约20分类进行培训。它们的精度显示在历史面板下他们的名字旁边。线性SVM分类器执行最好的,在保持了样品产生86%的准确度。此分类器具有识别“ClearanceGapWear”,这将其归类为“ImpellerOutletDeposit”的40%的时间的一些困难。

  4. 要获得性能的图形化视图,请从主选项卡的PLOTS部分打开Confusion Matrix plot。图中显示了所选分类器(这里的线性SVM分类器)的性能。

将性能最好的分类器导出到工作空间,并使用它来预测新的度量。

摘要

一个设计良好的故障诊断策略可以节省通过减少服务时间和部件更换成本运营成本。大约这是结合使用传感器测量检测和隔离不同类型的故障的操作机器的动态良好的知识的战略利益。本实施例中描述了用于离心泵的故障诊断的残留为基础的方法。这种方法是一个很好的替代参数估计,当建模任务是复杂的,模型参数显示在操作条件的依赖基于跟踪方法。

残余故障诊断方法包括以下步骤:

  1. 模型中的可测量的输入,并使用物理考虑或黑盒子系统识别技术的系统的输出之间的动力学。

  2. 计算残基所测量和模型所产生的信号之间的差异。该残留物可能需要进一步过滤,以提高故障isolability。

  3. 提取物作为峰值振幅,功率,峭度等从每个残差信号等功能。

  4. 使用异常检测和分类技术进行故障检测和分类。

  5. 并不是所有的残数和派生特征都对每个故障敏感。基于特征直方图和散点图的观点可以揭示哪些特征适合于检测某种故障类型。这个挑选特性并评估其故障隔离性能的过程可以是一个迭代过程。

参考

  1. Isermann,罗尔夫,故障诊断中的应用。基于模型的状态监测:执行器,驱动,机械,成套设备,传感器和容错系统第1版,施普林格出版社柏林海德堡,2011。

万博1manbetx支持功能

静态泵方程参数估计

函数[x1, x2, dpest] = static水泵est (w, dp, I)在变化速度设定%staticPumpEst静态泵参数估计%I:所选择的操作域取样索引。w1 = [0;w(我)];dp1 = [0;dp (I)];(w1 R1 =。^ 2 w1);x = pinv (R1) * dp1;x1 = x (1);x2 = x (2);dp = R1(2:最终,:)* x;结束

动态管参数估计

函数[x3, x4, x5, Qest] = dynamicPipeEst(dp, Q, I)在变化速度设定%dynamicPipeEst动态管参数估计%I:所选择的操作域取样索引。Q = Q(I);DP = DP(I);R1 = [0;Q(1:结束-1)];R2 = DP;R2(R2 <0)= 0;R2 = SQRT(R2);R = [酮(尺寸(R2)),R2,R1];移除过期的样品II =发现(I);J =找到(差异(II)〜= 1);R = R(2:端,:);R(Ĵ,:) = [];Y = Q(2:结束);Y(j)的= [];X = R \ÿ;X3 = X(1);X4 = X(2);X5 = X(3); Qest = R*x;结束

动态,用LPV系统块泵管道模型的多操作模式模拟。

函数Q估计= simulatePumpPipeModel(TS,TH3,TH4,TH5)%simulatePumpPipeModel动态管道系统分段线性建模。%TS:采样时间%重量:泵转速% th1、th2、th3为3个政权的估计模型参数。%该功能需要控制系统工具箱。(魔法石,第1章=党卫军th5 (1) th4 (1) th5 (1) th4 (1) Ts);ss2 = ss (th5 (2), th4 (2), th5 (2), th4 (2) Ts);ss3 = ss (th5 (3), th4 (3), th5 (3), th4 (3), Ts);抵消=排列([th3 (1) th3 (2), th3(3)]的[3 2 1]);OP =结构('区域'[1 2 3]“);SYS =猫(3,SS1,SS2,SS3);sys.SamplingGrid = OP;assignin('基础'“sys”,SYS)assignin('基础'“抵消”,抵消)mdl ='LPV_pump_pipe';SIM(MDL);Q估计= logsout.get(“Q估计”);q = Qest.Values;q = Qest.Data;结束

确定一个反泵动力学的动态模型。

函数SYSE = identifyNonlinearARXModel(M电机,W,Q,TS,N)%identifyNonlinearARXModel确定为2输入非线性ARX模型(W,Q),1输出(M电机)数据。%输入:%重量:转速%Q:流量%M电机:电动机转矩%N:数据样本,以使用的数%输出:%SYSE:辨识模型%该功能使用NLARX估计从系统辨识工具箱。SYS = idnlarx([2 2 1 0 1],'CustomRegressors',{'U1(T-2)^ 2'“u1 (t) * u2 (2)'U2(T)^ 2'});数据= IDDATA(M电机,[W Q],TS);选择= nlarxOptions;opt.Focus =“模拟”;opt.SearchOptions.MaxIterations = 500;SYSE = nlarx(数据(1:N),SYS,优化);结束

相关的话题