该示例说明了如何从滚珠轴承,进行健康监测和执行预后提取振动信号的特征。此示例使用信号处理工具箱™和系统识别工具箱™的功能,并且不需要预测的维护工具箱™。GydF4y2Ba
存储在中的负载振动数据GydF4y2Bapdmbearingconditionmonitoringdata.matGydF4y2Ba
(这是一个从MathWorks支持文件站点下载的大型数据集〜88MB)。金宝app数据存储在单元阵列中,该单元阵列使用滚珠轴承信号模拟器在轴承外圈上具有单点缺陷的单点缺陷。它包含用于在不同健康状况(缺陷深度从3mm上升到3mm的缺陷深度增加)的轴承的多个振动信号。每个段存储以20kHz的采样率收集1秒的信号。在pdmbearingcondition monitoring.GydF4y2Badata.matGydF4y2Ba
, 这GydF4y2Ba缺陷Depthvec.GydF4y2Ba
存储缺陷深度变化如何与时间相比GydF4y2Baexptime.GydF4y2Ba
在几分钟内存储相应的时间。GydF4y2Ba
URL =.GydF4y2Ba'//www.tatmou.com/金宝appsupportfiles/predmaint/condition-onitoring-andostics-using-vibration-signals/pdmbearingconditionMonitoringData.mat'GydF4y2Ba;WebSave(GydF4y2Ba'pdmbearingconditionmonitoringdata.mat'GydF4y2Ba,URL);加载GydF4y2Bapdmbearingconditionmonitoringdata.matGydF4y2Ba%定义要处理的数据点数。GydF4y2Banumsamples =长度(数据);GydF4y2Ba%定义采样频率。GydF4y2Bafs = 20e3;GydF4y2Ba%单位:HzGydF4y2Ba
绘制不同数据段中的缺陷深度更改。GydF4y2Ba
情节(EXPTIME,缺陷Depthvec);Xlabel(GydF4y2Ba'时间(分钟)'GydF4y2Ba);ylabel(GydF4y2Ba'缺陷深度(m)'GydF4y2Ba);GydF4y2Ba
绘制健康和错误的数据。GydF4y2Ba
time = linspace(0,1,fs)';GydF4y2Ba%健康轴承信号GydF4y2Ba子图(2,1,1);绘图(时间,数据{1});Xlabel(GydF4y2Ba'时间''GydF4y2Ba);ylabel(GydF4y2Ba'加速度(m / s ^ 2)'GydF4y2Ba);传奇(GydF4y2Ba'健康轴承信号'GydF4y2Ba);GydF4y2Ba%故障轴承信号GydF4y2Ba子图(2,1,2);图(时间,数据{结束});Xlabel(GydF4y2Ba'时间''GydF4y2Ba);ylabel(GydF4y2Ba'加速度(m / s ^ 2)'GydF4y2Ba);传奇(GydF4y2Ba'轴承信号有缺陷'GydF4y2Ba);GydF4y2Ba
在该部分中,从每个数据段中提取代表特征。这些功能将用于健康监测和预测。轴承诊断和预测的典型特征包括时域特征(均方根,峰值,信号峰值等)或频率域特征(峰值频率,均值等)。GydF4y2Ba
在选择要使用的功能之前,请绘制振动信号谱图。在时域或频域或时频域中的可视化信号可以帮助发现指示劣化或失败的信号模式。GydF4y2Ba
首先计算健康轴承数据的谱图。使用500个数据点的窗口大小和重叠比率为90%(相当于450个数据点)。将FFT的点数设置为512。GydF4y2BaFS.GydF4y2Ba
表示先前定义的采样频率。GydF4y2Ba
[〜,FVEC,TVEC,P0] =频谱图(数据{1},500,450,512,FS);GydF4y2Ba
P0.GydF4y2Ba
是频谱图,GydF4y2BaFvec.GydF4y2Ba
是频率矢量和GydF4y2BaTVEC.GydF4y2Ba
是时间矢量。GydF4y2Ba
绘制健康轴承信号的谱图。GydF4y2Ba
CLF;imagesc(tvec,fvec,p0)xlabel(GydF4y2Ba'时间''GydF4y2Ba);ylabel(GydF4y2Ba'频率(Hz)'GydF4y2Ba);标题(GydF4y2Ba'健康轴承信号谱图'GydF4y2Ba);轴GydF4y2BaXY.GydF4y2Ba
现在绘制振动信号的频谱图,该振动信号具有出现故障的图案。您可以看到信号能量集中在较高频率下。GydF4y2Ba
[〜,fvec,tvec,pfinal] =频谱图(数据{end},500,450,512,fs);ImagesC(TVEC,FVEC,PFINAL)XLABEL(GydF4y2Ba'时间''GydF4y2Ba);ylabel(GydF4y2Ba'频率(Hz)'GydF4y2Ba);标题(GydF4y2Ba'有缺陷的轴承信号谱图'GydF4y2Ba);轴GydF4y2BaXY.GydF4y2Ba
由于来自健康和故障轴承的数据的谱图是不同的,因此可以从谱图中提取代表特征并用于条件监测和预后。在该示例中,从谱图中提取平均峰值频率作为健康指示符。表示频谱图GydF4y2Ba 。每次实例的峰值频率定义为:GydF4y2Ba
平均峰值频率是上面定义的峰值频率的平均值。GydF4y2Ba
计算健康滚珠轴承信号的平均峰值频率。GydF4y2Ba
[〜,i0] = max(p0);GydF4y2Ba%找出峰值频率所在的位置。GydF4y2Ba意思是卑鄙的(fvec(i0))GydF4y2Ba%计算平均峰值频率。GydF4y2Ba
意思是匹票划线= 666.4602GydF4y2Ba
健康轴承振动信号具有约650 Hz的平均峰值频率。现在计算出故障轴承信号的平均峰值频率。平均峰值频率转移到2500 Hz以上。GydF4y2Ba
[〜,ifinal] = max(pfinal);意思是划线划线=平均值(FVEC(IFINT))GydF4y2Ba
意思是划线划线= 2.8068e + 03GydF4y2Ba
在中间阶段检查数据,当缺陷深度不是很大但开始影响振动信号时。GydF4y2Ba
[〜,FVEC,TVEC,PMIDDLE] =频谱图(数据{END / 2},500,450,512,FS);ImagesC(TVEC,FVEC,PMIDDLE)XLabel(GydF4y2Ba'时间''GydF4y2Ba);ylabel(GydF4y2Ba'频率(Hz)'GydF4y2Ba);标题(GydF4y2Ba'轴承信号谱图'GydF4y2Ba);轴GydF4y2BaXY.GydF4y2Ba
高频噪声分量遍布频谱图。这种现象是原始振动的混合效应和小缺陷诱导的振动。要准确计算平均峰值频率,请过滤数据以移除这些高频分量。GydF4y2Ba
将中值滤波器应用于振动信号以去除高频噪声分量,并在高频中保持有用的信息。GydF4y2Ba
DataMiddleFilt = Medfilt1(数据{ex / 2},3);GydF4y2Ba
中位过滤后的绘图频谱图。抑制了高频分量。GydF4y2Ba
[〜,FVEC,TVEC,PMIDDLE] =频谱图(DataMiddlefilt,500,450,512,FS);ImagesC(TVEC,FVEC,PMIDDLE)XLabel(GydF4y2Ba'时间''GydF4y2Ba);ylabel(GydF4y2Ba'频率(Hz)'GydF4y2Ba);标题(GydF4y2Ba'过滤轴承信号谱图'GydF4y2Ba);轴GydF4y2BaXY.GydF4y2Ba
由于平均峰值频率成功地区分了来自故障球轴承的健康球轴承,因此从每个数据段提取平均峰值频率。GydF4y2Ba
%定义进度条。GydF4y2Bah = waitbar(0,GydF4y2Ba'开始提取功能'GydF4y2Ba);GydF4y2Ba%初始化向量以存储提取的平均峰值频率。GydF4y2BaMakePeakfreq =零(NumSamples,1);GydF4y2Ba为了GydF4y2Bak = 1:numsamplesGydF4y2Ba%获得最新的数据。GydF4y2Bacurdata = data {k};GydF4y2Ba%申请中值过滤器。GydF4y2Bacurdatafilt = medfilt1(curdata,3);GydF4y2Ba%计算频谱图。GydF4y2Ba[〜,FVEC,TVEC,P_K] =谱图(Curdatafilt,500,450,512,FS);GydF4y2Ba%计算每次实例的峰值频率。GydF4y2Ba[〜,i] = max(p_k);意思是划线(k)=平均值(fvec(i));GydF4y2Ba%显示进度条表示已处理了多少个样本。GydF4y2Bawaitbar(k / numsamples,h,GydF4y2Ba'提取功能'GydF4y2Ba);GydF4y2Ba结尾GydF4y2Ba关闭(h);GydF4y2Ba
绘制提取的平均峰值频率与时间。GydF4y2Ba
情节(Exptime,Makpeakfreq);Xlabel(GydF4y2Ba'时间(分钟)'GydF4y2Ba);ylabel(GydF4y2Ba'平均峰值频率(Hz)'GydF4y2Ba);网格GydF4y2Ba在GydF4y2Ba;GydF4y2Ba
在本节中,使用预定义的阈值和动态模型执行条件监测和预测。对于条件监控,如果平均峰值频率超过预定阈值,则创建触发的警报。对于预测,确定动态模型,以预测未来几个小时内平均峰值频率的值。如果预测均值峰值频率超过预定阈值,则创建触发触发器的警报。GydF4y2Ba
预测有助于我们更好地为潜在的故障做好准备,甚至在发生故障之前停止机器。将平均峰值频率视为时间序列。我们可以估算平均峰值频率的时间序列模型,并使用模型预测未来的值。使用前200个平均峰值频率值来创建初始时间序列模型,然后一次可以使用10个新值,使用最后100个值来更新时间序列模型。该批次更新时间序列模型的模式捕获瞬时趋势。更新时间序列模型用于计算10步前预测。GydF4y2Ba
tstart = 200;GydF4y2Ba% 开始时间GydF4y2BaTimeseg = 100;GydF4y2Ba构建动态模型的%数据长度GydF4y2Ba预测= 10;GydF4y2Ba%定义预测时间范围GydF4y2BaBatchsize = 10;GydF4y2Ba%定义批量大小以更新动态模型GydF4y2Ba
对于预测和条件监控,您需要设置一个阈值来决定何时停止机器。在此示例中,使用从模拟产生的健康和故障轴承的统计数据来确定阈值。pdm.GydF4y2BaExpansionConditionMonitoringStatistics.matGydF4y2Ba
存储适用于健康轴承的平均峰值频率的概率分布。通过扰乱健康和故障轴承的缺陷深度来计算概率分布。GydF4y2Ba
URL =.GydF4y2Ba'//www.tatmou.com/金宝appsupportfiles/predmaint/condition-onitoring-andostics-using-vibration-signals/pdmbearingcondition monitoringstatistics.mat'GydF4y2Ba;WebSave(GydF4y2Ba'pdmbearingconditionmonitoratistics.mat'GydF4y2Ba,URL);加载GydF4y2Bapdmbearingconditionmonitoringstatistics.matGydF4y2Ba
绘制均衡轴承均衡峰值频率的概率分布。GydF4y2Ba
情节(pfreq,pnormal,GydF4y2Ba'G - 'GydF4y2Ba,pfreq,pfaulty,GydF4y2Ba'r'GydF4y2Ba);Xlabel(GydF4y2Ba'平均峰值频率(Hz)'GydF4y2Ba);ylabel(GydF4y2Ba'概率分布'GydF4y2Ba);传奇(GydF4y2Ba'正常轴承'GydF4y2Ba那GydF4y2Ba'有缺陷的轴承'GydF4y2Ba);GydF4y2Ba
基于该图,将平均峰值频率的阈值设置为2000Hz,以区分来自故障轴承的正常轴承,并最大限度地利用轴承。GydF4y2Ba
阈值= 2000;GydF4y2Ba
计算采样时间并将其单位转换为秒。GydF4y2Ba
samplingtime = 60 *(exptime(2) - exptime(1));GydF4y2Ba%单位:秒GydF4y2BaTSFeature = Iddata(均值划分(1:TSTART),[],采样时间);GydF4y2Ba
绘制初始200平均峰值频率数据。GydF4y2Ba
情节(TSFeature.y)GydF4y2Ba
该曲线表明初始数据是恒定级别和噪声的组合。这是最初的,轴承是健康的,并且预计平均峰值频率不会显着变化GydF4y2Ba
使用前200个数据点识别二阶状态空间模型。以规范形式获取模型并指定采样时间。GydF4y2Ba
Past_sys = ssest(tsfeature,2,GydF4y2Ba'ts'GydF4y2Ba,samplingtime,GydF4y2Ba'形式'GydF4y2Ba那GydF4y2Ba'典范'GydF4y2Ba)GydF4y2Ba
Past_sys =离散时间识别的状态空间模型:x(t + ts)= x(t)+ k e(t)y(t)= c x(t)+ e(t)a = x1 x2 x1 01 x2 0.9605 0.03942 c = x1 x2 y1 1 0 k = y1 x1 -0.003899 x2 0.003656采样时间:600秒参数化:指数规范形式:2.扰动组件:估计自由系数的数量:4使用“idsdata”,“getpvec“,”getcov“参数及其不确定性。状态:使用SSEST上的时域数据“TSFeature”估计。适合估计数据:0.2763%(预测焦点)FPE:640,MSE:602.7GydF4y2Ba
初始估计的动态模型具有较低的合适良好。拟合度量的良好是标准化的根均方误差(NRMSE),计算为GydF4y2Ba
在哪里GydF4y2Ba 是真正的价值,GydF4y2Ba 是预测的价值。GydF4y2Ba
当估计数据是恒定级别和噪声的组合时,GydF4y2Ba ,给出一个接近0的NRMSE要验证模型,请绘制残差的自相关。GydF4y2Ba
渣油(TSFeature,Past_sys)GydF4y2Ba
如所示,残差是不相关的,所生成的模型有效。GydF4y2Ba
使用识别的模型GydF4y2Bavert_sys.GydF4y2Ba
预测平均峰值频率值并计算预测值的标准偏差。GydF4y2Ba
[YF,〜,〜,YFSD] =预测(Past_sys,Tsfeature,预测);GydF4y2Ba
绘制预测值和置信区间。GydF4y2Ba
thistory = exptime(1:tstart);ForecastTimeIdx =(tstart + 1):( tstart +预测);Tforecast = Exptime(预测TimeIdx);GydF4y2Ba%绘制历史数据,预测值和95%的置信区间。GydF4y2Ba图(thistory,meanpeakfreq(1:tstart),GydF4y2Ba'B'GydF4y2Ba那GydF4y2Ba......GydF4y2Batforecast,yf.outputdata,GydF4y2Ba'kx'GydF4y2Ba那GydF4y2Ba......GydF4y2Ba[thistory;TFORECAST],阈值*(1,长度(Thistory)+预测),GydF4y2Ba'r--'GydF4y2Ba那GydF4y2Ba......GydF4y2BaTFORECAST,YF.OUTPUTDATA + 1.96 * YFSD,GydF4y2Ba'G - 'GydF4y2Ba那GydF4y2Ba......GydF4y2BaTFORECAST,YF.OUTPUTDATA-1.96 * YFSD,GydF4y2Ba'G - 'GydF4y2Ba);ylim([400,1.1 *阈值]);ylabel(GydF4y2Ba'平均峰值频率(Hz)'GydF4y2Ba);Xlabel(GydF4y2Ba'时间(分钟)'GydF4y2Ba);传奇({GydF4y2Ba'过去的数据'GydF4y2Ba那GydF4y2Ba'预报'GydF4y2Ba那GydF4y2Ba'失败门槛'GydF4y2Ba那GydF4y2Ba'95%c.i'GydF4y2Ba},GydF4y2Ba......GydF4y2Ba'地点'GydF4y2Ba那GydF4y2Ba'orthoutside'GydF4y2Ba那GydF4y2Ba'方向'GydF4y2Ba那GydF4y2Ba'水平的'GydF4y2Ba);网格GydF4y2Ba在GydF4y2Ba;GydF4y2Ba
该曲线表明,平均峰值频率的预测值远低于阈值。GydF4y2Ba
现在,随着新数据进入,更新模型参数,并重新估计预测值。还创建了一个警报以检查信号或预测值是否超过故障阈值。GydF4y2Ba
为了GydF4y2Batcur = tstart:batchsize:numsamplesGydF4y2Baiddata对象中的%最新功能。GydF4y2BaTSFeature = IDDATA(MANSPEAKFREQ((TCUR-TIMESEG + 1):TCUR),[],采样时间);GydF4y2Ba当新数据出现时,%更新系统参数。使用之前的模型GydF4y2Ba%参数作为初始猜测。GydF4y2Basys = ssest(tsfeature,past_sys);Past_sys = sys;GydF4y2Ba%预测更新状态空间模型的输出。也计算GydF4y2Ba%预测输出的标准偏差。GydF4y2Ba[YF,〜,〜,YFSD] =预测(SYS,TSFeature,预测);GydF4y2Ba%找到与历史数据和预测值相对应的时间。GydF4y2Bathistory = exptime(1:Tcur);ForecastTimeIdx =(Tcur + 1):( Tcur +预测);Tforecast = Exptime(预测TimeIdx);GydF4y2Ba%绘制历史数据,预测平均峰值频率值和95%GydF4y2Ba%置信区间。GydF4y2Ba绘图(Thistory,MakePeakfreq(1:Tcur),GydF4y2Ba'B'GydF4y2Ba那GydF4y2Ba......GydF4y2Batforecast,yf.outputdata,GydF4y2Ba'kx'GydF4y2Ba那GydF4y2Ba......GydF4y2Ba[thistory;TFORECAST],阈值*(1,长度(Thistory)+预测),GydF4y2Ba'r--'GydF4y2Ba那GydF4y2Ba......GydF4y2BaTFORECAST,YF.OUTPUTDATA + 1.96 * YFSD,GydF4y2Ba'G - 'GydF4y2Ba那GydF4y2Ba......GydF4y2BaTFORECAST,YF.OUTPUTDATA-1.96 * YFSD,GydF4y2Ba'G - 'GydF4y2Ba);ylim([400,1.1 *阈值]);ylabel(GydF4y2Ba'平均峰值频率(Hz)'GydF4y2Ba);Xlabel(GydF4y2Ba'时间(分钟)'GydF4y2Ba);传奇({GydF4y2Ba'过去的数据'GydF4y2Ba那GydF4y2Ba'预报'GydF4y2Ba那GydF4y2Ba'失败门槛'GydF4y2Ba那GydF4y2Ba'95%c.i'GydF4y2Ba},GydF4y2Ba......GydF4y2Ba'地点'GydF4y2Ba那GydF4y2Ba'orthoutside'GydF4y2Ba那GydF4y2Ba'方向'GydF4y2Ba那GydF4y2Ba'水平的'GydF4y2Ba);网格GydF4y2Ba在GydF4y2Ba;GydF4y2Ba当实际监控变量或预测值超过时,%显示警报GydF4y2Ba%故障阈值。GydF4y2Ba如果GydF4y2Ba(任何(均值划线(Tcur-Batchsize + 1:Tcur)>阈值))Disp(GydF4y2Ba“受监控变量超过故障阈值”GydF4y2Ba);GydF4y2Ba休息GydF4y2Ba;GydF4y2Baeleesif.GydF4y2Ba(任何(yf.y>阈值))GydF4y2Ba%估计系统将达到故障阈值的时间。GydF4y2BaTalarm = Tforecast(finc(yf.y>阈值,1));DISP([GydF4y2Ba'估计在'中击中失败阈值GydF4y2Banum2str(Talarm-thistory(END))GydF4y2Ba'从现在开始。“GydF4y2Ba]);GydF4y2Ba休息GydF4y2Ba;GydF4y2Ba结尾GydF4y2Ba结尾GydF4y2Ba
估计在从现在到80分钟的80分钟内达到失败阈值。GydF4y2Ba
检查最近的时间序列模型。GydF4y2Ba
SYS.GydF4y2Ba
sys =离散时间识别的状态空间模型:x(t + ts)= x(t)+ k e(t)y(t)= c x(t)+ e(t)a = x1 x2 x1 01 x2 0.2624 0.746 C = X1 X2 Y1 1 0 K = Y1 X1 0.3902 X2 0.3002采样时间:600秒参数化:指数规范形式:2.干扰组件:估计自由系数的数量:4使用“idsdata”,“getpvec”,“getcov”参数及其不确定性。状态:使用SSEST上的时域数据“TSFeature”估计。适合估算数据:92.53%(预测焦点)FPE:499.3,MSE:442.7GydF4y2Ba
拟合的良好增加到90%以上,趋势被正确捕获。GydF4y2Ba
此示例显示如何从测量数据中提取功能以执行条件监控和预后。基于提取的功能,生成动态模型,验证并用于预测失败时间,以便在实际故障发生之前可以采取动作。GydF4y2Ba