Amplitude Domain Analysis of Mechanical Fault Diagnosis Signal - Time Domain Statistical Features | Based on python code implementation, actual combat on CWRU and IMF bearing data sets

Welcome to pay attention to my public account "Fault Diagnosis and Python Learning"
Code location: https://github.com/HappyBoy-cmd/fault_diagnosis_signal_processing
Reference materials:
Book: Mechanical Fault Diagnosis and Typical Case Analysis (Second Edition, Shi Xianjiang)
Dissertation: Research on Fault Diagnosis Method of Roller Bearing of Spinning Frame

1. Summary

The amplitude domain analysis of the signal is also called the statistical feature analysis, which mainly uses the amplitude statistical features of the vibration signal for analysis and diagnosis. The most widely used indicators are root mean square value, peak index, waveform index and kurtosis. The amplitude domain analysis of the signal also belongs to the time domain analysis, which is different from time domain analysis methods such as correlation analysis. The amplitude domain analysis does not consider the timing of the original signal, but is only related to the amplitude and distribution of the signal. Amplitude parameters include two categories: dimensioned amplitude parameters and dimensionless amplitude parameters . This article will introduce the dimensioned amplitude domain parameters and dimensionless amplitude domain parameters, and their actual combat on CWRU bearings and IMF (Cincinnati University Bearing Data) full life cycle bearing experimental data.

2. Calculation formula and physical meaning of dimensioned amplitude parameters

The magnitude domain parameter can be calculated in three ways.

Type 1: The amplitude field parameters of the random signal are closely related to the amplitude probability density function. For the stable signal of each state ergodic, the following statistical parameters can be calculated by the amplitude probability density function

Mean: μ x = ∫ − ∞ + ∞ xp ( x ) dx {\mu_{x}=\int_{-\infty}^{+\infty} xp(x) \mathrm{d} x}mx=+xp(x)dx

RMS value: xrms = ∫ − ∞ + ∞ x 2 p ( x ) dx {x_{\mathrm{rms}}=\sqrt{\int_{-\infty}^{+\infty} x^{2} p(x) \mathrm{d} x}}xrms=+x2p(x)dx

方差: σ x 2 = ∫ − ∞ ∞ ( x − x ˉ ) 2 p ( x ) d x = x r m s 2 − x ˉ 2 {\sigma_{x}^{2}=\int_{-\infty}^{\infty}(x-\bar{x})^{2} p(x) \mathrm{d} x=x_{\mathrm{rms}}^{2}-\bar{x}^{2}} px2=(xxˉ)2p(x)dx=xrms2xˉ2

Absolute mean: ∣ x ˉ ∣ = ∫ − ∞ + ∞ ∣ x ∣ p ( x ) dx {|\bar{x}|=\int_{-\infty}^{+\infty}|x| p(x ) \mathrm{d} x}xˉ=+xp(x)dx

Square root magnitude: xr = [ ∫ − ∞ + ∞ ∣ x ∣ p ( x ) dx ] 2 {x_{\mathrm{r}}=\left[\int_{-\infty}^{+\infty} \ sqrt{|x|} p(x) \mathrm{d} x\right]^{2}}xr=[+x p(x)dx]2

歪度: x = ∫ − ∞ + ∞ x 3 p ( x ) d x {x=\int_{-\infty}^{+\infty} x^{3} p(x) \mathrm{d} x} x=+x3p(x)dx

峭度: β = ∫ − ∞ + ∞ x 4 p ( x ) d x {\beta=\int_{-\infty}^{+\infty} x^{4} p(x) \mathrm{d} x} b=+x4p(x)dx

Type 2: The calculation of the above parameters requires the use of the amplitude probability density function, which is not easy to calculate. In fact, for the stationary random signal of various ergodics, a single sample can be directly used for calculation, and the formula is as follows:

均值: μ x = lim ⁡ T → ∞ 1 T ∫ 0 T x ( t ) d t {\mu_{x}=\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T} x(t) \mathrm{d} t} mx=limTT10Tx(t)dt

均方根值: x r m s = lim ⁡ T → ∞ 1 T ∫ 0 T x 2 ( t ) d t {x_{\mathrm{rms}}=\sqrt{\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T} x^{2}(t) \mathrm{d} t}} xrms=limTT10Tx2(t)dt

方差: σ x 2 = lim ⁡ T → ∞ 1 T ∫ 0 T [ x ( t ) − x ˉ ] 2   d t = x r m s 2 − x ˉ 2 {\sigma_{x}^{2}=\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T}[x(t)-\bar{x}]^{2} \mathrm{~d} t=x_{r m s}^{2}-\bar{x}^{2}} px2=limTT10T[x(t)xˉ]2 dt =xrms2xˉ2

Absolute mean: ∣ x ˉ ∣ = lim ⁡ 1 T ∫ 0 T ∣ x ( t ) ∣ dt {|\bar{x}|=\lim \frac{1}{T} \int_{0}^{T }|x(t)| \mathrm{d} t}xˉ=limT10Tx(t)dt

方根幅值: x r = [ lim ⁡ T → ∞ 1 T ∫ 0 T ∣ x ( t ) ∣ d t ] 2 {x_{\mathrm{r}}=\left[\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T} \sqrt{|x(t)|} \mathrm{d} t\right]^{2}} xr=[limTT10Tx(t) dt]2

歪度: x r = [ lim ⁡ T → ∞ 1 T ∫ 0 T ∣ x ( t ) ∣ d t ] 2 {x_{\mathrm{r}}=\left[\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T} \sqrt{|x(t)|} \mathrm{d} t\right]^{2}} xr=[limTT10Tx(t) dt]2

峭度: β = lim ⁡ T → ∞ 1 T ∫ 0 T x 4 ( t ) d t {\beta=\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T} x^{4}(t) \mathrm{d} t} b=limTT10Tx4(t)dt

in:

  • The mean of the signal μ x {\mu_{x}}mxReflect the static part of the signal, and in most cases indicate the equilibrium position of the vibration;

  • The root mean square value reflects the energy of the signal, which is equivalent to the effective value in electricity, and is mostly used to evaluate the vibration level or intensity;

  • The variance σ x 2 {\sigma_{x}^{2}}px2Only reflects the dynamic part of the signal x(t), and reflects the amplitude change degree of the vibration signal centered on the equilibrium position, if the signal x ( t ) x(t)The mean of x ( t ) μ x {\mu_{x}}mxis zero, the mean square value (the square of the root mean square value) is equal to the variance.

  • skewness α {\alpha}α represents the amplitude probability density functionp ( x ) p(x)The asymmetry of p ( x ) with respect to the ordinate,α {\alpha}The larger α , the more asymmetrical (see Figure 3.4 below).

  • Kurtosis β \betaβ represents the character of the normal distribution curve, whenβ \betaWhen β is small, it means that the distribution curve is thin and high, and becomes positive kurtosis; whenβ \betaWhen β is large, the distribution curve has negative kurtosis, and the height of the peak of the normal distribution curve is lower than that of the normal normal distribution curve (see Figure 3.5 below).

insert image description here
insert image description here
Type 3: The above parameters are theoretical statistical true values. The actual engineering signal sampling length is limited, and the following estimated values ​​are generally used. In the future, the difference between the statistical true value and the estimated value will not be prompted. The actual calculation process is an estimated value with a finite length. Sometimes, for the convenience of explaining the problem, the theoretical formula of the statistical true value is often used.

For time series signals x 1 , x 2 , … , x N x_1, x_2, …, x_Nx1x2xN, the calculation formula of the dimensioned magnitude domain parameter estimate is as follows:

---------- Dimensional amplitude parameters (12) ----------

均值: x ˉ = 1 N ∑ i = 1 N x i {\bar{x}=\frac{1}{N} \sum_{i=1}^{N} x_{i}} xˉ=N1i=1Nxi

方差: σ x 2 = 1 N − 1 ∑ i = 1 N ( x i − X ˉ ) 2 {\sigma_{x}^{2}=\frac{1}{N-1} \sum_{i=1}^{N}\left(x_{i}-\bar{X}\right)^{2}} px2=N11i=1N(xiXˉ)2

RMS value (effective value): xrms = 1 N ∑ i = 1 N xi 2 {x_{\mathrm{rms}}=\sqrt{\frac{1}{N} \sum_{i=1}^{ N} x_{i}^{2}}}xrms=N1i=1Nxi2

均方值: x r m s 2 = 1 N ∑ i = 1 N x i 2 {x_{\mathrm{rms} 2}=\frac{1}{N} \sum_{i=1}^{N} x_{i}^{2}} xrms2=N1i=1Nxi2

Mean-to-average magnitude: ∣ x ˉ ∣ = 1 N ∑ i = 1 N ∣ xi ∣ {|\bar{x}|=\frac{1}{N} \sum_{i=1}^{N}\ left|x_{i}\right|}xˉ=N1i=1Nxi

方根幅值: x r = [ 1 N ∑ i = 1 N ∣ x i ∣ ] 2 {x_{\mathrm{r}}=\left[\frac{1}{N} \sum_{i=1}^{N} \sqrt{\left|x_{i}\right|}\right]^{2}} xr=[N1i=1Nxi ]2

最大值: x max ⁡ = max ⁡ { x i } {x_{\max }=\max \left\{x_{i}\right\}} xmax=max{ xi}

Minimum value: x min ⁡ = min ⁡ { xi } {x_{\min }=\min \left\{x_{i}\right\}}xmin=min{ xi}

峰值: x p = max ⁡ { ∣ x max ⁡ ∣ , ∣ x min ⁡ ∣ } {x_{\mathrm{p}}=\max \left\{\left|x_{\max }\right|,\left|x_{\min }\right|\right\}} xp=max{ xmax,xmin}

峰峰值: x p − p = max ⁡ { x i } − min ⁡ { x i } {x_{\mathrm{p}-\mathrm{p}}=\max \left\{x_{i}\right\}-\min \left\{x_{i}\right\}} xpp=max{ xi}min{ xi}

歪(偏)度: α = 1 N ∑ i = 1 N x i 3 {\alpha=\frac{1}{N} \sum_{i=1}^{N} x_{i}^{3}} a=N1i=1Nxi3

峭度: β = 1 N ∑ i = 1 N x i 4 {\beta=\frac{1}{N} \sum_{i=1}^{N} x_{i}^{4}} b=N1i=1Nxi4

3. Calculation formula and physical meaning of dimensionless amplitude domain parameters

The size of the dimensioned amplitude field parameters is related to the absolute amplitude of the signal (vibration), that is, to the working conditions of the vibration. The dimensioned amplitude field parameters under different working conditions are not comparable, so a dimensionless amplitude field is constructed. parameter. For time series signals, the calculation formula of dimensionless amplitude domain parameters is as follows:

Waveform index: S f = xrms ∣ x ˉ ∣ {S_{\mathrm{f}}=\frac{x_{\mathrm{rms}}}{|\bar{x}|}}Sf=xˉxrms

Peak index: C f = x max ⁡ xrms {C_{f}=\frac{x_{\max }}{x_{\mathrm{rms}}}}Cf=xrmsxmax

Impulse index: I f = x max ⁡ ∣ x ˉ ∣ {I_{\mathrm{f}}=\frac{x_{\max }}{|\bar{x}|}}If=xˉxmax

Margin index: CL f = x max ⁡ xr {CL_{\mathrm{f}}=\frac{x_{\max }}{x_{\mathrm{r}}}}CLf=xrxmax

Kurtosis index: K r = β xrms 4 {K_{\mathrm{r}}=\frac{\beta}{x_{\mathrm{rms}}^{4}}}Kr=xrms4b

Skewness metric: P = α X ms 3 {P=\frac{\alpha}{X_{\mathrm{ms}}^{3}}}P=Xms3a

in,

  • Margin index CL f CL_fCLfis a dimensionless skewness index, which represents the amplitude probability density function p ( x ) p(x) of the signalAsymmetry of p ( x ) with respect to the ordinate. ifCL f CL_{f}CLfThe bigger it is, the more asymmetrical it is, and the asymmetry can be divided into positive (right offset) and negative (left offset), as shown in Figure 3.4. Due to the friction or collision in a certain direction of the vibration signal of rotating machinery and other equipment , or the support stiffness in a certain direction is weak, the asymmetry of the vibration waveform will be caused, which will increase the margin index .
  • kurtosis index K r K_rKrMost sensitive to large value, when the probability of large value increases, K r ​​K_rKrThe value increases rapidly , which is particularly effective for detecting faults with pulses in the signal . kurtosis index K r KrThe physical meaning of Kr is shown in Figure 3.5. K r = 3 K_r=3Kr=3 defines that the distribution curve has normal kurtosis (that is, zero kurtosis); whenK r > 3 K_r>3Kr>When 3 , the distribution curve has positive kurtosis. At this time, the height of the peak of the normal distribution curve is higher than that of the normal normal distribution curve, so it is calledpositive kurtosis. WhenK r < 3 K_r<3Kr<When 3 , the distribution curve has negative kurtosis. At this time, the height of the peak of the normal distribution curve is lower than that of the normal normal distribution curve, so it is callednegative kurtosis.
    insert image description here
Figure 3.4 Physical meaning of margin index CLf

insert image description here

Figure 3.5 Physical meaning of kurtosis index Kr

insert image description here

Figure 3.6 Probability density distribution diagram of rolling bearing vibration amplitude

Figure 3.6 is the probability density distribution diagram of vibration amplitude for rolling bearings.

  • When the solid line is normal, the amplitude probability density function is approximately a normal distribution;
  • The dotted line is when exfoliation occurs, at this time the amplitude probability density function presents the form of narrow head and wide bottom, K r ​​K_rKrA larger value indicates that the amplitude of the shock component in the signal increases (the bottom is wider), but the energy is not large (the value is small), that is, the system is at the moment when the spalling fault begins to occur.

In addition, it must be emphasized that the mean x ˉ {\bar{x}} of the signalxˉreflects the static part of the signal, generally does not work for diagnosis, but has a great influence on the calculation of the above parameters. Therefore,in general, the mean value should be removed from the dataand the dynamic part useful for diagnosis should be reserved first. This process is calledzero-mean processing (also called DC component removal), and its calculation method is as follows:

  • Suppose the original time series signal x 1 , x 2 , ⋯ , x N {x_{1}, x_{2}, \cdots, x_{\mathrm{N}}}x1,x2,,xN, the average x ˉ = 1 N ∑ i = 1 N xi {\bar{x}=\frac{1}{N} \sum_{i=1}^{N} x_{i}}xˉ=N1i=1Nxi, then the calculation formula of the new time series after averaging is: xi ′ = xi − x ˉ , i = 1 , 2 , ⋯ , N {x_{i}^{\prime}=x_{i}-\bar{x }, \quad i=1,2, \cdots, N}xi=xixˉ,i=1,2,,N

Table 3.2 is the dimensionless amplitude domain diagnostic parameters of the gear vibration signal. Fatigue spalling faults occurred in the new gear after operation, and there were obvious shock pulses in the vibration signal, and all the parameters in the amplitude domain increased significantly except the waveform parameters.
insert image description here

  • The kurtosis index, margin index and pulse index are more sensitive to impact pulse faults.
  • When a fault occurs in the early stage, there are not many pulses with large amplitude, and the root mean square value does not change much, and the above parameters have increased.
  • When the fault develops gradually, they rise quickly; but after rising to a certain extent, these indicators will gradually decrease due to the increase of the effective value on the denominator.
  • This indicates that these parameters have high sensitivity to early failure, but not very stable.
  • The root mean square value is the opposite, although it is not sensitive to early failure. However, the stability is good, and it increases monotonously with the development of faults.

Figure 3.8 shows the variation process of the kurtosis index and effective value of a rolling bearing vibration signal with the bearing fatigue test time, which can be seen. The changes of the two indicators are in line with the above rules. Therefore, in order to obtain a better fault monitoring effect. Generally, the following measures can be taken :

  • At the same time, kurtosis index and effective value are used for fault monitoring order to take into account both sensitivity and stability.
  • Continuous monitoring can find the change trend of the kurtosis index. When the index value rises to the peak and begins to decline, it is necessary to pay close attention to whether there is a fault.
    insert image description here
Figure 3.8 Variation process of kurtosis index and effective value with bearing fatigue test time

4. Simulation data code actual combat

4.1 Import package

import scipy.io as scio
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal, fftpack, stats
from matplotlib import rcParams

config = {
    
    
    "font.family": 'serif', # 衬线字体
    "font.size": 10, # 相当于小四大小
    "font.serif": ['SimSun'], # 宋体
    "mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New Roman差别不大
    'axes.unicode_minus': False # 处理负号,即-号
}
rcParams.update(config)

4.2 Generating simulated sinusoidal data

fs = 1000
f = 10
n = np.arange(5120)
t = n/fs
x = 3 * np.sin(2 * np.pi * n * f/fs) + np.random.uniform(0,1, len(n)) #正弦信号3*sin(2*pi*10*t)+噪声信号
# x = np.random.uniform(-1,1, len(n))
plt.figure(figsize=(12,2))
plt.plot(t, x)

insert image description here

4.3 Plotting the magnitude probability density function

def interval_num_count(data, low, high):
    '''
    fun: 统计一维数据data落入某一个区间[low, high]内的数量
    param low: 区间下限
    param high: 区间上限
    return count_num: 落入某一个区间[low, high]内的数量
    '''
    count_num = 0
    for i in range(len(data)):
        if data[i]>low and data[i]<high:
            count_num += 1
    return count_num
def plt_amp_prob_density_fun(data, n):
    '''
    fun: 绘制幅值概率密度函数
    param data: 输入数据,1维array
    param n: 分割成段数的数量
    return: 绘制幅值概率密度函数
    '''
    xt = data
    max_value = np.abs( xt[np.argmax( np.abs(xt) )] ) #
    count_num = []
    x = []
    for i in range(n):
        interval = max_value*2/n              # 区间长度为interval_len
        low = -max_value + i*interval         # 区间下限
        high = -max_value + (i+1)*interval    # 区间上限
        count = interval_num_count(data=xt, low=low, high=high)  # 统计落入该区间的幅值个数
        count_num.append(count)
        x.append( (high+low)/2 )
    count_num = count_num/np.sum(count_num)
    plt.bar(np.arange(len(count_num)), height=count_num)  # 绘制柱状图
    plt.show()
plt_amp_prob_density_fun(data=x, n=100)

insert image description here

4.4 Computing time-domain features

def get_time_domain_features(data):
    x = data
    #------有量纲指标------#
    X_mean = np.mean(x)   # 1.平均值
    X_std = np.std(x)     # 2.方差
    x = x - X_mean        # 零均值化(去直流分量)
    X_rms2 = np.sum(x**2)/len(x)  # 3.均方值
    X_rms = np.sqrt(X_rms2)   # 4.均方根值(有效值)
    X_max = np.max(x)     # 5.最大值
    X_min = np.min(x)     # 6.最小值
    X_p = max(abs(X_max), abs(X_min)) # 7.峰值
    X_pp = X_max - X_min  # 8.峰峰值
    X_avg = np.mean(np.abs(x))  # 9.平均绝对幅值
    X_r = np.mean( np.sqrt(np.abs(x)) )**2  # 10.方根幅值
    X_alpha = np.mean( np.power(x, 3) )     # 11.偏度(歪度)
    X_beta = np.mean( np.power(x, 4) )   # 12.峭度

    #-------无量纲指标-------#
    X_wf = X_rms/X_avg  # 13.波形指标
    X_cf = X_pp/X_rms   # 14.峰值指标
    X_if = X_pp/X_avg   # 15.脉冲指标
    X_clf = X_pp / X_r  # 16 裕度指标
    X_pf = X_alpha / X_rms ** 3  # 17.偏度指标
    X_kf = X_beta/X_rms ** 4     # 18.峭度指标
    
    time_domain_features_list = [X_mean, X_std, X_rms2, X_rms, X_max, X_min, X_p, X_pp, X_avg, X_r, X_alpha, X_beta, X_wf, X_cf, X_if, X_clf, X_pf, X_kf]
    time_domain_names_list = ['平均值', '方差', '均方值', '均方根值', '最大值', '最小值', '峰值', '峰峰值', '平均绝对幅值', 
                              '方根幅值', '偏度', '峭度', '波形指标', '峰值指标', '脉冲指标', '裕度指标', '偏度指标', '峭度指标']
    for i in range(len(time_domain_names_list)):
        print(time_domain_names_list[i],':',time_domain_features_list[i])
    return time_domain_features_list, time_domain_names_list
time_domain_features_list, time_domain_names_list = get_time_domain_features(data=x)
time_domain_features_list, time_domain_names_list = get_time_domain_features(data=x)
time_domain_features_list, time_domain_names_list = get_time_domain_features(data=x)
平均值 : 0.506101294634079
方差 : 2.1422782642540135
均方值 : 4.589356161495189
均方根值 : 2.1422782642540135
最大值 : 3.4797421092734804
最小值 : -3.4874981121547806
峰值 : 3.4874981121547806
峰峰值 : 6.967240221428261
平均绝对幅值 : 1.920591101461503
方根幅值 : 1.752480189593869
偏度 : -0.07538076391033736
峭度 : 32.72574911884685
波形指标 : 1.1154265281265827
峰值指标 : 3.2522573456881902
脉冲指标 : 3.627654119675153
裕度指标 : 3.9756456379931424
偏度指标 : -0.007667131112382436
峭度指标 : 1.5537676354880396

5. CWRU data actual combat

5.1 Inner race failure

Define CWRU data read function

def data_acquision(FilePath):
    """
    fun: 从cwru mat文件读取加速度数据
    param file_path: mat文件绝对路径
    return accl_data: 加速度数据,array类型
    """
    data = scio.loadmat(file_path)  # 加载mat数据
    data_key_list = list(data.keys())  # mat文件为字典类型,获取字典所有的键并转换为list类型
    accl_key = data_key_list[3]  # 获取'X108_DE_time'
    accl_data = data[accl_key].flatten()  # 获取'X108_DE_time'所对应的值,即为振动加速度信号,并将二维数组展成一维数组
    return accl_data

insert image description here

Using CWRU bearing data for analysis, 4 mat files are selected, including inner ring fault, outer ring fault, rolling element fault and normal state.
File name explanation (take "1730_12k_0.007-InnerRace" as an example):
1730: speed, unit rpm
12k: sampling frequency, Hz
0.007: fault size, unit inch, 1inch=25.4mm
InnerRace: represents inner race fault

Plot the time domain plot and magnitude probability density function of the inner race fault

file_path = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/1730_12k_0.007-InnerRace.mat'
data = data_acquision(FilePath=file_path)
print(data)
plt.figure(figsize=(12,2))
plt.plot(data)
plt.show()
plt_amp_prob_density_fun(data=data, n=100)
>>>输出结果
[ 0.22269856  0.09323776 -0.14651649 ... -0.36125573  0.31138814
  0.17055689]

insert image description here
insert image description here

Calculation of the size of the characteristic parameters of each amplitude domain of the inner ring fault

get_time_domain_features(data=data)
>>>输出结果
平均值 : 0.004718397126522763
方差 : 0.3135712339852505
均方值 : 0.09832691878303272
均方根值 : 0.3135712339852505
最大值 : 1.6667390879034174
最小值 : -1.5402176785636486
峰值 : 1.6667390879034174
峰峰值 : 3.2069567664670657
平均绝对幅值 : 0.22413171955956412
方根幅值 : 0.1788814956202537
偏度 : -0.00040761964834175015
峭度 : 0.05115487013606729
波形指标 : 1.3990488923274307
峰值指标 : 10.227203323816086
脉冲指标 : 14.308357481792312
裕度指标 : 17.92782845060225
偏度指标 : -0.01322045690393005
峭度指标 : 5.291053175312336

It can be found that the kurtosis index is greater than 3, and the amplitude probability density function is thin and sharp.

5.2 Normal state

Plot the time-domain plot and the magnitude probability density function plot of the normal state

file_path = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/1730_48k_Normal.mat'
data = data_acquision(FilePath=file_path)
print(data)
plt.figure(figsize=(12,2))
plt.plot(data)
plt.show()
plt_amp_prob_density_fun(data=data, n=100)
>>>输出结果
[ 0.01460308  0.05444862  0.10764554 ... -0.02357354  0.00521538
  0.04777292]

insert image description here
insert image description here
Calculate the size of the normal characteristic parameters of each amplitude domain

get_time_domain_features(data=data)
>>>输出结果
平均值 : 0.01245851422293584
方差 : 0.06469520385023537
均方值 : 0.004185469401223511
均方根值 : 0.06469520385023537
最大值 : 0.2712584088539872
最小值 : -0.3189145142229358
峰值 : 0.3189145142229358
峰峰值 : 0.590172923076923
平均绝对幅值 : 0.05170725167996645
方根幅值 : 0.04384435047720211
偏度 : -3.4532433523248354e-05
峭度 : 5.180413666679372e-05
波形指标 : 1.2511824115243202
峰值指标 : 9.12235974158347
脉冲指标 : 11.41373606026678
裕度指标 : 13.460637839390442
偏度指标 : -0.1275295794513686
峭度指标 : 2.9571686803135426

It can be found that the kurtosis index is around 3, and the amplitude probability density function is similar to the normal distribution.

5.3 Outer ring failure

Draw the time domain diagram and amplitude probability density function diagram of the outer ring fault

file_path = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/1730_12k_0.007-OuterRace3.mat'
data = data_acquision(FilePath=file_path)
print(data)
plt.figure(figsize=(12,2))
plt.plot(data)
plt.show()
plt_amp_prob_density_fun(data=data, n=100)
>>>输出结果
[ 0.10436457  0.62537525  0.12304461 ...  0.88689581  0.84588094
 -0.5636499 ]

insert image description here
insert image description here
Calculation of the size of the characteristic parameters of each amplitude domain of the outer ring fault

get_time_domain_features(data=data)
>>>输出结果
平均值 : 0.006673843393593249
方差 : 0.7975703939021197
均方值 : 0.6361185332291823
均方根值 : 0.7975703939021197
最大值 : 3.612380847225169
最小值 : -3.322787017046288
峰值 : 3.612380847225169
峰峰值 : 6.935167864271457
平均绝对幅值 : 0.6080145950947324
方根幅值 : 0.5062975339786826
偏度 : 0.04229527425007543
峭度 : 1.6551101479225734
波形指标 : 1.3117619220601988
峰值指标 : 8.695367728409641
脉冲指标 : 11.406252284438855
裕度指标 : 13.697810869771013
偏度指标 : 0.08336519532029546
峭度指标 : 4.090258951031924

It can be found that the kurtosis index is greater than 3, and a pit appears on the top of the amplitude probability density function.

5.4 Rolling element failure

Draw time-domain diagram and amplitude probability density function diagram of rolling element fault

file_path = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/1730_12k_0.014-Ball.mat'
data = data_acquision(FilePath=file_path)
print(data)
plt.figure(figsize=(12,2))
plt.plot(data)
plt.show()
plt_amp_prob_density_fun(data=data, n=100)
>>>输出结果
[ 0.1054204  -0.10736962 -0.16340974 ... -0.5821675   0.07488259
  0.56202555]

insert image description here
insert image description here
Calculating the size of characteristic parameters of each amplitude domain of the rolling element fault

get_time_domain_features(data=data)
>>>输出结果
平均值 : 0.004535467952873973
方差 : 0.13361739428910718
均方值 : 0.017853608056610733
均方根值 : 0.13361739428910718
最大值 : 1.9846451308495212
最小值 : -1.7174139110666464
峰值 : 1.9846451308495212
峰峰值 : 3.7020590419161676
平均绝对幅值 : 0.09177927629408723
方根幅值 : 0.07371838887961654
偏度 : 0.0003906736827228592
峭度 : 0.004736237523606714
波形指标 : 1.4558558280734157
峰值指标 : 27.70641548289771
脉冲指标 : 40.33654645580015
裕度指标 : 50.21893584735956
偏度指标 : 0.16376653561183255
峭度指标 : 14.858722825401527

It can be found that the kurtosis index is much greater than 3, and the amplitude probability density function is also very thin and sharp.

6. Bearing data of IMF accelerated life test

insert image description here
IMF is a bearing life cycle data, that is, it runs from normal to bad on the test bench. IMF data is collected every 10 minutes.
The filename is the acquisition time

For example, "2004.02.12.10.32" is collected at 10:32 on February 12, 2004.
The data selected this time is a data that finally ran out of the outer ring fault.

6.1 Single data attempt

Define the IMF data reading function

def IMF_data_acquision(FilePath, n):
    """
    fun: 从IMF文件读取加速度数据
    param file_path: mat文件绝对路径
    return accl_data: 加速度数据,array类型
    """
    data = np.loadtxt(fname=file_path)
    accl_data = data[:, n]
    return accl_data
file_path = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/IMF_2nd_test_OF1/2004.02.12.10.32.39'
data = IMF_data_acquision(FilePath=file_path, n=0)

Draw time-domain diagrams and amplitude probability density function diagrams, and calculate time-domain characteristic parameters

print(data)
plt.figure(figsize=(12,2))
plt.plot(data)
plt.show()
plt_amp_prob_density_fun(data=data, n=100)
time_domain_features_list, time_domain_names_list = get_time_domain_features(data=data)
>>>输出结果
[-0.049 -0.042  0.015 ... -0.012 -0.012  0.02 ]

insert image description here
insert image description here

>>>输出结果
平均值 : -0.010195996093750001
方差 : 0.07347493104305192
均方值 : 0.005398565491781235
均方根值 : 0.07347493104305192
最大值 : 0.46419599609375
最小值 : -0.37580400390625
峰值 : 0.46419599609375
峰峰值 : 0.8400000000000001
平均绝对幅值 : 0.057688910923004155
方根幅值 : 0.04853102183425118
偏度 : 3.331677118397008e-05
峭度 : 0.00010575850683660837
波形指标 : 1.2736404599684148
峰值指标 : 11.432470749891692
脉冲指标 : 14.5608573044675
裕度指标 : 17.308516661134114
偏度指标 : 0.08399343541253229
峭度指标 : 3.628762642644256

6.2 Analysis of whole life cycle data

Traverse to read the whole life cycle data. And obtain the time-domain characteristic parameter size of the data collected each time.

base_dir = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/IMF_2nd_test_OF1'
file_name_list = os.listdir(base_dir)
all_time_domain_features_list = []
for file_name in file_name_list:
    file_path = os.path.join(base_dir, file_name)
    data = IMF_data_acquision(FilePath=file_path, n=0)
    time_domain_features_list, time_domain_names_list = get_time_domain_features(data=data)
    all_time_domain_features_list.append(time_domain_features_list)
>>>输出结果
平均值 : -0.010195996093750001
方差 : 0.07347493104305192
均方值 : 0.005398565491781235
均方根值 : 0.07347493104305192
最大值 : 0.46419599609375
最小值 : -0.37580400390625
峰值 : 0.46419599609375
峰峰值 : 0.8400000000000001
...
峰值指标 : 7.003117715378994
脉冲指标 : 7.147508219574274
裕度指标 : 7.207950142678743
偏度指标 : 0.31703227680043844
峭度指标 : 1.3902259645328505

Convert list to array

all_time_domain_features_arr = np.array(all_time_domain_features_list)
all_time_domain_features_arr
>>>结果输出
array([[-1.01959961e-02,  7.34749310e-02,  5.39856549e-03, ...,
         1.73085167e+01,  8.39934354e-02,  3.62876264e+00],
       [-2.58500977e-03,  7.53381213e-02,  5.67583252e-03, ...,
         1.52497399e+01,  5.21419073e-02,  3.64829108e+00],
       [-2.48398437e-03,  7.61892928e-02,  5.80480834e-03, ...,
         1.77537992e+01,  3.28079981e-02,  3.51347531e+00],
       ...,
       [-1.70307617e-03,  4.83832398e-01,  2.34093789e-01, ...,
         2.50246000e+01, -3.77095385e-01,  7.89175523e+00],
       [ 1.85683594e-03,  9.87327986e-04,  9.74816551e-07, ...,
         1.46340168e+01,  5.79698251e-01,  6.63751264e+00],
       [-1.16196289e-03,  9.99554810e-04,  9.99109819e-07, ...,
         7.20795014e+00,  3.17032277e-01,  1.39022596e+00]])

Plot the size change of each time-domain feature parameter over the entire period

for i in range(len(time_domain_features_list)):
    plt.figure(figsize=(12,3))
    plt.plot(all_time_domain_features_arr[:,i])
    plt.title(time_domain_names_list[i])
    plt.show()

insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here
insert image description here

Can be found:

  • Some time-domain characteristic parameters fluctuate less in the previous normal state, such as variance, maximum value, and average absolute magnitude. Some time-domain characteristic parameters fluctuate greatly in the normal state in the early stage, such as peak index, pulse index, and margin index.
  • Some features are sensitive to the early stage of failure, such as waveform index, variance, mean square value, maximum value, peak value, average absolute amplitude, etc. Some features are not sensitive to early failure, such as kurtosis, mean value, and skewness.
  • Some characteristics are smaller in value during fault conditions, such as minima, skewness.
  • Some features have been increasing over time, such as variance, root mean square value, and average absolute magnitude. Some features rise first and then fall, such as waveform indicators, peak indicators, margin indicators, and skewness indicators.

7. Summary

  • Time-domain indicators can be used to monitor bearing health.
  • The kurtosis index of the faulty bearing is greater than 3.
  • Different time-domain features have different sensitivities to bearing faults, so it is better to use multiple features for simultaneous monitoring.

Guess you like

Origin blog.csdn.net/m0_47410750/article/details/126943701