1 數據集解讀
1.1 振動信號數據通常以時域顯示
在軸承故障數據集振動信號的時域表示中,通常將時間作為橫軸,振動信號的幅值作為縱軸。具體來說:
- 橫軸(X軸)代表時間: 時間是指振動信號采集的時刻或時間序列中的時間點。它表示了信號采集的順序和時間間隔。橫軸上的單位通常是秒(s)或毫秒(ms),取決于信號采集的頻率和持續時間。
- 縱軸(Y軸)代表振動信號的幅值: 振動信號的幅值表示了在特定時間點或時間段內的振動強度或振幅。它反映了振動信號的能量或振幅大小。在軸承故障數據集中,縱軸(Y軸)代表的是軸承的振動信號的幅值,以加速度(Acceleration)作為單位。縱軸上的數值表示軸承在特定時間點或時間段內的振動加速度值。
振動加速度是指物體在振動過程中的加速度變化,它是描述振動強度和振動頻率的重要指標之一。在軸承故障數據集中,通過對軸承進行傳感器測量,可以獲取到軸承在運行過程中產生的振動信號,其幅值通過加速度來表示。
通過時域顯示,我們可以觀察到振動信號隨時間的變化情況,包括振動的周期性、幅值的變化、脈沖或波形的形狀等。這有助于分析信號中的特征、頻率成分、周期性或隨機性等,并對振動信號的特征進行故障診斷、頻譜分析、波形分析等進一步處理和解釋。
1.2 凱斯西儲大學軸承數據集 描述的是什么數據?
該數據集是一個常用的軸承故障數據集,用于故障診斷和預測的研究。該數據集包含了來自不同故障模式和工作條件下的軸承振動數據。
數據集描述的是在旋轉機械系統中使用的軸承的振動信號數據。軸承是旋轉機械中的重要組件,常常承受著高速和高負荷的工作環境,因此容易發生故障。自身內部的缺陷有很多種像在加工生產時產生的或者在組裝過程中導致的形變,外部環境所導致的故障也有很多種例如變形、磨損、裂變等。通過監測軸承的振動信號,可以獲得關于軸承運行狀態的信息,進而進行故障診斷和預測。
1.3 實驗平臺介紹
該實驗臺如圖所示,其組成為:
待測軸承:
- 基座數據
- 電機驅動端
- 電機風扇端
1.4 以上三個不同位置的振動數據的區別解讀
通過在電機殼體的 驅動端 、風扇端和基座上放置加速度計,可以獲取到三個不同位置的振動數據。這些數據的區別在于它們所測量的振動信號反映的是不同的物理現象和特征,因而可以提供不同的信息用于故障診斷和監測。
- 驅動端數據: 位于電機殼體的驅動端的加速度計測量的是電機驅動端的振動信號。這個位置上的振動信號主要受到電機轉子的旋轉和傳動系統的激勵影響,因此可以提供關于電機傳動系統和驅動端的故障信息,例如軸承故障、齒輪嚙合故障等。
- 風扇端數據: 位于電機殼體的風扇端的加速度計測量的是電機風扇端的振動信號。這個位置上的振動信號主要受到風扇葉片的旋轉和風扇系統的激勵影響,因此可以提供關于風扇系統的故障信息,例如風扇葉片失衡、風扇軸承故障等。
- 基座數據: 位于電機底座的加速度計測量的是整個電機系統的振動信號。這個位置上的振動信號受到電機整體結構和運行狀態的影響,可以提供關于整個電機系統的故障信息,例如電機不平衡、底座松動等。
因此,通過收集不同位置上的振動數據,可以綜合分析不同位置所提供的故障特征,從而更全面地了解電機系統的健康狀況和故障狀態。這有助于提高故障檢測的準確性和針對性,以便及時采取適當的維護和修復措施。
1.4 官網數據集介紹
- DE - 驅動端加速度計數據
- FE - 風扇端加速度計數據
- BA - 基座加速度計數據
- time - 時間序列數據
- RPM - rpm during testing 轉每分鐘
第一個數據集:正常基線數據
Motor Load (HP) 的中文意思是電機負載(馬力)。它表示施加在電動機上的功率或負載,通常以馬力(HP)為單位進行衡量。它代表電機所執行的工作量或所生成的功率。在0、1、2和3馬力的電機負載工況工作條件下記錄振動加速度信號數據。
Motor Speed (rpm):近似電機轉速(rpm)
在不同負載和轉速下一共有四組正常的數據,數據文件為Matlab格式。用Python讀取第一個數據集結果如下:
data=loadmat('97_0.mat')
data
{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Mon Jan 31 15:28:20 2000',
'__version__': '1.0',
'__globals__': [],
'X097_DE_time': array([[ 0.05319692], [ 0.08866154], [ 0.09971815], ..., [-0.03463015], [ 0.01668923], [ 0.04693846]]),
'X097_FE_time': array([[0.14566727], [0.09779636], [0.05485636], ..., [0.14053091], [0.09553636], [0.09019455]]),
'X097RPM': array([[1796]], dtype=uint16)}
數據為字典格式,包括了創建版本信息、驅動端、風扇端、RPM轉速信息等
**第二個數據集:**12k 驅動端軸承故障數據
采樣頻率為12 kHz,數據收集在12,000次/秒。
故障直徑(Fault Diameter):指軸承或其他機械部件上出現的故障或損傷的直徑尺寸。故障直徑通常用來描述故障的大小和程度,對于故障診斷和預測維護非常重要。單位為英寸,1英寸=25.4mm
- 0.007英寸=7 mils =0.177 8 mm
- 0.014英寸=14 mils =0.355 6 mm
- 0.021英寸=21 mils =0.533 4 mm
- 0.028英寸=28 mils =1.016 mm
Motor Load (HP)電機負載和Motor Speed (rpm)電機轉速同上。
在軸承中,"Inner Race"(內圈)、"Ball"(滾珠)和"Outer Race"(外圈)是三個重要的組成部分,它們一起構成了軸承的基本結構。下面是它們的具體含
- Inner Race(內圈):內圈是軸承的一個環狀部件,通常位于滾珠或滾子之內,與軸相配合。內圈通過與滾動體接觸,在軸上旋轉,承受和傳遞軸向和徑向負荷。
- Ball(滾珠):滾珠是軸承中的滾動體,它們通常是小球狀的物體,可以在內圈和外圈之間滾動。滾珠在軸承中起到支撐和傳遞負荷的作用,減少摩擦和滑動。
- Outer Race(外圈):外圈是軸承的另一個環狀部件,位于滾珠或滾子的外部。外圈與內圈和滾珠配合,提供軸承的外部支撐和固定。
這三個部分共同工作,形成了軸承的基本結構,以支撐和傳遞軸上的負荷,減少摩擦,并使軸承能夠平穩運轉。它們的材料和設計會根據不同的應用和軸承類型而有所差異,以滿足特定的負荷和工作環境要求。
驅動端和風扇端軸承外圈的損傷點分別放置在3點鐘、6點鐘、12點鐘三個不同位置。所以外圈的損傷有三個數據集。
用Python讀取第一個數據集IR007_0結果如下:
data = loadmat('105.mat')
data
{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Mon Jan 31 13:49:59 2000',
'__version__': '1.0',
'__globals__': [],
'X105_DE_time': array([[-0.08300435], [-0.19573433], [ 0.23341928], ..., [-0.31642363], [-0.06367457], [ 0.26736822]]), 'X105_FE_time': array([[-0.40207455], [-0.00472545], [-0.10663091], ..., [ 0.31598909], [ 0.35091636], [ 0.03307818]]),
'X105_BA_time': array([[ 0.06466148], [-0.02309626], [-0.08852226], ..., [ 0.09648926], [ 0.08405591], [-0.02015893]]),
'X105RPM': array([[1797]], dtype=uint16)}
數據為字典格式,包括了創建版本信息、驅動端、風扇端、基座RPM轉速信息等
查看一下驅動端數據條數
data1['X105_DE_time'].shape
(121265, 1)
將近12萬條,也就是采集了近10秒的數據
第三個數據集:48k 驅動端軸承故障數據
驅動端軸承故障還包含采樣頻率為48 kHz 的數據,數據收集在
48,000次/秒。
其分析同上。區別是采樣頻率不同,故障直徑(Fault Diameter)少一種。
第四個數據集:風****扇端軸承故障數據
風扇端采樣頻率為12 kHz 的數據,數據收集在12,000次/秒。
其分析同上。區別是對象和采樣頻率不同,故障直徑(Fault Diameter)也少一種。
上述四種數據集下載后如下
2 數據集分類與制作
2.1 數據集分類解讀
凱斯西儲大學軸承數據集包含了以上四種不同故障模式的振動數據,包括內圈故障、外圈故障、滾動體故障。數據集提供了不同工作條件下的實驗數據,包括不同轉速、載荷和工作時間等參數。每個故障模式都有多個不同工況的樣本,按照不同條件約束,其分類形式有多種。
當然,如果需要處理這些數據,來進行故障診斷和分類任務,并不是需要網站中的所有數據,可以只選擇我們需要的,比如選擇驅動端+0HP的故障數據。
以 12k Drive End Bearing Fault Data 舉例說明:
首先,有四種故障類型 ,只取前三種,因為0.028沒有外圈故障。
其次,比如0.007文件,只取前三類,因為第三種負載 和第四種負載差不多。
最后 ,外圈故障 只取Outer Race _6,即6點鐘的數據集,因為每個文件都有,而且數據差別也不大。
綜上:三種直徑數據和三種故障數據,所以每個工況共有3*3+1(正常數據)=10種數據。所以根據工況的不同可以把數據分為A、B、C三種。每個工況有10種數據。如下:
- 正常0hp 為一類
- 0.007 0hp 內圈 滾珠 外圈
- 0.014 0hp 內圈 滾珠 外圈
- 0.021 0hp 內圈 滾珠 外圈
2.2 數據集處理與制作
第一步,數據讀取:
十類數據集,每類數據集中只獲取DE_time數據,Python讀取數據如下所示:
# 采用驅動端數據
data_columns = ['X097_DE_time', 'X105_DE_time', 'X118_DE_time', 'X130_DE_time', 'X169_DE_time',
'X185_DE_time','X197_DE_time','X209_DE_time','X222_DE_time','X234_DE_time']
columns_name = ['de_normal','de_7_inner','de_7_ball','de_7_outer','de_14_inner','de_14_ball','de_14_outer','de_21_inner','de_21_ball','de_21_outer']
data_12k_1797_10c = pd.DataFrame()
for index in range(10):
# 讀取MAT文件
data = loadmat(f'E:codeingVscodeProjectsDeepLearning故障診斷data_deal_1797{file_names[index]}')
dataList = data[data_columns[index]].reshape(-1)
data_12k_1797[columns_name[index]] = dataList[:119808] # 121048 min: 121265
print(data_12k_1797_10c.shape)
data_12k_1797_10c
把數據生成后放在一張表格里(矩陣形式)10列不同分類故障數據標簽,一共將近12萬行數據,如下圖所示
然后保存為CSV形式,以便后續處理。
data_12k_1797.set_index('de_normal',inplace=True)
data_12k_1797.to_csv('data_12k_1797_10c.csv')
對10分類數據時序圖數據可視化,二維圖像辨識度比較高。
第二步,制作數據集:
數據集的切分方式也多種多樣,切分步長也具有多樣性,下面按照固定的參數設置進行數據的切分:
- 步長 window_step:512 (每個樣本長度為512個點)
- 重疊率 overlap_ratio:0.5(切分相鄰兩個樣本重疊率)
怎么理解重疊率呢?舉例如下:
切分樣本點后,按照7:2:1劃分訓練集、驗證集、測試集,最后保存數據:
3 基于Python的故障診斷和分類的研究思路
3.1 關于軸承故障類型分類的方法探討
第一類是對一維故障數據進行分類
- 一是直接對一維故障數據,添加分類標簽進行處理,送進CNN、LSTM等網絡進行分類;
- 二是先對一維故障數據做一些處理或者去噪,然后再進行分類;
第二類是把一維故障數據轉換為圖像進行分類
- 一是轉換為二維時序圖進行分類;
- 二是轉換為時頻圖像進行分類;
- 三是基于格拉姆角場(GAF)轉換為二維圖像進行分類;
3.2 重點介紹關于軸承故障數據時頻圖像分類的方法
滾動軸承發生故障時,其振動信號往往具有非線性、非平穩性特點。相比傳統的時域和頻域分析方法,在處理非線性、非平穩信號時,時頻分析方法更加有效。
時頻分析方法采用時域和頻域的二維聯合表示,可以實現非平穩信號局部特性的精確描 述,具有時域和頻域等傳統方法無法比擬的優勢,已經被廣泛地應用于機械故障診斷領域。
常用的時頻分析方法有:
- 傅里葉變換(Fourier Transform,FT)
- 短時傅里葉變換(Short Time Fourier Transform,STFT)
- 小波變換(Wavelet Transform,WT)
- 連續小波變換(CWT)
下面以連續小波變換(CWT)作為軸承故障數據的處理方法進行講解:
第一步,Python中連續小波變換(CWT)介紹
導入相關包,pywt 用于小波變換
import numpy as np
import matplotlib.pyplot as plt
import pywt
import pandas as pd
加載軸承數據集 驅動端故障數據
data3 = loadmat(r'21_2.mat')
data_list3 = data3['X222_DE_time'].reshape(-1)
data = data_list3[0:512]
設置連續小波變換參數 設置采樣周期為 1/12000,總尺度為 128,小波基函數選擇 'cmor1-1'
sampling_period =1.0/12000
totalscal = 128
wavename = 'cmor1-1'
計算小波基函數的中心頻率 fc
fc = pywt.central_frequency(wavename)
然后根據 totalscal 計算參數 cparam
cparam = 2 * fc * totalscal
通過除以 np.arange(totalscal, 0, -1) 來生成一系列尺度值,并存儲在 scales 中
scales = cparam / np.arange(totalscal, 0, -1)
生成時頻圖
第二步,生成時頻圖像數據集
如圖所示為生成的圖像數據集
第三步, 定義數據加載器和VGG網絡模型
制作數據標簽,保存數據
定義VGG網絡模型
第三步,設置參數,訓練模型
30個epoch,準確率將近90%,繼續調參可以進一步提高分類準確率
-
電機驅動
+關注
關注
60文章
1215瀏覽量
86724 -
軸承
+關注
關注
4文章
2109瀏覽量
31149 -
python
+關注
關注
56文章
4792瀏覽量
84629 -
傅里葉變換
+關注
關注
6文章
441瀏覽量
42592 -
扭矩傳感器
+關注
關注
3文章
107瀏覽量
14567
發布評論請先 登錄
相關推薦
評論