利用振动信号状态监测和预测gydF4y2Ba
这个例子展示了如何从滚珠轴承从振动信号中提取特征,进行健康监测,并进行预测。这个示例使用功能从信号处理工具箱™和系统辨识工具箱™,并且不需要预测维修工具箱™。gydF4y2Ba
数据描述gydF4y2Ba
存储在负载振动数据gydF4y2BapdmBearingConditionMonitoringData.matgydF4y2Ba
(这是一个大型数据集~ 88 mb的下载MathWorks支持文件网站)。金宝app数据存储在一个单元阵列,是使用一个球轴承信号模拟器生成与单点缺陷轴承的外环。它包含多个部分的轴承振动信号模拟在不同的健康状况(从上面3嗯缺陷深度增加3毫米)。每个段存储信号的采样率为1秒收集20 kHz。在pdmBearingConditionMonitoringgydF4y2BaData.matgydF4y2Ba
,gydF4y2BadefectDepthVecgydF4y2Ba
商店有缺陷深度和时间而变化gydF4y2BaexpTimegydF4y2Ba
商店中相应的时间分钟。gydF4y2Ba
url =gydF4y2Ba“//www.tatmou.com/金宝appsupportfiles/predmaint/condition-monitoring-and-prognostics-using-vibration-signals/pdmBearingConditionMonitoringData.mat”gydF4y2Ba;websave (gydF4y2Ba“pdmBearingConditionMonitoringData.mat”gydF4y2Baurl);负载gydF4y2BapdmBearingConditionMonitoringData.matgydF4y2Ba%定义处理数据点的数量。gydF4y2BanumSamples =长度(数据);gydF4y2Ba%定义采样频率。gydF4y2Bafs = 20 e3;gydF4y2Ba%单位:赫兹gydF4y2Ba
情节如何缺陷深度不同部分的数据的变化。gydF4y2Ba
情节(expTime defectDepthVec);包含(gydF4y2Ba的时间(分钟)gydF4y2Ba);ylabel (gydF4y2Ba“缺陷深度(m)”gydF4y2Ba);gydF4y2Ba
情节的健康和错误的数据。gydF4y2Ba
时间= linspace (0, 1, fs)”;gydF4y2Ba%健康轴承信号gydF4y2Ba次要情节(2,1,1);情节(时间、数据{1});包含(gydF4y2Ba“时间(s)”gydF4y2Ba);ylabel (gydF4y2Ba“加速度(m / s ^ 2)”gydF4y2Ba);传奇(gydF4y2Ba“健康轴承信号”gydF4y2Ba);gydF4y2Ba%轴承故障信号gydF4y2Ba次要情节(2,1,2);情节(时间、数据{结束});包含(gydF4y2Ba“时间(s)”gydF4y2Ba);ylabel (gydF4y2Ba“加速度(m / s ^ 2)”gydF4y2Ba);传奇(gydF4y2Ba轴承故障信号的gydF4y2Ba);gydF4y2Ba
特征提取gydF4y2Ba
在本节中,代表特性提取每一段的数据。这些特性将被用于健康监测和预测。轴承诊断和预测包括时域特性的典型特征(均方根、峰值信号峰度等)或频域特性(频率、峰值频率,等等)。gydF4y2Ba
在选择使用哪个功能之前,绘制振动信号谱图。可视化在时域或频域和时频域信号可以帮助发现信号的模式表明退化或失败。gydF4y2Ba
首先计算健康轴承的谱图数据。使用一个窗口大小为500数据点和一个重叠的比率为90%(相当于450数据点)。设置点FFT的数量是512。gydF4y2BafsgydF4y2Ba
表示前面定义的采样频率。gydF4y2Ba
[~,fvec tvec P0) =光谱图(500450512年数据{1},fs);gydF4y2Ba
P0gydF4y2Ba
光谱图,gydF4y2BafvecgydF4y2Ba
频率向量和吗gydF4y2BatvecgydF4y2Ba
是时候向量。gydF4y2Ba
健康的轴承信号的谱图。gydF4y2Ba
clf;显示亮度图像(tvec fvec, P0)包含(gydF4y2Ba“时间(s)”gydF4y2Ba);ylabel (gydF4y2Ba的频率(赫兹)gydF4y2Ba);标题(gydF4y2Ba“健康轴承信号谱图”gydF4y2Ba);轴gydF4y2BaxygydF4y2Ba
现在情节的振动信号的谱图有错误的模式发展。你可以看到信号能量集中在更高的频率。gydF4y2Ba
[~,fvec tvec Pfinal] =光谱图(数据{}结束,500450512年,fs);显示亮度图像(tvec fvec Pfinal)包含(gydF4y2Ba“时间(s)”gydF4y2Ba);ylabel (gydF4y2Ba的频率(赫兹)gydF4y2Ba);标题(gydF4y2Ba轴承故障信号谱图的gydF4y2Ba);轴gydF4y2BaxygydF4y2Ba
自谱图数据从健康和有缺陷的轴承是不同的,具有代表性的特征可以从谱图中提取,用于状态监测和预测。在这个例子中,从谱图中提取平均峰值频率作为卫生指标。谱图的表示gydF4y2Ba 。峰值频率在每一次实例被定义为:gydF4y2Ba
平均峰值频率峰值频率上面定义的平均值。gydF4y2Ba
健康滚珠轴承计算的平均峰值频率的信号。gydF4y2Ba
[~,I0] = max (P0);gydF4y2Ba%找出峰值频率。gydF4y2BameanPeakFreq0 =意味着(fvec(钱数))gydF4y2Ba%计算平均峰值频率。gydF4y2Ba
meanPeakFreq0 = 666.4602gydF4y2Ba
健康的轴承振动信号平均峰值频率在650赫兹。现在计算故障轴承的平均峰值频率的信号。平均峰值频率2500赫兹以上变化。gydF4y2Ba
[~,Ifinal] = max (Pfinal);meanPeakFreqFinal =意味着(fvec (Ifinal))gydF4y2Ba
meanPeakFreqFinal = 2.8068 e + 03gydF4y2Ba
检查数据在中间阶段,当缺陷深度不是很大但开始影响振动信号。gydF4y2Ba
[~,fvec tvec Pmiddle] =光谱图(数据{/ 2}结束,500450512年,fs);显示亮度图像(tvec fvec Pmiddle)包含(gydF4y2Ba“时间(s)”gydF4y2Ba);ylabel (gydF4y2Ba的频率(赫兹)gydF4y2Ba);标题(gydF4y2Ba轴承信号谱图的gydF4y2Ba);轴gydF4y2BaxygydF4y2Ba
高频噪声分量分布谱图。这样的现象是混合的影响原始振动和振动引起的小缺陷。准确地计算平均峰值频率,滤波器的数据删除这些高频组件。gydF4y2Ba
应用振动信号的中值滤波去除高频噪声分量以及保持高频率的有用的信息。gydF4y2Ba
dataMiddleFilt = medfilt1(数据{/ 2}结束,3);gydF4y2Ba
中值滤波后的阴谋声谱图。高频分量受到抑制。gydF4y2Ba
[~,fvec tvec Pmiddle] =光谱图(dataMiddleFilt 500450512 fs);显示亮度图像(tvec fvec Pmiddle)包含(gydF4y2Ba“时间(s)”gydF4y2Ba);ylabel (gydF4y2Ba的频率(赫兹)gydF4y2Ba);标题(gydF4y2Ba过滤后的轴承信号谱图的gydF4y2Ba);轴gydF4y2BaxygydF4y2Ba
成功以来平均峰值频率区分健康从错误的球轴承滚珠轴承,从每段数据中提取平均峰值频率。gydF4y2Ba
%定义一个进度条。gydF4y2Bah = waitbar (0,gydF4y2Ba“开始提取特征”gydF4y2Ba);gydF4y2Ba%初始化向量存储提取的平均峰值频率。gydF4y2BameanPeakFreq = 0 (numSamples, 1);gydF4y2Ba为gydF4y2Bak = 1: numSamplesgydF4y2Ba%获得最新的数据。gydF4y2BacurData = {k}数据;gydF4y2Ba%应用中值滤波。gydF4y2BacurDataFilt = medfilt1 (curData 3);gydF4y2Ba%计算光谱图。gydF4y2Ba[~,fvec tvec P_k] =光谱图(curDataFilt 500450512 fs);gydF4y2Ba%计算峰值频率在每一次实例。gydF4y2Ba[~,我]= max (P_k);meanPeakFreq (k) =意味着(fvec(我));gydF4y2Ba%显示进度条指示了多少样品处理。gydF4y2Bawaitbar (k / numSamples h,gydF4y2Ba“特征提取”gydF4y2Ba);gydF4y2Ba结束gydF4y2Ba关闭(h);gydF4y2Ba
提取的平均峰值频率与时间。gydF4y2Ba
情节(expTime meanPeakFreq);包含(gydF4y2Ba的时间(分钟)gydF4y2Ba);ylabel (gydF4y2Ba“意思是峰值频率(赫兹)”gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;gydF4y2Ba
状态监测和预测gydF4y2Ba
在本节中,状态监测和预测执行使用一个预定义的阈值和动态模型。对于状态监测,创建一个警报,这个警报触发如果平均峰值频率超过预定义的阈值。预测,确定一个动态模型预测平均峰值频率的值在接下来的几个小时。创建一个报警触发,如果预测意味着峰值频率超过了预定义的阈值。gydF4y2Ba
预测可以帮助我们更好地准备一个潜在的故障,甚至停止机器故障前。考虑平均峰值频率作为时间序列。我们可以估计平均峰值频率和时间序列模型使用模型来预测未来值。使用前200的意思是峰值频率值创建一个初始时间序列模型,一旦10新值,使用过去的100值更新时间序列模型。这批处理模式的更新时间序列模型捕捉瞬间的趋势。更新后的时间序列预测模型用于计算10先行一步。gydF4y2Ba
tStart = 200;gydF4y2Ba%开始时间gydF4y2BatimeSeg = 100;gydF4y2Ba%的长度数据构建动态模型gydF4y2BaforecastLen = 10;gydF4y2Ba%定义预测时间范围gydF4y2BabatchSize = 10;gydF4y2Ba%为更新动态模型定义批量大小gydF4y2Ba
对于预测和状态监测,您需要设置一个阈值来决定何时停止机器。在这个例子中,使用健康的统计数据和故障轴承产生仿真来确定阈值。pdm的gydF4y2BaBearingConditionMonitoringStatistics.matgydF4y2Ba
商店平均峰值频率的概率分布为健康和有缺陷的轴承。概率分布是由微扰计算的缺陷深度健康和有缺陷的轴承。gydF4y2Ba
url =gydF4y2Ba“//www.tatmou.com/金宝appsupportfiles/predmaint/condition-monitoring-and-prognostics-using-vibration-signals/pdmBearingConditionMonitoringStatistics.mat”gydF4y2Ba;websave (gydF4y2Ba“pdmBearingConditionMonitoringStatistics.mat”gydF4y2Baurl);负载gydF4y2BapdmBearingConditionMonitoringStatistics.matgydF4y2Ba
情节平均峰值频率的概率分布为健康和有缺陷的轴承。gydF4y2Ba
情节(pFreq pNormal,gydF4y2Ba“g——”gydF4y2BapFreq pFaulty,gydF4y2Ba“r”gydF4y2Ba);包含(gydF4y2Ba“意思是峰值频率(赫兹)”gydF4y2Ba);ylabel (gydF4y2Ba的概率分布gydF4y2Ba);传奇(gydF4y2Ba正常轴承的gydF4y2Ba,gydF4y2Ba“有缺陷的轴承”gydF4y2Ba);gydF4y2Ba
基于这一情节,设置阈值的平均峰值频率2000赫兹区分正常轴承和轴承故障以及轴承的使用最大化。gydF4y2Ba
阈值= 2000;gydF4y2Ba
计算采样时间和其单位转换为秒。gydF4y2Ba
samplingTime = 60 * (expTime (2) -expTime (1));gydF4y2Ba%单位:秒gydF4y2BatsFeature = iddata (meanPeakFreq (1: tStart), [], samplingTime);gydF4y2Ba
情节最初的200年平均峰值频率数据。gydF4y2Ba
情节(tsFeature.y)gydF4y2Ba
情节表明初始数据的结合常数和噪音水平。这个预计最初的轴承是健康和平均峰值频率预计不会大幅改变gydF4y2Ba
确定一个二阶状态空间模型使用第一个200数据点。获得模型规范形式和指定采样时间。gydF4y2Ba
past_sys = ss (tsFeature 2gydF4y2Ba“t”gydF4y2BasamplingTime,gydF4y2Ba“形式”gydF4y2Ba,gydF4y2Ba“规范”gydF4y2Ba)gydF4y2Ba
past_sys =离散时间状态空间模型发现:x (t + Ts) = x (t) + K e (t) y (t) = C x (t) + e (t) = (x1, x2) x1 0 1 x2 0.9605 - 0.03942 C = (x1, x2)日元1 0 K = 0.003656日元x1 -0.003899 x2样品时间:600秒参数化:规范形式指数:2。干扰组件:估计很多免费的系数:4使用“idssdata”、“getpvec”、“getcov”参数及其不确定性。对时域数据状态:估计使用党卫军“tsFeature”。适合估算数据:0.2763%(预测聚焦)消防工程:640年,MSE: 602.7gydF4y2Ba
最初的估计动态模型拟合优度低。拟合优度指标的归一化均方根误差(NRMSE)计算gydF4y2Ba
在哪里gydF4y2Ba 是真正的价值,gydF4y2Ba 预测的价值。gydF4y2Ba
当评估数据的结合常数和噪声水平,gydF4y2Ba ,给NRMSE接近0。验证模型,绘制残差的自相关。gydF4y2Ba
渣油(tsFeature past_sys)gydF4y2Ba
看到,残差不相关的和生成的模型是有效的。gydF4y2Ba
使用识别模型gydF4y2Bapast_sysgydF4y2Ba
预测平均峰值频率值和计算预测的标准偏差值。gydF4y2Ba
[yF, ~, ~, yFSD] =预测(past_sys, tsFeature forecastLen);gydF4y2Ba
情节的预测价值和置信区间。gydF4y2Ba
tHistory = expTime (1: tStart);forecastTimeIdx = (tStart + 1): (tStart + forecastLen);tForecast = expTime (forecastTimeIdx);gydF4y2Ba%绘制历史数据,预测价值和95%置信区间。gydF4y2Ba情节(tHistory meanPeakFreq (1: tStart),gydF4y2Ba“b”gydF4y2Ba,gydF4y2Ba…gydF4y2BatForecast yF.OutputData,gydF4y2Ba“kx”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba[tHistory;tForecast],阈值*的(1,长度(tHistory) + forecastLen),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“意思是峰值频率(赫兹)”gydF4y2Ba);包含(gydF4y2Ba的时间(分钟)gydF4y2Ba);传奇({gydF4y2Ba“过去的数据”gydF4y2Ba,gydF4y2Ba“预测”gydF4y2Ba,gydF4y2Ba故障阈值的gydF4y2Ba,gydF4y2Ba“95% C.I”gydF4y2Ba},gydF4y2Ba…gydF4y2Ba“位置”gydF4y2Ba,gydF4y2Ba“northoutside”gydF4y2Ba,gydF4y2Ba“定位”gydF4y2Ba,gydF4y2Ba“水平”gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;gydF4y2Ba
情节表明平均峰值频率的预测价值远低于阈值。gydF4y2Ba
现在作为新数据更新模型参数,并重新评估预测的值。还创建一个报警检查或失败的预测价值超过阈值的信号。gydF4y2Ba
为gydF4y2BatCur = tStart: batchSize: numSamplesgydF4y2Ba%最新功能到iddata对象中。gydF4y2BatsFeature = iddata (meanPeakFreq ((tCur-timeSeg + 1): tCur), [], samplingTime);gydF4y2Ba%的新数据时更新系统参数。用以前的模型gydF4y2Ba%参数作为初始猜测。gydF4y2Basys = ss (tsFeature past_sys);past_sys =系统;gydF4y2Ba%更新状态空间模型的预测输出。也计算gydF4y2Ba%的标准差预测输出。gydF4y2Ba[yF, ~, ~, yFSD] =预测(sys, tsFeature forecastLen);gydF4y2Ba%找到时间相应历史数据和预测价值。gydF4y2BatHistory = expTime (1: tCur);forecastTimeIdx = (tCur + 1): (tCur + forecastLen);tForecast = expTime (forecastTimeIdx);gydF4y2Ba%绘制历史数据,预测平均峰值频率值和95%gydF4y2Ba%置信区间。gydF4y2Ba情节(tHistory meanPeakFreq (1: tCur),gydF4y2Ba“b”gydF4y2Ba,gydF4y2Ba…gydF4y2BatForecast yF.OutputData,gydF4y2Ba“kx”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba[tHistory;tForecast],阈值*的(1,长度(tHistory) + forecastLen),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“意思是峰值频率(赫兹)”gydF4y2Ba);包含(gydF4y2Ba的时间(分钟)gydF4y2Ba);传奇({gydF4y2Ba“过去的数据”gydF4y2Ba,gydF4y2Ba“预测”gydF4y2Ba,gydF4y2Ba故障阈值的gydF4y2Ba,gydF4y2Ba“95% C.I”gydF4y2Ba},gydF4y2Ba…gydF4y2Ba“位置”gydF4y2Ba,gydF4y2Ba“northoutside”gydF4y2Ba,gydF4y2Ba“定位”gydF4y2Ba,gydF4y2Ba“水平”gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;gydF4y2Ba%显示警报当实际监控变量或超过预期值gydF4y2Ba%故障阈值。gydF4y2Ba如果gydF4y2Ba(任何(meanPeakFreq (tCur-batchSize + 1: tCur) >阈值))disp (gydF4y2Ba“监控变量超过失败的阈值”gydF4y2Ba);gydF4y2Ba打破gydF4y2Ba;gydF4y2BaelseifgydF4y2Ba(任何(yF.y >阈值))gydF4y2Ba%估计系统将达到故障阈值的时候。gydF4y2BatAlarm = tForecast(找到(yF.y >阈值,1));disp ([gydF4y2Ba“估计达到故障阈值”gydF4y2Banum2str (tAlarm-tHistory(结束)gydF4y2Ba分钟从现在。gydF4y2Ba]);gydF4y2Ba打破gydF4y2Ba;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba
估计在80分钟达到故障阈值。gydF4y2Ba
检查最近的时间序列模型。gydF4y2Ba
sysgydF4y2Ba
sys =离散时间状态空间模型发现:x (t + Ts) = x (t) + K e (t) y (t) = C x (t) + e (t) = (x1, x2) x1 0 1 x2 0.2624 - 0.746 C = (x1, x2)日元1 0 K = 0.3002日元x1 0.3902 x2样品时间:600秒参数化:规范形式指数:2。干扰组件:估计很多免费的系数:4使用“idssdata”、“getpvec”、“getcov”参数及其不确定性。对时域数据状态:估计使用党卫军“tsFeature”。适合估算数据:92.53%(预测聚焦)消防工程:499.3,MSE: 442.7gydF4y2Ba
拟合优度增加到90%以上,这一趋势是正确地捕获。gydF4y2Ba
结论gydF4y2Ba
这个例子展示了如何从测量数据中提取特征进行状态监测和预测。基于提取的特征,动态生成模型,验证和用于预测故障的时间,这样可以实际故障发生之前采取行动。gydF4y2Ba