基于稳态实验的离心泵故障诊断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 RPM时,制造商提供的健康泵的理想泵头特性如下所示。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(Q0, H0,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
在无故障状态下运行的泵,以2900转/分的速度运行10个排放节流阀位置,收集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);mean(HealthyTheta1,1);mean(HealthyTheta2,1);covTheta1 = cov(HealthyTheta1);covTheta2 = cov(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
时间运行ValvePosition速度头部放电扭矩____________ _____________ ____________ _________ _______ 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:泵扬程参数gydF4y2Ba% TestTheta2:泵扭矩参数gydF4y2Ba[TestTheta1,TestTheta2] = linearFit(1, TestEnsemble);次要情节(121)plot3 (TestTheta1 (: 1), TestTheta1 (:, 2), TestTheta1 (:, 3),gydF4y2Ba“g *”gydF4y2Ba) view([-42.7 10]) subplot(122) plot3(TestTheta2(:,1),TestTheta2(:,2),TestTheta2(:,3),gydF4y2Ba“g *”gydF4y2Ba) view([-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 abnormal __________ ______________ _________ 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 abnormal __________ ______________ _________ 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
nc = size(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
figure helperPlotSVM(SVMOneClass1,TestTheta1(:,[1 3])) title(gydF4y2Ba基于SVM的泵扬程参数异常检测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);figure helperPlotSVM(SVMOneClass2,TestTheta2(:,[1 3])) title(gydF4y2Ba转矩参数的SVM异常检测gydF4y2Ba)包含(gydF4y2Ba“k0”gydF4y2Ba) ylabel (gydF4y2Ba“k2”gydF4y2Ba)gydF4y2Ba
类似的分析可以用于检测其他类型的故障,如叶轮出口的磨损或沉积物,下面将在故障隔离的背景下讨论。gydF4y2Ba
以稳态参数为特征的故障隔离gydF4y2Ba
如果测试系统中有关故障类型的信息是可用的,则可以使用它创建算法,不仅可以检测故障,还可以指示故障类型。gydF4y2Ba
A.用似然比检验判别间隙故障gydF4y2Ba
间隙间隙的变化可分为小于预期间隙(泵扬程特征图中黄线)和大于预期间隙(红线)两种类型。负载泵测试数据集包含间隙故障,其中故障的性质(大或小)是预先知道的。使用这些故障标签可以进行三向分类:gydF4y2Ba
模式一:正常间隙(健康行为)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,LargeGapEnsemble);[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
泵头混淆矩阵gydF4y2Bafigure pumpModeLikelihoodTest(HealthyTheta1, LargeTheta1, SmallTheta1)gydF4y2Ba
混淆图显示了三种模式之间的完美分离,考虑到直方图之间的清晰分离,这并不令人惊讶gydF4y2Ba 参数。gydF4y2Ba
泵扭矩混淆矩阵gydF4y2Ba泵模delikelihoodtest (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(Label(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,训练数据,gydF4y2Ba“条件”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“OOBPrediction”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“OOBPredictorImportance”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba)gydF4y2Ba
Mdl = TreeBagger集合与20个袋装决策树:训练X: [210x3]训练Y: [210x1]方法:分类NumPredictors: 3 NumPredictorsToSample: 2 MinLeafSize: 1 InBagFraction: 1 SampleWithReplacement: 1 ComputeOOBPrediction: 1 ComputeOOBPredictorImportance: 1邻近性:[]类名:'磨料磨损' '破损刀片' '空化' 'ClearanceGapWear' '健康' 'ImpellerInletDeposit' 'ImpellerOutletDeposit'属性,方法gydF4y2Ba
TreeBagger模型的性能可以通过研究其袋外观测的错误分类概率作为决策树数量的函数来计算。gydF4y2Ba
计算出袋外错误gydF4y2Ba图(oobError(Mdl)) xlabel(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:)];PredictedClass = predict(Mdl,ValidationData);E = 0 (1,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(标签)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,第1版,斯普林格出版社柏林海德堡,2011年。gydF4y2Ba
支持功能gydF4y2Ba
线性拟合泵参数。gydF4y2Ba
函数gydF4y2Bavarargout = linearFit(表单,数据)gydF4y2Ba泵扬程和扭矩参数的线性最小二乘解。gydF4y2Ba%gydF4y2Ba如果Form==0,接受不同的输入并返回不同的输出。只做一个实验。gydF4y2Ba如果Form==1,接受集成并返回紧凑的参数向量。几个实验(合奏)。gydF4y2Ba如果gydF4y2Ba表单==0 w =数据{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];Theta1 = Predictor\H;hnn = Theta1(1);hnv = -Theta1(2);hvv = -Theta1(3);Theta2 = Predictor\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);Theta1 = 0 (3,N);Theta2 = 0 (3,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 = mean(HealthyTheta);c1 = cov(HealthyTheta);m2 = mean(LargeTheta);c2 = cov(LargeTheta);m3 = mean(SmallTheta);c3 = cov(SmallTheta);N = size(HealthyTheta,1);gydF4y2Ba%真实类gydF4y2Ba% 1:正常运行:组标签为1。gydF4y2BaX1t = ones(N,1);gydF4y2Ba% 2:差距大:组标签为2。gydF4y2BaX2t = 2*ones(N,1);gydF4y2Ba% 3:差距小:组标签为3。gydF4y2BaX3t = 3*ones(N,1);gydF4y2Ba计算预测的类是那些联合PDF具有最大值的类。gydF4y2BaX1 = 0 (N,3);X2 = 0 (N,3);X3 = 0 (N,3);gydF4y2Ba为gydF4y2Bact = 1:NgydF4y2Ba%健康参数样本的隶属度概率密度gydF4y2BaHealthySample = HealthyTheta(ct,:);x1 = mvnpdf(HealthySample, m1, c1);x2 = mvnpdf(HealthySample, m2, c2);x3 = mvnpdf(HealthySample, m3, c3);X1(ct,:) = [X1 x2 x3];gydF4y2Ba大间隙泵参数的隶属度概率密度gydF4y2BaLargeSample = LargeTheta(ct,:);x1 = mvnpdf(LargeSample, m1, c1);x2 = mvnpdf(LargeSample, m2, c2);x3 = mvnpdf(LargeSample, m3, c3);X2(ct,:) = [x1 X2 x3];gydF4y2Ba小间隙泵参数的隶属度概率密度gydF4y2BaSmallSample = 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 = confusimat (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