主要内容

風力タ,ビン高速ベアリングの経過予測

この例では,風力タービンベアリングの残存耐用期間(原则)をリアルタイムで予測する指数劣化モデルの作成方法を説明します。指数劣化モデルはそのパラメーターの事前確率分布と最新の測定値に基づいて荷重软化を予測します(故障に至るまで実行された履歴データはモデルパラメーターの事前確率分布を推定するのに役立ちますが,必須ではありません)。モデルは,重要な劣化トレンドをリアルタイムで検出でき,新しい観測データが利用可能になると,そのパラメーターの事前確率分布を更新します。この例は,一般的な予測のワ,クフロ,に従っています。これにはデータのインポートと調査,特徴の抽出と後処理,特徴の重要度のランク付けと融合,モデルの適合と予測,および性能の解析が含まれます。

デ,タセット

データセットは20歯のピニオンギアで駆動する2 mw風力タービンの高速シャフトから収集されたものです[1]。1日あたり 6 秒間の振動信号を連続 50 日間取得しています (3 月 17 日には 2 つの測定値があり、この例ではこれを 2 日分として扱います)。50 日の期間中に内輪の不具合が発生しベアリングの故障の原因となっています。

。コンパクトなデータセットを使用するには,データセットを現在のフォルダーにコピーしてその書き込み権限を有効にします。

拷贝文件(...fullfile (matlabroot“工具箱”“predmaint”...“predmaintdemos”“windTurbineHighSpeedBearingPrognosis”),...“WindTurbineHighSpeedBearingPrognosis-Data-master”) fileattrib (fullfile (“WindTurbineHighSpeedBearingPrognosis-Data-master”‘* .mat‘),' + w '

コンパクトなデタセットの測定タムステップは5日です。

timeUnit =“\ 5天”

完全なデ,タセットを使う場合は,https://github.com/mathworks/WindTurbineHighSpeedBearingPrognosis-Dataのリンクからリポジトリ全体をzipファイルとしてダウンロードし,このライブスクリプトと同じディレクトリに保存します。次のコマンドを使用してファ@ @ルを解凍します。完全なデタセットの測定タムステップは1日です。

如果存在(“WindTurbineHighSpeedBearingPrognosis-Data-master.zip”“文件”)解压缩(“WindTurbineHighSpeedBearingPrognosis-Data-master.zip”) timeUnit =“天”结束

この例の結果は完全なデ,タセットから生成されています。この例を実行するには完全なデ,タセットをダウンロ,ドすることを強く推奨します。コンパクトなデ,タセットでは有意義な結果を得られない可能性があります。

デタのンポト

風力タ,ビンデ,タのfileEnsembleDatastoreを作成します。デ,タには振動信号とタコメ,タ,信号が含まれています。fileEnsembleDatastoreがファ@ @ル名を解析して日付情報をIndependentVariablesとして抽出します。詳細にいては,この例に関連する補助ファルにある補助関数を参照してください。

hsbearing =文件集合数据存储(...fullfile (“。”“WindTurbineHighSpeedBearingPrognosis-Data-master”),...“.mat”);hsbearing。DataVariables = [“振动”“一环”];hsbearing。IndependentVariables =“日期”;hsbearing。SelectedVariables = [“日期”“振动”“一环”];hsbearing。ReadFcn = @helperReadData;hsbearing。WriteToMemberFcn = @helperWriteToHSBearing;高(hsbearing)
ans = M×3高表日期振动性心动过速  ____________________ _________________ _______________ 07 - 3月- 2013 01:57:46(585936×1双)(2446×1双)08 - mar - 2013 02:34:21(585936×1双)(2411×1双)09 - 3月- 2013 02:33:43(585936×1双)(2465×1双)10 - 3月- 2013年03:01:02(585936×1双)(2461×1双)11 - 3月- 2013 03:00:24(585936×1双)(2506×1双)12 - 3月- 2013年06:17:10(585936×1双)(2447×1双)13 - 3月- 2013 06:34:04(585936×1双)(2438×1双)14 - 3月- 201306:50:41 [585936×1 double] [2390×1 double]::::::

振動信号のサンプルレ,トは97656 Hzです。

Fs = 97656;%赫兹

デ,タの調査

この節では,データを時間領域と周波数領域の両方で調査して,予測をするためにどの特徴を抽出するかのヒントを探します。

まず,振動信号を時間領域で可視化します。このデ,タセットには,50日間連続で測定された6秒間の振動信号が50個あります。そこで,50の振動信号を順次プロットします。

Reset (hsbearing) tstart = 0;图保存Hasdata (hsbearing) data = read(hsbearing);V = data.vibration{1};T = tstart +(1:长度(v))/fs;降低信号采样以减少内存使用Plot (t(1:10:end), v(1:10:end)) tstart = t(end);结束持有包含(“时间,每天6秒,共50天”) ylabel (“加速度(g)”

時間領域の振動信号から,信号の。尖度,ピクピク値,クレストファクタなどの信号のインパルス性を定量化するインジケーターは,この風力タービンベアリングデータセットの今後の見通しに役立つ特徴の候補となります[2]。

一方でスペクトル尖度は,周波数領域で風力タービンの今後の見通しを立てる強力なツールと見なされます[3]。スペクトル尖度の変化を時間に沿って可視化するには,スペクトル尖度の値を周波数と測定日の関数としてプロットします。

hsbearing。DataVariables = [“振动”“一环”“SpectralKurtosis”];颜色= parula(50);图保存复位(hsbearing)天= 1;Hasdata (hsbearing) data = read(hsbearing);Data2add = table;获得振动信号及测量数据V = data.vibration{1};计算窗口大小为128的谱峰度Wc = 128;[SK, F] = pkurtosis(v, fs, wc);data2add。spectral峭度={表(F, SK)};绘制谱峰度plot3(F, day*ones(size(F)), SK,“颜色”,颜色(天,:))写入谱峰度值writeToLastMemberRead (hsbearing data2add);增加天数天=天+ 1;结束持有包含(的频率(赫兹)) ylabel (的时间(天)) zlabel (“谱峰态”网格)查看(- 45,30)cbar = colorbar;ylabel (cbar“故障级别(0 -正常,1 -故障)”

カラ,バ,に示される故障重大度では,測定の日付が0 ~ 1のスケ,ルに正規化されています。マシンの状態が劣化するにつれ,スペクトル尖度の値は10 kHz付近で徐々に増加することが観察されます。平均や標準偏差などのスペクトル尖度の統計的特徴は,ベアリング劣化のンジケタの候補となります[3].;

特徴抽出

前節での解析に基づいて,時間領域の信号およびスペクトル尖度から求めた統計的特徴のコレクションを抽出します。特徴に関する数学的な詳細にいては,[2-3]を参照してください。

まず,特徴の名前を,fileEnsembleDatastoreに書き込む前にDataVariablesにあらかじめ割り当てます。

hsbearing。DataVariables = [hsbearing.DataVariables;...“的意思是”“性病”“偏斜”“峰度”“Peak2Peak”...“RMS”“CrestFactor”“ShapeFactor”“ImpulseFactor”“MarginFactor”“能量”...“SKMean”“SKStd”“SKSkewness”“SKKurtosis”];

各アンサンブルメンバにいて特徴の値を計算します。

hsbearing。SelectedVariables = [“振动”“SpectralKurtosis”];重置(hsbearing)Hasdata (hsbearing) data = read(hsbearing);V = data.vibration{1};SK = data.SpectralKurtosis{1}.SK;Features = table;%时域特性特性。均值=均值(v);特性。Std = Std (v);特性。偏度=偏度(v);特性。峰度=峰度(v);特性。peak = Peak2Peak (v); features.RMS = rms(v); features.CrestFactor = max(v)/features.RMS; features.ShapeFactor = features.RMS/mean(abs(v)); features.ImpulseFactor = max(v)/mean(abs(v)); features.MarginFactor = max(v)/mean(abs(v))^2; features.Energy = sum(v.^2);谱峰度相关特征特性。SKMean =平均值(SK);特性。SKStd = std(SK);特性。SKSkewness =偏度(SK);特性。峰度=峰度(SK);%将派生的特性写入相应的文件writeToLastMemberRead (hsbearing、特点);结束

独立変数日期と,すべての抽出された特徴を選択して,特徴テ,ブルを作成します。

hsbearing。SelectedVariables = [“日期”“的意思是”“性病”“偏斜”“峰度”“Peak2Peak”...“RMS”“CrestFactor”“ShapeFactor”“ImpulseFactor”“MarginFactor”“能量”...“SKMean”“SKStd”“SKSkewness”“SKKurtosis”];

特徴テーブルは小さく(50行15列)メモリに十分収まるので,処理の前にテーブルを集めます。ビッグデータの場合は,出力がメモリに十分収まることが確実になるまで,高大的形式で操作を実行することをお勧めします。

featureTable =收集(高(hsbearing));
使用并行池“本地”评估tall表达式:-通过1 / 1:在1秒内完成评估

表を时间表に変換して,時間情報が常に特徴の値に関連付けられるようにします。

featureTable = table2schedule (featureTable)
featureTable =50×15时间表日期的意思是性病偏态峰度Peak2Peak RMS CrestFactor ShapeFactor ImpulseFactor MarginFactor能源SKMean SKStd SKSkewness SKKurtosis  ____________________ _______ ______ ___________ ________ _________ ______ ___________ ___________ _____________ ____________ __________ __________ ________ __________ __________ 07 - 3月- 2013 01:57:46 0.34605 2.2705 0.0038699 2.9956 21.621 2.2967 4.9147 1.2535 6.1607 3.3625 3.0907 0.001253 e + 06 - mar - 2013 02:34:21 08年0.025674 -0.22882 3.362 0.24409 2.06210.0030103 3.0195 19.31 2.0765 4.9129 1.2531 2.5266e+06 0.0046823 0.020888 0.057651 3.3508 09-Mar-2013 02:33:43 0.21873 2.1036 -0.0010289 3.0224 21.474 2.1149 5.2143 1.2539 6.5384 3.50004 4.9953 10-Mar-2013 03:01:02 0.21372 2.0081 0.001477 3.0415 19.52 2.0194 5.286 1.2556 6.637 4.1266 2.3894e+06 0.0087035 0.034456 1.4705 8.1235 11-Mar-2013 03:00:24 0.21518 2.0606 0.0010116 3.0445 21.217 2.0718 5.0058 1.2554 6.2841 3.8078 2.515e+06 0.0135590.032193 0.11355 3.848 12-Mar-2013 06:17:10 2.0791 -0.008428 3.018 20.05 2.0997 4.7966 1.2537 3.5907 3.5833 e+06 0.0017539 0.028326 -0.1288 3.8072 - mar -2013 06:34:04 0.21293 1.972 -0.0014294 3.0174 18.837 1.9834 4.8496 1.2539 3.8441 2.3051e+06 0.0039353 0.029292 -1.4734 8.1242 14-Mar-2013 06:50:41 0.24401 1.8114 0.0022161 3.0057 17.862 1.8278 4.8638 1.9575 4.1821 1.9575e+06 0.0013107 0.022468 0.27438 2.8597 15-Mar-2013 06:50:03 0.20984 1.9973 0.001559 3.0711 21.122.0083 5.4323 1.2568 6.8272 4.2724 2.3633e+06 0.0023769 0.047767 -2.5832 20.171 16-Mar-2013 06:56:43 0.2342 -0.0019594 3.0072 18.832 1.9979 5.0483 0.030418 0.52322 4.0082 17-Mar-2013 06:56:04 0.21657 2.113 - 0.0013727 0.030418 0.52322 4.0082 17-Mar-2013 06:56:04 0.21657 2.1247 21.858 2.1241 5.4857 1.2587 6.9048 4.0916 2.6437e+06 0.0084907 -0.012744 3.0934 21.589 2.1423 4.7574 1.2575 5.9825 2.6891e+06 0.019624 0.055537 3.1986 17.79618-Mar-2013 18:47:15 0.21919 2.1284 -0.0002039 3.1647 24.051 2.1396 5.7883 1.2595 4.2914 2.6824e+06 0.016315 0.064516 2.8735 11.632 20-Mar-2013 00:33:54 0.35865 2.2536 -0.002308 3.0817 22.633 2.2819 5.2771 1.2571 6.6339 3.0511e+06 0.0011097 0.051539 -0.056774 7.0712 21-Mar-2013 00:33:14 0.1908 2.1782 -0.00019286 3.1548 25.515 2.1865 6.0521 1.26 7.6258 4.3945 2.8013e+06 0.0040392 0.066254 -0.39587 12.111 22-Mar-2013 00:39:50 0.20569 2.1861 0.0020375 3.2691 26.439 2.1958 6.17531.2633 7.8011 4.4882 2.825e+06 0.020676 0.077728 2.6038 11.088

特徴の後処理

抽出した特徴には,通常はノ。逆のトレンドをもノズは,rulの予測に悪影響を与えることがあります。また,次に導入される,特徴の性能メトリクスの1つである単調性は,ノイズに対しロバストでありません。したがって,5ステップの遅延ウィンドウをも因果移動平均フィルタを,抽出した特徴に適用します。ここで“因果”とは,移動平均フィルタ,処理に将来の値を使用しないという意味です。

variableNames = featutable . properties . variableNames;featureTable = varfun(@(x) movmean(x, [5 0]), featureTable);featutablessmooth . properties . variableNames = variableNames;

以下は平滑化の前と後の特徴を示す例です。

图保存情节(featureTable。日期,featureTable.SKMean) plot(featureTableSmooth.Date, featureTableSmooth.SKMean) hold包含(“时间”) ylabel (“特征值”)传说(在平滑的平滑后的)标题(“SKMean”

移動平均の平滑化によって信号に時間遅延が生じますが,荷重软化の予測で適切なしきい値を選択することによって遅延の効果を緩和できます。

学習デ,タ

実際には,今後の見通しのアルゴリズムを開発している最中にライフサイクル全体のデータを利用することはできません。しかし,ラ@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @したがって,最初の20日間(ライフサイクルの40%)に収集されたデータを学習データとして扱います。次に示す特徴重要度のランク付けと融合は,学習デ,タのみに基づいています。

Breaktime = datetime(2013, 3,27);breakpoint = find(featutable平滑。日期<休息时间,1,“最后一次”);trainData = featuttable平滑(1:断点,:);

特徴の重要度のランク付け

この例では,[3]に提案されている単調性を使用して,今後の見通しに用いる特徴の有用性を定量化します。

番目の特徴 x の単調性は次のように計算します。

单调性 x 1 j 1 | 数量 积极的 diff x j - 数量 diff x j | n - 1

n は測定点の数で,ここでは n 50 です。 は監視されるマシンの数で,ここでは 1 です。 x j j 番目のマシンで測定された 番目の特徴です。 diff x j x j t - x j t - 1 であり,これはすなわ信号 x j の差分です。

由于移动窗口平滑已经完成,设置'WindowSize'为0到关闭函数内的平滑featureImportance =单调性(trainData,“WindowSize”, 0);helperSortedBarPlot (featureImportance的单调性);

信号の尖度が,単調性に基づいた最上位の特徴です。

特徴の重要度スコアが0.3より大きい特徴は,次節での特徴融合の対象として選択されます。

trainDataSelected = trainData(:, featureImportance{:,:}>0.3);featureSelected = featuttable平滑(:,featureImportance{:,:}>0.3)
featureSelected =50×5时间表Date Mean Kurtosis ShapeFactor MarginFactor SKStd ____________________ _______________ ___________ ____________________ 07-Mar-2013 01:57:46 0.34605 2.9956 1.3625 3.3625 0.025674 08-Mar-2013 02:34:21 0.29507 3.0075 1.254 3.5428 0.023281 09-Mar-2013 02:33:43 0.26962 3.0125 1.254 3.6541 0.023089 10-Mar-2013 03:01:02 0.25565 3.0197 1.2544 3.7722 0.025931 11-Mar-2013 03:00:24 0.24756 3.0247 1.2546 3.7793 0.027183 12-Mar-2013 06:17:10 0.25519 3.0236 1.2544 3.7479 0.027374 13-Mar-2013 06:34:04 0.2333.0272 1.2545 3.8282 0.027977 14-Mar-2013 06:50:41 0.23299 3.0249 1.2544 3.9047 0.02824 15-Mar-2013 06:50:03 0.2315 3.033 1.2548 3.9706 0.032417 16-Mar-2013 06:56:43 0.23475 3.0273 1.2546 3.9451 0.031744 17-Mar-2013 06:56:04 0.23498 3.0407 1.2551 3.9924 0.032691 17-Mar-2013 18:47:56 0.21839 3.0533 1.2557 3.9792 0.037226 18-Mar-2013 18:47:15 0.21943 3.0778 1.2567 4.0538 0.043097 20-Mar-2013 00:33:54 0.23854 3.0905 1.2573 3.9658 0.047942 21-Mar-2013 00:33:14 0.23537 3.1044 1.2578 3.9862 0.051023 22-Mar-2013 00:39:50 0.23079 3.1481 1.2593 4.072 0.058908 ⋮

次元削減と特徴の融合

この例では,次元削減と特徴の融合に主成分分析(pca)を使用します。Pcaを実行する前に,特徴を同じスケ,ルに正規化することをお勧めします。PCAの係数と,正規化に使用される平均および標準偏差は学習データから取得され,データセット全体に適用されます。

mean(trainDataSelected{:,:});sdTrain = std(trainDataSelected{:,:});trainDataNormalized = (trainDataSelected{:,:} - meanTrain)./sdTrain;coef = pca(trainDataNormalized);

平均,標準偏差,およびpca係数は,デ,タセット全体を処理するために使用されます。

PCA1 = (featureSelected{:,:} - meanTrain) ./ sdTrain * coef(:, 1);PCA2 = (featureSelected{:,:} - meanTrain) ./ sdTrain * coef(:, 2);

デタを最初の2の主成分の空間で可視化します。

figure numData = size(featureTable, 1);scatter(PCA1, PCA2, [], 1:numData,“填充”)包含(“PCA 1”) ylabel (《PCA 2》) cbar = colorbar;ylabel (cbar [“时间”timeUnit“)”])

プロットは,マシンが故障に近づくにれて第1主成分が増加することを示しています。したがって,第1主成分は融合された健康ンジケタの有望な候補となります。

healthIndicator = PCA1;

健康ンジケタを可視化します。

图绘制(featureSelected。日期、healthIndicator“o”)包含(“时间”)标题(“健康指示器”

指数劣化モデルの適合による残存耐用期間(rul)の推定

指数劣化モデルは次のように定義されます。

h t ϕ + θ 经验值 β t + ϵ - σ 2 2

ここで, h t は時間の関数として表した健康ンジケタです。 ϕ は,定数と見なされる切片項です。 θ β はモデルの勾配を決定する乱数パラメ,タ,で, θ は対数正規分布, β はガウス分布です。各タ@ @ムステップ t で, θ および β の分布は h t の最新の観測値に基づいて事後に更新されます。 ϵ はガウスホワ超市超市トノ超市超市ズで, N 0 σ 2 に従います。指数関数の - σ 2 2 項は, h t の期待値が次を満たすようにするものです。

E h t | θ β ϕ + θ 经验值 β t

ここで指数劣化モデルを前節で抽出した健康ンジケタに当てはめ,次の節で性能を評価します。

まず,健康ンジケタをシフトさせて0から開始するようにします。

healthIndicator = healthIndicator - healthIndicator(1);

しきい値の選択は,通常はマシンの過去の記録または何らかのドメ。このデータセットでは履歴データが利用できないので,健康インジケーターの最後の値をしきい値として選択します。平滑化の遅延効果が一部緩和されるよう,平滑化された(履歴)データに基づいたしきい値を選択することをお勧めします。

threshold = healthIndicator(end);

履歴デ,タを利用できる場合は,exponentialDegradationModelが提供する适合メソッドを使用して事前確率分布と切片を推定します。しかし,この風力タ,ビンベアリングのデ,タセットでは履歴デ,タが利用できません。勾配パラメ、タ、の事前確率分布は大きな分散で任意に選択されるので( E θ 1 Var θ 10 6 E β 1 Var β 10 6 ),モデルは主に観測されたデ,タに依存しています。 E h 0 ϕ + E θ に基づき,切片 ϕ - 1 に設定して,モデルも0から開始されるようにします。

健康ンジケタの変化とノズの変化間の関係は,次のように求めることができます。

Δ h t h t - ϕ Δ ϵ t

ここで,しきい値の付近では,ノイズの標準偏差が健康インジケーターの変化の10%の原因となると仮定します。したがって,ノ 10 阈值 阈值 - ϕ と表すことができます。

指数劣化モデルは勾配の重要性を評価する機能も提供します。健康インジケーターの重要な勾配が検出されると,モデルは前の観測値を破棄し,元の事前確率分布に基づいて推定を再び開始します。検出アルゴリズムの感度は,SlopeDetectionLevelを指定することで調整できます。P値がSlopeDetectionLevel未満の場合,勾配が検出されたとして宣言されます。ここでSlopeDetectionLevelは0.05に設定されます。

次に,上で述べたパラメ,タ,を使って指数劣化モデルを作成します。

mdl =指数退化模型(...“θ”, 1...“ThetaVariance”1 e6,...“β”, 1...“BetaVariance”1 e6,...“φ”, 1...“NoiseVariance”, (0.1*threshold/(threshold + 1))^2,...“SlopeDetectionLevel”, 0.05);

predictRULメソッドと更新メソッドを使用してrulを予測し,パラメタ分布をリアルタムで更新します。

在每次迭代中保持记录totalDay = length(healthIndicator) - 1;estRULs = 0 (totalDay, 1);trueRULs = 0 (totalDay, 1);CIRULs = 0 (totalDay, 2);pdfRULs = cell(totalDay, 1);为绘图更新创建图形和轴图ax1 = subplot(2,1,1);Ax2 = subplot(2,1,2);currentDay = 1:totalDay更新模型参数后验分布update(mdl, [currentDay healthIndicator(currentDay)])预测剩余使用寿命[estRUL, CIRUL, pdfRUL] = predictRUL(mdl,...[currentDay healthIndicator (currentDay)),...阈值);trueRUL = totalDay - currentDay + 1;%正在更新RUL分布图helperplotrend (ax1, currentDay, healthIndicator, mdl, threshold, timeUnit);helpplotrul (ax2, trueRUL, estRUL, CIRUL, pdfRUL, timeUnit)%保留预测结果estRULs(currentDay) = estrull;trueRUL (currentDay) = trueRUL;CIRULs(currentDay,:) = CIRUL;pdfRUL {currentDay} = pdfRUL;暂停0.1秒使动画可见暂停(0.1)结束

以下はリアルタ@ @以下はリアルタ@ @ムの@ @推定のアニメ@ @ションです。

性能解析

α - λ プロットが今後の見通しの性能解析に使用されます[5]。ここで, α の範囲は20%に設定されます。推定されるrulが真のrulの α の範囲内にある確率は,モデルの性能メトリクスとして次のように計算されます。

公关 r t - α r t < r t < r t + α r t | Θ t

ここで, r t は時間 t での推定されたrul, r t は時間 t での真のrul, Θ t は時間 t での推定されたモデルパラメ,タ,です。

Alpha = 0.2;detectTime = mdl.SlopeDetectionInstant;prob = helperAlphaLambdaPlot(alpha, trueRULs, estRULs, CIRULs,...pdfRULs, detectTime, breakpoint, timeUnit);标题(“α- \ \λ阴谋”

事前設定された事前確率分布は真の事前確率分布を反映しないため,モデルは通常,適切なパラメーター分布に調整されるまで数タイムステップを要します。利用できるデ,タ点が増えるほど予測は正確になります。

予測されたrulが α の範囲内にある確率を可視化します。

图t = 1:totalDay;持有Plot (t, probb) Plot([断点断点],[0 1],“k -”。)举行包含([“时间”timeUnit“)”]) ylabel (“概率”)传说(“alpha范围内预测RUL的概率”“Train-Test断点”)标题('概率在\alpha范围内,\alpha = 'num2str(α* 100)“%”])

参考文献

[1] Bechhoefer, Eric, Brandon Van Hecke和David He。“改进光谱分析的处理。”预测和健康管理学会年会上,新奥尔良,洛杉矶,10月10日.2013.

[2]阿里,Jaouher Ben,等。“基于无监督机器学习的真实实验条件下风力涡轮机轴承逐步退化的在线自动诊断。”应用声学132(2018): 167 - 181。

[3] Saidi, Lotfi,等。“通过谱峰度指数和SVR预测风力涡轮机高速轴轴承的健康状况。”应用声学120(2017): 1 - 8。

[4] Coble, Jamie Baalis。“合并数据源以预测剩余使用寿命-识别预后参数的自动化方法。”(2010)。

[5] Saxena, Abhinav,等。“预后表现的离线评估指标。”国际预测与健康管理杂志1.1(2010): 4-23。

参考

関連するトピック