/PyCycloVarREB

Cyclostationary analysis in angular domain for bearing fault identification

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Cyclostationary analysis in angular domain for bearing fault identification

Python 3.10 Poetry

The following repository has the objective of provide a clean envelope spectrum to diagnose bearing faults under variable speed, a challenging database is used to test the present functions. The database is available as supplementary material of the article, "Feedback on the Surveillance 8 challenge: Vibration-based diagnosis of a Safran aircraft engine" in https://doi.org/10.1016/j.ymssp.2017.01.037. If you find this material useful, please give a citation to any of the papers mentioned in references.

REB Highlight

Functions to REB failure identification based on Spectral kurtosis:

SK_W # Spectral kurtosis from a Matlab repository made by ANTONI Jerome

PSD_envW # Proposed algorithm sliding SK implementation.

bearingfault # Bearing fault numerical signal if questions please contact http://lva.insa-lyon.fr/en/

Example

mfreq = 0.4*fr # fr rotational speed, 0.4 is the lowest expected failure frequency
Nw1      = 2**np.ceil(np.log2(1/mfreq*fs))*2**3 # greater than Nw2 window for envelope spectrum
Nw1      = int(Nw1)
Nw2      = 2**8 # window for computation of SK
Nw2      = int(Nw2)
Nfft     = 2*Nw1
Nfft2    = 2*Nw2
Noverlap = round(3/4*Nw1)
Window   = np.kaiser(Nw1,beta=0) # beta 0 rectangular,5	Similar to a Hamming
# 6	Similar to a Hanning, 8.6	Similar to a Blackman

#%
filterr  = 1 # filtering with SK
psd,f,K,SK_w  = PSD_envW(x,Nfft,Noverlap,Window,Nw2,Nfft2,filterr)

Angular resampling functions

These functions are translated/adapted from the book Noise and Vibration Analysis Signal Analysis and Experimental Procedures by Anders Brandt

tTacho_fsig # Time indexes for angular resampling, and the Instantaneous Angular Profile (IAS), uses as input the tachometer signal

COT_intp # interpolates a vibration signal with given time indexes in tTacho_fsig

COT_intp2 # Interpolates the signal given an IAS profile, useful for numerical tests

tTacho_fsigLVA # Creates an IF profile from the tachometer signal, translated from matlab from courses of the http://lva.insa-lyon.fr/en/

functions to print data-tips using matplotlib

The following functions are using to put data-tips in a certain amount of harmonics given a Power Spectral Density

printxtips

printxtipsusr

References

Sierra-Alonso, E. F., Caicedo-Acosta, J., Orozco Gutiérrez, Á. Á., Quintero, H. F., & Castellanos-Dominguez, G. (2021). Short-time/-angle spectral analysis for vibration monitoring of bearing failures under variable speed. Applied Sciences, 11(8), 3369.

Sierra-Alonso, E. F., Antoni, J., & Castellanos-Dominguez, G. (2019, July). Cyclo-non-stationary analysis for bearing fault identification based on instantaneous angular speed estimation. In Surveillance, Vishno and AVE conferences.

Revised version of the code

2022-05-23, revised functions to enhance impulsive components using Spectral Kurtosis in the folder filter_SK, encountered a problem with the last version of function sg.fftconvolve inside PSD_envW, it is replaced by sg.filtfilt(b, 1, x). Please note that in theory, it should not present a problem replacing the function, but I did not redo the test to make sure the resulting PSD remains the same