基于稳态实验的离心泵故障诊断gydF4y2Ba
这个例子展示了一种基于模型的方法,用于检测和诊断泵系统中发生的不同类型的故障。本例遵循Rolf Isermann[1]的《故障诊断应用》一书中给出的离心泵分析。gydF4y2Ba
泵监督与故障检测gydF4y2Ba
泵是许多行业的基本设备,包括电力和化工,矿物和采矿,制造,加热,空调和冷却。离心泵是通过将旋转动能转换为流体流动的流体动力能量来输送流体的。转动能量通常来自内燃机或电动机。流体沿旋转轴或靠近旋转轴进入泵叶轮,并被叶轮加速,向外径向流入扩散器。gydF4y2Ba
泵的液压或机械部件会受到损坏。最常见的故障部件是滑动环密封和滚珠轴承,尽管其他部件包括驱动电机、叶轮叶片和滑动轴承的故障也并不罕见。下表列出了最常见的故障类型。gydF4y2Ba
空化:gydF4y2Ba如果静压低于蒸气压,流体内部就会产生蒸气泡。气泡突然破裂导致叶片轮的损坏。gydF4y2Ba
气液:gydF4y2Ba压降导致液体中的溶解气体。气液分离和压头降低的结果。gydF4y2Ba
演练:gydF4y2Ba缺少流体导致轴承缺乏冷却和过热。对开始阶段很重要。gydF4y2Ba
侵蚀:gydF4y2Ba由于硬颗粒或空化对墙体造成机械损伤gydF4y2Ba
腐蚀:gydF4y2Ba腐蚀性液体造成的损害gydF4y2Ba
轴承磨损:gydF4y2Ba机械损伤通过疲劳和金属摩擦,产生点蚀和撕裂gydF4y2Ba
溢流孔的封堵:gydF4y2Ba导致轴向轴承过载/损坏gydF4y2Ba
滑环密封的堵塞:gydF4y2Ba导致更高的摩擦和更小的效率gydF4y2Ba
增加分裂密封:gydF4y2Ba导致效率的损失gydF4y2Ba
存款:gydF4y2Ba有机物质或通过化学反应沉积在转子入口或出口降低效率和提高温度。gydF4y2Ba
振动:gydF4y2Ba转子损坏或沉积导致转子不平衡。可引起轴承损坏。gydF4y2Ba
可用的传感器gydF4y2Ba
通常测量以下信号:gydF4y2Ba
进口和出口之间的压差gydF4y2Ba
转速gydF4y2Ba
电动机转矩gydF4y2Ba 和泵的转矩gydF4y2Ba
泵出口的流体排放(流量)率gydF4y2Ba
驱动电机电流、电压、温度(此处不考虑)gydF4y2Ba
流体温度、沉积物(这里不考虑)gydF4y2Ba
泵和管道系统的数学模型gydF4y2Ba
一个力矩gydF4y2Ba 施加在径向离心泵的转子上得到一个转速gydF4y2Ba 并将泵流体的动量增加从半径较小的转子进口传递到半径较大的转子出口。欧拉涡轮方程给出了压差之间的关系gydF4y2Ba 、速度gydF4y2Ba 和液体排量(流量)gydF4y2Ba :gydF4y2Ba
在哪里gydF4y2Ba 是理论(理想;无损失)泵扬程以米和计gydF4y2Ba ,gydF4y2Ba 是比例常数。当考虑叶轮叶片数量有限,非切向流动造成的摩擦损失和冲击损失时,实际泵扬程为:gydF4y2Ba
在哪里gydF4y2Ba ,gydF4y2Ba 而且gydF4y2Ba 是否将比例常数作为模型参数。对应的泵转矩为:gydF4y2Ba
当施加扭矩时,电机和泵的机械部件使速度增加,根据:gydF4y2Ba
在哪里gydF4y2Ba 电机和泵的惯性比,和gydF4y2Ba 摩擦力矩是否由库仑摩擦组成gydF4y2Ba 和粘滞摩擦gydF4y2Ba 根据:gydF4y2Ba
泵连接到管道系统,将液体从下层储罐输送到上层储罐。动量平衡方程得到:gydF4y2Ba
在哪里gydF4y2Ba 为管道的阻力系数,gydF4y2Ba 管长度gydF4y2Ba 和横截面积gydF4y2Ba ,gydF4y2Ba 是储存库在泵上的高度。模型参数gydF4y2Ba 可以从物理学中知道,也可以通过将测量的传感器信号拟合到模型的输入/输出来估计。所使用的型号可能取决于泵运行时的操作条件。例如,如果泵总是以恒定的角速度运行,则可能不需要泵管系统的全非线性模型。gydF4y2Ba
故障检测技术gydF4y2Ba
通过检查从测量中提取的某些特征,并将其与可接受行为的已知阈值进行比较,可以发现故障。不同故障的可检测性和可隔离性取决于实验的性质和测量的可用性。例如,压力测量的恒速分析只能检测出引起较大压力变化的故障。此外,它不能可靠地评估故障的原因。然而,测量压差、电机转矩和流量的多速实验可以检测和隔离许多故障来源,如由气体外壳、干跑、大量沉积、电机缺陷等引起的故障。gydF4y2Ba
基于模型的方法采用以下技术:gydF4y2Ba
参数估计:利用机器正常(名义)运行时的测量值,对模型的参数进行估计,并对其不确定度进行量化。然后使用测试系统测量值重新估计参数值,并将得到的估计值与它们的标称值进行比较。该技术是本示例的主要主题。gydF4y2Ba
残留生成:为正常的机器像以前一样训练模型。将模型的输出与来自测试系统的测量结果进行比较,并计算残差信号。分析该信号的幅度、方差和其他特性,以检测故障。可以设计和使用大量残基来区分不同的故障源。该技术将在gydF4y2Ba基于残差分析的离心泵故障诊断gydF4y2Ba的例子。gydF4y2Ba
恒速实验:基于参数估计的故障分析gydF4y2Ba
泵校准和监督的常用做法是以恒定速度运行,并记录泵的静态扬程和流体排放率。通过改变管道系统中的阀门位置,可以调节流体排量(GPM)。排量的增加使泵扬程减小。泵的测量扬程特性可以与制造商提供的值进行比较。任何差异都表明可能存在故障。通过在Simulink中对泵管系统模型进行仿真,得到了泵管系统的输送扬程和流量流量的测量值。gydF4y2Ba
在公称转速为2900转/分时,制造商提供的健康泵的理想泵头特性如下所示。gydF4y2Ba
url =gydF4y2Ba“//www.ru-cchi.com/supportfiles/predmaint/fault-diagnosis-of-centrifugal-pumps-using-steady-state-experiments/PumpCharacteristicsData.mat”gydF4y2Ba;websave (gydF4y2Ba“PumpCharacteristicsData.mat”gydF4y2Baurl);负载gydF4y2BaPumpCharacteristicsDatagydF4y2BaQ0处gydF4y2BaH0gydF4y2BaM0gydF4y2Ba制造商提供泵输送头的数据gydF4y2Ba图绘制(H0 Q0处,gydF4y2Ba“——”gydF4y2Ba);包含(gydF4y2Ba“放电速率Q (m^3/h)”gydF4y2Ba) ylabel (gydF4y2Ba泵头(m)的gydF4y2Ba)标题(gydF4y2Ba“2900转/分泵输送头特性”gydF4y2Ba网格)gydF4y2Ba在gydF4y2Ba传奇(gydF4y2Ba“健康泵”gydF4y2Ba)gydF4y2Ba
引起泵特性明显变化的故障有:gydF4y2Ba
在间隙处磨损gydF4y2Ba
叶轮出口磨损gydF4y2Ba
叶轮出口处积垢gydF4y2Ba
为了分析故障泵,收集了受不同故障影响的泵的转速、扭矩和流量的测量数据。例如,当故障出现在间隙环时,测量的泵扬程特性在特性曲线上显示出明显的偏移。gydF4y2Ba
负载gydF4y2BaPumpCharacteristicsDatagydF4y2Ba第一季度gydF4y2BaH1gydF4y2BaM1gydF4y2Ba%信号测量的泵与大间隙gydF4y2Ba持有gydF4y2Ba在gydF4y2Ba情节(Q1, H1);负载gydF4y2BaPumpCharacteristicsDatagydF4y2Ba第二季gydF4y2BaH2gydF4y2Ba平方米gydF4y2Ba%信号测量的泵与小间隙gydF4y2Ba情节(Q2, H2);传奇(gydF4y2Ba“健康泵”gydF4y2Ba,gydF4y2Ba“大通关”gydF4y2Ba,gydF4y2Ba“小间隙”gydF4y2Ba)举行gydF4y2Ba从gydF4y2Ba
在转矩流特性和其他故障类型中也可以看到类似的变化。gydF4y2Ba
为了实现故障诊断的自动化,您可以将观察到的变化转化为定量信息。一种可靠的方法是将参数化曲线与上面绘制的头流特征数据拟合。利用泵管动力学控制方程,并利用简化的扭矩关系,得到以下方程:gydF4y2Ba
是要估计的参数。如果你测量gydF4y2Ba 而且gydF4y2Ba ,参数可以用线性最小二乘估计。这些参数是gydF4y2Ba特性gydF4y2Ba这可以用来开发故障检测和诊断算法。gydF4y2Ba
初步分析:比较参数值gydF4y2Ba
计算并绘制上述3条曲线的估计参数值。的测量值gydF4y2Ba 而且gydF4y2Ba 数据和gydF4y2Ba 作为泵的公称转速。gydF4y2Ba
w = 2900;gydF4y2Ba% RPMgydF4y2Ba%健康泵gydF4y2Ba[hnn_0, hnv_0 hvv_0、k0_0 k1_0, k2_0] = linearFit (0, {w Q0 H0, M0});gydF4y2Ba%大间隙泵gydF4y2Ba[hnn_1, hnv_1 hvv_1、k0_1 k1_1, k2_1] = linearFit (0, {w, Q1, H1, M1});gydF4y2Ba小间隙泵gydF4y2Ba[hnn_2, hnv_2 hvv_2、k0_2 k1_2, k2_2] = linearFit (0, {w, Q2, H2, M2});X = [hnn_0 hnn_1 hnn_2;hnv_0 hnv_1 hnv_2;hvv_0 hvv_1 hvv_2]”;disp (array2table (X,gydF4y2Ba“VariableNames”gydF4y2Ba,{gydF4y2Ba“hnn”gydF4y2Ba,gydF4y2Ba“hnv”gydF4y2Ba,gydF4y2Ba“hvv”gydF4y2Ba},gydF4y2Ba...gydF4y2Ba“RowNames”gydF4y2Ba,{gydF4y2Ba“健康”gydF4y2Ba,gydF4y2Ba“大通关”gydF4y2Ba,gydF4y2Ba“小间隙”gydF4y2Ba}))gydF4y2Ba
hnn hnv hvv __________ __________ _________健康5.1164e-06 8.6148e-05 0.010421大间隙4.849e-06 8.362e-05 0.011082小间隙5.3677e-06 8.4764e-05 0.0094656gydF4y2Ba
Y = [k0_0 k0_1 k0_2;k1_0 k1_1 k1_2;k2_0 k2_1 k2_2]”;disp (array2table (Y,gydF4y2Ba“VariableNames”gydF4y2Ba,{gydF4y2Ba“k0”gydF4y2Ba,gydF4y2Ba“k1”gydF4y2Ba,gydF4y2Ba“k2”gydF4y2Ba},gydF4y2Ba...gydF4y2Ba“RowNames”gydF4y2Ba,{gydF4y2Ba“健康”gydF4y2Ba,gydF4y2Ba“大通关”gydF4y2Ba,gydF4y2Ba“小间隙”gydF4y2Ba}))gydF4y2Ba
k0 k1 k2 __________ ________ __________健康0.00033347 0.016535 2.8212e-07大间隙0.00031571 0.016471 3.0285e-07小间隙0.00034604 0.015886 2.6669e-07gydF4y2Ba
表格显示gydF4y2Ba 而且gydF4y2Ba 当间隙间隙大时,值减小,而当间隙小时,值大于标称值。另一方面,gydF4y2Ba 而且gydF4y2Ba 间隙间隙大时值增大,间隙小时值减小。的依赖gydF4y2Ba 而且gydF4y2Ba 上间隙不太清楚。gydF4y2Ba
结合不确定性gydF4y2Ba
初步分析表明,参数的变化是如何指示故障的。然而,即使是健康的泵,由于测量噪声、流体污染和粘度变化以及运行泵的电机的滑转特性,测量也会发生变化。这些测量变量在参数估计中引入了不确定性。gydF4y2Ba
通过在10个排放节流阀位置以2900转/分运行,从无故障状态下运行的泵中收集5组测量值。gydF4y2Ba
url =gydF4y2Ba“//www.ru-cchi.com/supportfiles/predmaint/fault-diagnosis-of-centrifugal-pumps-using-steady-state-experiments/FaultDiagnosisData.mat”gydF4y2Ba;websave (gydF4y2Ba“FaultDiagnosisData.mat”gydF4y2Baurl);负载gydF4y2BaFaultDiagnosisDatagydF4y2BaHealthyEnsemblegydF4y2BaH = cellfun (@ x (x)。Head,HealthyEnsemble,“大学”gydF4y2Ba, 0);Q = cellfun (@ x (x)。HealthyEnsemble放电,gydF4y2Ba“大学”gydF4y2Ba, 0);情节(猫(2 Q{:}),猫(2 H {:}),gydF4y2Ba“k”。gydF4y2Ba)标题(gydF4y2Ba“5次试运行泵压头特性集成”gydF4y2Ba)包含(gydF4y2Ba的流量(m ^ 3 / hed)”gydF4y2Ba) ylabel (gydF4y2Ba泵头(m)的gydF4y2Ba)gydF4y2Ba
该图显示了在现实条件下,即使是一个健康的泵的特性变化。为了使故障诊断可靠,必须考虑到这些变化。下一节将讨论针对噪声数据的故障检测和隔离技术。gydF4y2Ba
异常检测gydF4y2Ba
在许多情况下,只能获得正常运行的机器的度量值。在这种情况下,可以使用可用的测量值创建健康状态的统计描述,其中包含参数向量的平均值和协方差。测试泵的测量值可以与标称统计值进行比较,以测试测试泵是否是一个健康的泵是否可信。从检测特征的角度来看,有故障的泵应该被检测为异常。gydF4y2Ba
估计泵扬程和扭矩参数的平均值和协方差。gydF4y2Ba
负载gydF4y2BaFaultDiagnosisDatagydF4y2BaHealthyEnsemblegydF4y2Ba[HealthyTheta1, HealthyTheta2] = linearFit(1, HealthyEnsemble);meanTheta1 =意味着(HealthyTheta1, 1);meanTheta2 =意味着(HealthyTheta2, 1);covTheta1 = x (HealthyTheta1);covTheta2 = x (HealthyTheta2);gydF4y2Ba
将参数不确定度可视化为74%置信区域,对应于2个标准差(gydF4y2Ba
).看到helper函数gydF4y2BahelperPlotConfidenceEllipsoidgydF4y2Ba
获取详细信息。gydF4y2Ba
%泵扬程参数置信椭球gydF4y2Baf =图;f.Position (3) = f.Position (3) * 2;次要情节(121)helperPlotConfidenceEllipsoid (meanTheta1 covTheta1 2, 0.6);包含(gydF4y2Ba“hnn”gydF4y2Ba) ylabel (gydF4y2Ba“hnv”gydF4y2Ba) zlabel (gydF4y2Ba“hvv”gydF4y2Ba)标题(gydF4y2Ba“泵扬程参数的2-sd置信椭球”gydF4y2Ba)举行gydF4y2Ba在gydF4y2Ba
泵转矩参数置信椭球%gydF4y2Ba次要情节(122)helperPlotConfidenceEllipsoid (meanTheta2 covTheta2 2, 0.6);包含(gydF4y2Ba“k0”gydF4y2Ba) ylabel (gydF4y2Ba“k1”gydF4y2Ba) zlabel (gydF4y2Ba“k2”gydF4y2Ba)标题(gydF4y2Ba“泵转矩参数的2-sd置信椭球”gydF4y2Ba)举行gydF4y2Ba在gydF4y2Ba
灰色椭球表示健康泵参数的置信区域。加载未标记的测试数据,以便与正常区域进行比较。gydF4y2Ba
负载gydF4y2BaFaultDiagnosisDatagydF4y2BaTestEnsemblegydF4y2Ba
TestEnsemble包含一组在不同阀门位置的泵转速、扭矩、扬程和流量测量。所有的测量都包含不同程度的间隙断层。gydF4y2Ba
%测试数据预览gydF4y2Badisp (TestEnsemble {1} (1:5,:))gydF4y2Ba%第一个集合成员的前5个测量行gydF4y2Ba
时间运行阀门位置速度头部放电力矩____________ _____________ ____________ _________ _______ 180 sec 1 10 3034.6 12.367 35.339 0.35288 180.1 sec 1 10 2922.1 9.6762 36.556 4.6953 180.2 sec 1 10 2636.1 11.168 36.835 9.8898 180.3 sec 1 10 2717.4 10.562 40.22 -12.598 180.4 sec 1 10 3183.7 10.55 40.553 14.672gydF4y2Ba
计算测试参数。看到helper函数gydF4y2BalinearFitgydF4y2Ba
.gydF4y2Ba
TestTheta1:泵扬程参数gydF4y2BaTestTheta2:泵扭矩参数gydF4y2Ba[TestTheta1,TestTheta2] = linearFit(1, TestEnsemble);次要情节(121)plot3 (TestTheta1 (: 1), TestTheta1 (:, 2), TestTheta1 (:, 3),gydF4y2Ba“g *”gydF4y2Ba视图([-42.7 10])subplot(122) plot3(TestTheta2(:,1),TestTheta2(:,2),TestTheta2(:,3),gydF4y2Ba“g *”gydF4y2Ba)视图(-28.3 [18])gydF4y2Ba
每个绿星标记由一个测试泵贡献。在置信范围之外的标记可以被视为异常值,而在置信范围内的标记要么来自正常的泵,要么未被检测到。注意,特定泵的标记可能在泵扬程视图中被标记为异常,但在泵扭矩视图中则没有。这可能是由于这些视图检测到的故障来源不同,或者压力和扭矩测量的潜在可靠性不同。gydF4y2Ba
利用置信域量化异常检测gydF4y2Ba
本节讨论了利用置信区域信息进行故障检测和评估的方法。该技术是计算测试样本到健康区域分布的平均值或中位数的“距离”。该距离必须相对于由其协方差表示的健康参数数据的正常“扩散”。函数MAHAL从参考样本集(这里的健康泵参数集)的分布计算测试样本的马氏距离:gydF4y2Ba
ParDist1 = mahal(TestTheta1, HealthyTheta1);gydF4y2Ba%为泵扬程参数gydF4y2Ba
如果您假设74%的置信界限(2个标准差)是健康数据的可接受的变化,那么应该将ParDist1中大于2^2 = 4的任何值标记为异常值,从而表明有错误行为。gydF4y2Ba
将距离值添加到图中。红线标记异常的测试样本。看到helper函数gydF4y2BahelperAddDistanceLinesgydF4y2Ba
.gydF4y2Ba
阈值= 2;disp(表((1:长度(ParDist1))、ParDist1 ParDist1 >阈值^ 2,gydF4y2Ba...gydF4y2Ba“VariableNames”gydF4y2Ba,{gydF4y2Ba“PumpNumber”gydF4y2Ba,gydF4y2Ba“SampleDistance”gydF4y2Ba,gydF4y2Ba“异常”gydF4y2Ba}))gydF4y2Ba
PumpNumber SampleDistance异常__________ ______________ _________ 1 58.874 true 2 24.051 true 3 6.281 true 4 3.7179 false 5 13.58 true 6 3.0723 false 7 2.0958 false 8 4.7127 true 9 26.829 true 10 0.74682 falsegydF4y2Ba
helperAddDistanceLines(1, ParDist1, meanTheta1, TestTheta1, Threshold);gydF4y2Ba
泵转矩也是如此:gydF4y2Ba
ParDist2 = mahal(TestTheta2, HealthyTheta2);gydF4y2Ba%为泵扭矩参数gydF4y2Badisp(表((1:长度(ParDist2))、ParDist2 ParDist2 >阈值^ 2,gydF4y2Ba...gydF4y2Ba“VariableNames”gydF4y2Ba,{gydF4y2Ba“PumpNumber”gydF4y2Ba,gydF4y2Ba“SampleDistance”gydF4y2Ba,gydF4y2Ba“异常”gydF4y2Ba}))gydF4y2Ba
PumpNumber SampleDistance异常__________ ______________ _________ 1 9.1381 true 2 5.4249 true 3 3.0565 false 4 3.775 false 5 0.77961 false 6 7.5508 true 7 3.3368 false 8 0.74834 false 9 3.6478 false 10 1.0241 falsegydF4y2Ba
helperAddDistanceLines(2, ParDist2, meanTheta2, TestTheta2, Threshold);视图([8.1 - 17.2])gydF4y2Ba
这些图现在不仅显示了异常样本的检测,而且还量化了它们的严重程度。gydF4y2Ba
用一类分类器量化异常检测gydF4y2Ba
标记异常的另一种有效技术是为健康参数数据集构建一个单类分类器。使用健康泵参数数据训练支持向量机分类器。由于没有使用错误标签,因此将所有样本视为来自同一(健康)类。由于参数的变化gydF4y2Ba 而且gydF4y2Ba 是最具指示性的潜在故障,仅使用这些参数来训练SVM分类器。gydF4y2Ba
数控=大小(HealthyTheta1, 1);rng (2)gydF4y2Ba%的再现性gydF4y2BaSVMOneClass1 = fitcsvm(HealthyTheta1(:,[1 3]),ones(nc,1),gydF4y2Ba...gydF4y2Ba“KernelScale”gydF4y2Ba,gydF4y2Ba“汽车”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“标准化”gydF4y2Ba,真的,gydF4y2Ba...gydF4y2Ba“OutlierFraction”gydF4y2Ba, 0.0455);gydF4y2Ba
绘制试验观测值和决策边界。标记支持向量和潜在异常值。看到helper函数gydF4y2BahelperPlotSVMgydF4y2Ba
.gydF4y2Ba
图helperPlotSVM(SVMOneClass1,TestTheta1(:,[1 3])) title(gydF4y2Ba“支持向量机泵扬程参数异常检测”gydF4y2Ba)包含(gydF4y2Ba“hnn”gydF4y2Ba) ylabel (gydF4y2Ba“hvv”gydF4y2Ba)gydF4y2Ba
当轮廓值为0时,将异常值与其余数据分隔开的边界出现;这是图中标有“0”的水平曲线。异常值用红圈标出。对扭矩参数也可以进行类似的分析。gydF4y2Ba
SVMOneClass2 = fitcsvm(HealthyTheta2(:,[1 3]),ones(nc,1),gydF4y2Ba...gydF4y2Ba“KernelScale”gydF4y2Ba,gydF4y2Ba“汽车”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“标准化”gydF4y2Ba,真的,gydF4y2Ba...gydF4y2Ba“OutlierFraction”gydF4y2Ba, 0.0455);图helperPlotSVM(SVMOneClass2,TestTheta2(:,[1 3])) title(gydF4y2Ba“转矩参数的SVM异常检测”gydF4y2Ba)包含(gydF4y2Ba“k0”gydF4y2Ba) ylabel (gydF4y2Ba“k2”gydF4y2Ba)gydF4y2Ba
类似的分析可以用于检测其他类型的故障,如叶轮出口的磨损或沉积,这将在故障隔离的背景下进行讨论。gydF4y2Ba
以稳态参数为特征的故障隔离gydF4y2Ba
如果测试系统中关于故障类型的信息是可用的,那么就可以使用它来创建算法,不仅可以检测故障,还可以指出故障的类型。gydF4y2Ba
A.用似然比检验判别间隙间隙故障gydF4y2Ba
间隙间隙的变化可以分为两种类型——小于预期间隙(泵扬程特征图中的黄线)和大于预期间隙(红线)。负载泵测试数据集包含间隙故障,其中故障的性质(大或小)是预先知道的。使用这些故障标签可在以下模式中进行3向分类:gydF4y2Ba
模式1:正常间隙(健康行为)gydF4y2Ba
模式二:间隙间隙大gydF4y2Ba
模式三:间隙小gydF4y2Ba
url =gydF4y2Ba“//www.ru-cchi.com/supportfiles/predmaint/fault-diagnosis-of-centrifugal-pumps-using-steady-state-experiments/LabeledGapClearanceData.mat”gydF4y2Ba;websave (gydF4y2Ba“LabeledGapClearanceData.mat”gydF4y2Baurl);负载gydF4y2BaLabeledGapClearanceDatagydF4y2BaHealthyEnsemblegydF4y2BaLargeGapEnsemblegydF4y2BaSmallGapEnsemblegydF4y2Ba
这个集合包含了50个独立实验的数据。如前所述,拟合稳态线性模型,参数化泵扬程和扭矩数据。gydF4y2Ba
[HealthyTheta1, HealthyTheta2] = linearFit(1,HealthyEnsemble);[LargeTheta1, LargeTheta2] = linearFit(1, largegaapensemble);[SmallTheta1, SmallTheta2] = linearFit(1,SmallGapEnsemble);gydF4y2Ba
绘制参数直方图,检查3种模式之间是否存在可分离性。这个函数gydF4y2BahistfitgydF4y2Ba
用来绘制直方图和相应的拟合正态分布曲线。看到helper函数gydF4y2BahelperPlotHistogramgydF4y2Ba
.gydF4y2Ba
水泵扬程参数gydF4y2Ba:gydF4y2Ba
helperPlotHistogram(HealthyTheta1, LargeTheta1, SmallTheta1, {gydF4y2Ba“hnn”gydF4y2Ba,gydF4y2Ba“hnv”gydF4y2Ba,gydF4y2Ba“hvv”gydF4y2Ba})gydF4y2Ba
直方图显示了这一点gydF4y2Ba 在三种模式之间提供了很好的分离性,但是gydF4y2Ba 参数具有重叠的概率分布函数(pdf)。gydF4y2Ba
泵转矩参数gydF4y2Ba:gydF4y2Ba
helperPlotHistogram(HealthyTheta2, LargeTheta2, SmallTheta2, {gydF4y2Ba“k0”gydF4y2Ba,gydF4y2Ba“k1”gydF4y2Ba,gydF4y2Ba“k2”gydF4y2Ba})gydF4y2Ba
对于扭矩参数,个别分离性不是很好。在平均值和方差中仍然有一些变化,可以被训练过的3模式分类器利用。如果pdf在均值或方差上显示出良好的分离,您可以设计似然比测试,以快速将测试数据集分配到最可能的模式。下面显示的是泵扬程参数。gydF4y2Ba
让:gydF4y2Ba
:假设扬程参数属于健康泵模式gydF4y2Ba
:假设扬程参数属于间隙间隙较大的泵gydF4y2Ba
:假设扬程参数属于间隙间隙小的泵gydF4y2Ba
将可用参数集作为模态预测的测试样本。将预测模式指定为联合PDF值最高的模式(假设gydF4y2Ba
被选中了gydF4y2Ba
如果gydF4y2Ba
).然后在混淆矩阵中绘制出比较真实模式和预测模式的结果。函数gydF4y2BamvnpdfgydF4y2Ba
用于计算PDF值和函数gydF4y2BaconfusionmatrixgydF4y2Ba
而且gydF4y2Ba的热图gydF4y2Ba
用于混淆矩阵可视化。看到helper函数gydF4y2BapumpModeLikelihoodTestgydF4y2Ba
.gydF4y2Ba
%泵扬程混淆矩阵gydF4y2Ba图pumpModeLikelihoodTest(HealthyTheta1, LargeTheta1, SmallTheta1)gydF4y2Ba
混淆图显示了三种模式之间的完美分离,这并不奇怪,因为直方图之间的清晰分离gydF4y2Ba 参数。gydF4y2Ba
泵扭矩混淆矩阵gydF4y2BapumpModeLikelihoodTest (HealthyTheta2 LargeTheta2 SmallTheta2)gydF4y2Ba
扭矩参数的结果稍差。尽管三种模式的pdf有明显重叠,但成功率还是相当高(97%)。这是因为PDF值的计算同时受到位置(均值)和振幅(方差)的影响。gydF4y2Ba
B.基于树袋装法的故障模式多类分类gydF4y2Ba
在本节中,我们将讨论另一种分类技术,当需要对数量较多的模态进行分类时,这种技术更适用。考虑以下泵的运行故障模式:gydF4y2Ba
健康的操作gydF4y2Ba
间隙磨损gydF4y2Ba
叶轮出口有少量沉积物gydF4y2Ba
叶轮进气道积垢gydF4y2Ba
叶轮出口磨粒磨损gydF4y2Ba
破碎的叶片gydF4y2Ba
空化gydF4y2Ba
分类问题比较困难,因为只计算了三个参数,需要区分7种操作模式。因此,您不仅要比较每个故障模式与健康模式的估计参数,而且还要比较彼此之间的估计参数——两者都是gydF4y2Ba方向gydF4y2Ba(价值的增加或减少)和gydF4y2Ba级gydF4y2Ba(10%的变化vs. 70%的变化)必须考虑到参数的变化。gydF4y2Ba
这里展示了TreeBagger分类器对这个问题的使用。Tree Bagger是一种集成学习技术,它使用特征的自举聚合(bagging)来创建对标记数据进行分类的决策树。收集了50个标记数据集用于7种操作模式。估计每个数据集的泵扬程参数,并使用来自每个模式的参数估计的子集训练分类器。gydF4y2Ba
url =gydF4y2Ba“//www.ru-cchi.com/supportfiles/predmaint/fault-diagnosis-of-centrifugal-pumps-using-steady-state-experiments/MultipleFaultsData.mat”gydF4y2Ba;websave (gydF4y2Ba“MultipleFaultsData.mat”gydF4y2Baurl);负载gydF4y2BaMultipleFaultsDatagydF4y2Ba计算泵扬程参数gydF4y2BaHealthyTheta = linearFit(1, HealthyEnsemble);Fault1Theta = linearFit(1, Fault1Ensemble);Fault2Theta = linearFit(1, Fault2Ensemble);Fault3Theta = linearFit(1, Fault3Ensemble);Fault4Theta = linearFit(1, Fault4Ensemble);Fault5Theta = linearFit(1, Fault5Ensemble);Fault6Theta = linearFit(1, Fault6Ensemble);gydF4y2Ba为每个操作模式生成标签gydF4y2Ba标签= {gydF4y2Ba“健康”gydF4y2Ba,gydF4y2Ba“ClearanceGapWear”gydF4y2Ba,gydF4y2Ba“ImpellerOutletDeposit”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“ImpellerInletDeposit”gydF4y2Ba,gydF4y2Ba“AbrasiveWear”gydF4y2Ba,gydF4y2Ba“BrokenBlade”gydF4y2Ba,gydF4y2Ba“空化”gydF4y2Ba};VarNames = {gydF4y2Ba“hnn”gydF4y2Ba,gydF4y2Ba“hnv”gydF4y2Ba,gydF4y2Ba“hvv”gydF4y2Ba,gydF4y2Ba“条件”gydF4y2Ba};gydF4y2Ba将结果组装到一个带有参数和相应标签的表中gydF4y2BaN = 50;T0 = [array2table (HealthyTheta)、repmat(标签(1)[N, 1]));T0.Properties。VariableNames = VarNames;T1 = [array2table(Fault1Theta), repmat(Label(2),[N,1])];T1.Properties。VariableNames = VarNames;T2 = [array2table(Fault2Theta), repmat(Label(3),[N,1])];T2.Properties。VariableNames = VarNames; T3 = [array2table(Fault3Theta), repmat(Label(4),[N,1])]; T3.Properties.VariableNames = VarNames; T4 = [array2table(Fault4Theta), repmat(Label(5),[N,1])]; T4.Properties.VariableNames = VarNames; T5 = [array2table(Fault5Theta), repmat(Label(6),[N,1])]; T5.Properties.VariableNames = VarNames; T6 = [array2table(Fault6Theta), repmat(Label(7),[N,1])]; T6.Properties.VariableNames = VarNames;%堆叠所有数据gydF4y2Ba使用50个数据集中的30个来创建模型gydF4y2BaTrainingData = [T0 (1:30,:); T1 (1:30,:), T2 (1:30,:), T3 (1:30,:), T4 (1:30,:), T5 (1:30:); T6 (1:30:)];gydF4y2Ba创建一个包含20个决策树的集成Mdl,用于预测gydF4y2Ba%使用参数值进行标记gydF4y2Ba提高(3)gydF4y2Ba%的再现性gydF4y2BaMdl = TreeBagger(20, TrainingData,gydF4y2Ba“条件”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“OOBPrediction”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“OOBPredictorImportance”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba)gydF4y2Ba
Mdl = TreeBagger Ensemble with 20 bagged decision tree: Training X: [210x3] Training Y: [210x1] Method: classification NumPredictors: 3 NumPredictorsToSample: 2 MinLeafSize: 1 InBagFraction: 1 SampleWithReplacement: 1 ComputeOOBPrediction: 1 ComputeOOBPredictorImportance: 1 Proximity: [] ClassNames: 'AbrasiveWear' 'BrokenBlade' 'Cavitation' 'ClearanceGapWear' 'Healthy' 'ImpellerInletDeposit' 'ImpellerOutletDeposit' Properties, MethodsgydF4y2Ba
TreeBagger模型的性能可以通过研究其对袋外观测的错误分类概率作为决策树数量的函数来计算。gydF4y2Ba
%计算出袋错误gydF4y2Ba图绘制(oobError (Mdl))包含(gydF4y2Ba树木的数量gydF4y2Ba) ylabel (gydF4y2Ba“误分类概率”gydF4y2Ba)gydF4y2Ba
最后,计算模型在从未用于生长决策树的测试样本上的预测性能。gydF4y2Ba
ValidationData = [T0 (31:50:); T1 (31:50:); T2 (31:50:); T3 (31:50:); T4 (31:50:); T5 (31:50:); T6 (31:50:)];ValidationData PredictedClass =预测(Mdl);E = 0 (7);gydF4y2Ba%正常数据错误分类gydF4y2BaE(1) = sum(~strcmp(PredictedClass(1:20), Label{1}));gydF4y2Ba间隙故障错误分类gydF4y2BaE(2) = sum(~strcmp(PredictedClass(21:40), Label{2}));gydF4y2Ba叶轮出口沉积物故障分类错误。gydF4y2BaE(3) = sum(~strcmp(PredictedClass(41:60), Label{3}));gydF4y2Ba叶轮进口沉积物故障分类错误。gydF4y2BaE(4) = sum(~strcmp(PredictedClass(61:80), Label{4}));gydF4y2Ba磨粒磨损故障分类错误gydF4y2BaE(5) = sum(~strcmp(PredictedClass(81:100), Label{5}));gydF4y2Ba%破碎叶片故障分类错误gydF4y2BaE(6) = sum(~strcmp(PredictedClass(101:120), Label{6}));gydF4y2Ba空化故障分类错误gydF4y2BaE(7) = sum(~strcmp(PredictedClass(121:140), Label{7}));图栏(E/20*100) xticklabels(Label) set(gca,gydF4y2Ba“XTickLabelRotation”gydF4y2Ba、45)ylabel (gydF4y2Ba“误分类(%)'gydF4y2Ba)gydF4y2Ba
从图中可以看出,30%的验证样本存在磨粒磨损和叶片断裂故障的错误分类。仔细观察预测的标签可以发现,在分类错误的情况下,“磨擦磨损”和“破碎刀片”的标签只会混在一起。这表明该分类器无法充分区分这些故障类别的症状。gydF4y2Ba
总结gydF4y2Ba
合理的故障诊断策略可以最大限度地减少故障停机时间和部件更换成本,从而节约运营成本。该策略得益于对运行机器动力学的良好了解,它与传感器测量相结合,用于检测和隔离不同类型的故障。gydF4y2Ba
本例讨论了一种基于稳态实验的参数化故障检测与隔离方法。这种方法需要对系统动力学进行仔细建模,并使用参数(或其转换)作为设计故障诊断算法的特征。这些参数用于训练异常检测器,执行似然比检验和训练多类分类器。gydF4y2Ba
如何在泵的实际测试中运用分类技术gydF4y2Ba
下面是故障诊断工作流程的摘要。gydF4y2Ba
以公称速度运行测试泵。将排液阀调到不同的设置来控制流量。对于每个阀门位置,记下泵的速度、流量、压差和扭矩。gydF4y2Ba
估算泵扬程和泵扭矩特性(稳态)方程的参数。gydF4y2Ba
在不确定性/噪声较低且参数估计可靠的情况下,可以将估计的参数直接与标称值进行比较。它们的相对震级将表明断层的性质。gydF4y2Ba
在一般有噪声的情况下,使用异常检测技术首先检查系统中是否存在故障。通过将估计的参数值与从健康泵的历史数据库中获得的平均值和协方差值进行比较,可以非常快速地完成这一工作。gydF4y2Ba
如果指出了故障,则使用故障分类技术(如似然比测试或分类器的输出)来隔离最可能的原因。分类技术的选择将取决于传感器数据的可用性、其可靠性、故障的严重性和有关故障模式的历史信息的可用性。gydF4y2Ba
基于残差分析的故障诊断方法,请参见gydF4y2Ba基于残差分析的离心泵故障诊断gydF4y2Ba的例子。gydF4y2Ba
参考文献gydF4y2Ba
Isermann,罗尔夫,gydF4y2Ba故障诊断的应用。基于模型的状态监测:执行器,驱动器,机械,设备,传感器和容错系统gydF4y2Ba, Edition 1, Springer-Verlag Berlin Heidelberg, 2011。gydF4y2Ba
支持功能gydF4y2Ba
线性拟合泵参数。gydF4y2Ba
函数gydF4y2Bavarargout = linearFit(Form, Data)gydF4y2Ba泵扬程和扭矩参数的线性最小二乘解。gydF4y2Ba%gydF4y2Ba%如果Form==0,接受单独的输入并返回单独的输出。只有一个实验。gydF4y2Ba如果Form==1,接受集合并返回紧凑的参数向量。几个实验(集合)。gydF4y2Ba如果gydF4y2BaForm==0 w = Data{1};Q ={2}数据;H ={3}数据;M =数据{4};n =长度(Q);gydF4y2Ba如果gydF4y2BaIsscalar (w), w = w*ones(n,1);gydF4y2Ba结束gydF4y2BaQ = Q (:);H = H (:);M = M (:);预测= [w。^ 2 w。* Q Q ^ 2);θ₁=预测\ H;hnn =θ₁(1);hnv =θ₁(2);hvv =θ₁(3);θ=预测\ M; k0 = Theta2(2); k1 = -Theta2(3); k2 = Theta2(1); varargout = {hnn, hnv, hvv, k0, k1, k2};其他的gydF4y2BaH = cellfun (@ x (x)。头、数据gydF4y2Ba“大学”gydF4y2Ba, 0);Q = cellfun (@ x (x)。放电、数据gydF4y2Ba“大学”gydF4y2Ba, 0);M = cellfun (@ x (x)。转矩、数据gydF4y2Ba“大学”gydF4y2Ba, 0);W = cellfun (@ x (x)。速度、数据gydF4y2Ba“大学”gydF4y2Ba, 0);N =元素个数(H);θ₁= 0 (N);θ= 0 (N);gydF4y2Ba为gydF4y2Bakexp = 1:N Predictor = [W{kexp}.]^ 2, W {kexp}。*问{kexp}, {kexp}。^ 2);X1 =预测\ H {kexp};hnn = X1 (1);hnv = x1 (2);hvv = x1 (3);X2 =预测\ M {kexp};k0 = X2 (2);k1 = x2 (3);k2 = X2 (1); Theta1(:,kexp) = [hnn; hnv; hvv]; Theta2(:,kexp) = [k0; k1; k2];结束gydF4y2Bavarargout = {Theta1', Theta2'};gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba
会员测试可能性。gydF4y2Ba
函数gydF4y2BapumpModeLikelihoodTest (HealthyTheta LargeTheta SmallTheta)gydF4y2Ba根据PDF值和绘制混淆矩阵生成预测。gydF4y2Bam1 =意味着(HealthyTheta);c1 = x (HealthyTheta);m2 =意味着(LargeTheta);c2 = x (LargeTheta);m3 =意味着(SmallTheta);c3 = x (SmallTheta);N =大小(HealthyTheta, 1);gydF4y2Ba%真实类gydF4y2Ba% 1:正常:组标签为1。gydF4y2BaX1t = 1 (N, 1);gydF4y2Ba% 2:大空白:组标签为2。gydF4y2BaX2t = 2 * 1 (N, 1);gydF4y2Ba% 3:小差距:组标签是3。gydF4y2BaX3t = 3 *的(N - 1);gydF4y2Ba%计算预测类为那些联合PDF具有最大值的类。gydF4y2BaX1 = 0 (N, 3);X2 = 0 (N, 3);X3 = 0 (N, 3);gydF4y2Ba为gydF4y2Bact = 1: NgydF4y2Ba健康参数样本的%隶属概率密度gydF4y2Ba: HealthySample = HealthyTheta (ct);x1 = mvnpdf(HealthySample, m1, c1);x2 = mvnpdf(HealthySample, m2, c2);x3 = mvnpdf(HealthySample, m3, c3);X1(ct,:) = [X1 x2 x3];gydF4y2Ba大间隙泵参数的%隶属概率密度gydF4y2Ba: LargeSample = LargeTheta (ct);x1 = mvnpdf(LargeSample, m1, c1);x2 = mvnpdf(LargeSample, m2, c2);x3 = mvnpdf(LargeSample, m3, c3);X2(ct,:) = [x1 X2 x3];gydF4y2Ba%小间隙泵参数的隶属概率密度gydF4y2Ba: SmallSample = SmallTheta (ct);x1 = mvnpdf(SmallSample, m1, c1);x2 = mvnpdf(SmallSample, m2, c2);x3 = mvnpdf(SmallSample, m3, c3);X3(ct,:) = [x1 x2 X3];gydF4y2Ba结束gydF4y2Ba[~, PredictedGroup] = max ([X1, X2, X3], [], 2);TrueGroup = [X1t;X2t;X3t];C = confusionmat (TrueGroup PredictedGroup);热图(C,gydF4y2Ba...gydF4y2Ba“YLabel”gydF4y2Ba,gydF4y2Ba“实际情况”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“YDisplayLabels”gydF4y2Ba, {gydF4y2Ba“健康”gydF4y2Ba,gydF4y2Ba很大的差距的gydF4y2Ba,gydF4y2Ba“小缺口”gydF4y2Ba},gydF4y2Ba...gydF4y2Ba“包含”gydF4y2Ba,gydF4y2Ba“预测条件”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“XDisplayLabels”gydF4y2Ba, {gydF4y2Ba“健康”gydF4y2Ba,gydF4y2Ba很大的差距的gydF4y2Ba,gydF4y2Ba“小缺口”gydF4y2Ba},gydF4y2Ba...gydF4y2Ba“ColorbarVisible”gydF4y2Ba,gydF4y2Ba“关闭”gydF4y2Ba);gydF4y2Ba结束gydF4y2Ba