A Quick Introduction To Bearing Envelope Analysis
A Quick Introduction To Bearing Envelope Analysis
Eric Bechhoefer
Green Power Monitoring Systems
Cornwall, VT 05752
Telephone: (802) 377-0160
[email protected]
Abstract: Bearing envelope analysis (BEA) is a powerful technique for the detection of
bearing faults. The improper selection of the envelope window frequency and window
bandwidth can render the analysis ineffective. This can reduce the ability to perform
condition monitoring to correctly identify a degraded bearing. This paper is an analysis of
how BEA works in the detection of damage bearings. A description of the BEA is given,
methods for window selection, such as spectral kurtosis, is described, and example
algorithms are given to facilitate experimentation.
Key words: Bearing Analysis, Envelop, Heterodyne, and Condition Monitoring Systems;
1
THE BEARING ENVELOPE ANALYSIS: BEA is based on demodulation of high
frequency resonance associated with bearing element impacts. For rolling element
bearings, when the rolling elements strike a local fault on the inner or outer race, or a fault
on a rolling element strikes the inner or outer race, an impact is produced. These impacts
modulate a signal at the associated bearing pass frequencies, such as: Cage Pass Frequency
(CPF), Ball Pass Frequency Outer Race (BPFO), Ball Pass Frequency Inner Race (BPFI),
and Ball Fault Frequency (BFF). Figure (1) is an Outer Race Fault, where the BPFO is
approximately 80 Hz. Note that the modulation rate, T1, is approximately .0125 seconds
(e.g. 1/80 Hz). The time T2, the period of the resonance, is approximately 1.12e-4 seconds,
or about 9000 Hz. Note that the time domain representation is the super position of many
resonances of the bearing itself.
2
cos( b) • cos( a + b) =
1 [ cos( a + b + b) + cos( a + b − b ) ] (2)
2
→ H ( ω ) → cos( a )
An alternate why to generate the envelope is to take the FFT (fast Fourier transform) of the
time domain signal and calculate the frequency of each bin (e.g. sample rate/length of time
series). Calculate the “window” indexes (e.g. the range of frequencies in which the bearing
is resonating, say 8 to 9 KHz). Copy the Fourier coefficients from desired window (e.g.
8KHz to 9 KHz) into the base band (e.g. 0 to 1 KHz) indexes (this is a Heterodyne
operation). Then copy zeros into the remaining Fourier coefficients (Fourier filtering and
Hilbert transform, recalling that the Hilbert transform is defined at the real frequency of the
Fourier domain). Finally, take the absolute value of inverse FFT Fourier coefficients (see
appendix for Matlab© example).
The bearing components have a number of vibration modes, which will correspondingly
generate resonance at various frequencies throughout the spectrum. The selection of the
frequency range used to demodulate the bearing rate signal (e.g. the window center
frequency) should take into account some issues: First, the gearbox spectrum contains a
number of high-energy frequencies from shaft and gear harmonics, which would mask
analysis at lower bearing frequencies. Second, there are a number of accelerometers with
natural resonance at frequencies that are similar to the bearing modes. Using a higher
frequency window close to the accelerometer resonance can amplify the bearing fault
signal, increasing the probability of fault detection.
BEA should be performed at frequencies higher than the shaft and gear mesh frequencies.
This ensures that the demodulated bearing frequencies are not masked by the other rotating
sources, such as shaft and gear mesh, which are present at CPF, BPFO, BPFI and BFF
frequencies. Typical shaft order amplitudes of 0.1 G’s and gear mesh amplitudes of 10s of
G’s, are common. Damaged bearing amplitudes are 0.001 G’s.
A technique used to identify an appropriate envelope wind is Spectral Kurtosis. Boskoski
and Urevc used spectral kurtosis (SK) to determine the best window in order to determine
the condition of a test gearbox with seeded faults. Dr. Robert Bond Randall’s book
Vibration-based Condition Monitoring gives an excellent explanation of SK.
Kurtosis is a non-dimensional quantity that measures the relative “peakedness” of a
distribution relative the Gaussian distribution. Spectral kurtosis (SK) is a statistical
parameter indicating how the impulsiveness of a signal varies with
frequency. As noted, faults associated with rolling element bearings give
rise to short impulse. The SK will be large in frequency bands where the
fault signal is dominant and small where the spectrum is dominated by
stationary signals. Antoni developed the kurtogram, which is a map
indicating the optimum center frequency and bandwidth combination.
In this kurtogram example, filtering was limited between 1 KHz and 24.4
KHz (Nyquest). The lower limit was chosen because typically, below 1
KHz, there are significant gear mesh frequencies. The kurtogram
3
frequency space spans eight octaves, such that frequency band is
approximately halved with each increase in octave:
4
TABLE I. KURTOGRAM FREQUENCY MAP
Figure 2 shows the raw spectrum and the Kurtogram. The largest kurtosis value was in
Octave 5, or a window of 1 to 4 KHz. This is compared to the second example window in
Octave 8, from 2.51 KHz to 3.266 KHz.
The envelope analysis spectrum for window 1 and window 2 is plotted in Figure 3. Note
that a 3rd envelope analysis is also demonstrated for a poor window: 15 to 18 KHz (band 5,
5
Octave 4). The SNR for the window 1 was 23 dB, window 2, 15 dB, and window 3: 10 dB.
There have been a number of reported cases where poor window selection has resulted in a
missed detection of a faulted bearing.
CALCUALTION OF THE BEARING RATES: For BEA, the bearing rates must be
know in order to calculate the energy in the spectrum associated with the fault. The bearing
rates are derived from the bearing geometer and is calculated as:
Cage Pass Frequency (CPF):
f d
1 − × cos( β )
2 e (3)
Ball Pass Frequency Inner Race (BPFI):
b× f d
1 + × cos( β )
2 e (4)
Ball Pass Frequency Outer Race (BPFO):
b× f d
1 − × cos( β )
2 e (5)
Ball Fault Frequency (BFF):
e× f
d
( )
1 − d e × cos ( β )
2
2
(6)
6
where,
f is the driving frequency
b is the number of rolling elements
d is the ball bearing diameter
e is the bearing pitch diameter
β is the bearing contact angle
The amplitude associated with the bearing rates frequency can be used as a condition
indicator (CI), which reflects the “health” of the bearing components. Note that the rate
does not reflect “slippage”, which can be 1% or more.
Bearing Fault Data Set: A bearing fault dataset has been provided to facilitate research
into bearing analysis. The dataset consist of data from a bearing test rig (nominal bearing
data, an outer rate fault at various loads, and inner race fault and various loads), and two
real work faults.
7
Two real world example files are also included: an intermediate shaft bearing from a wind
turbine (data structure holds bearing rates and shaft rate) and an oil pump shaft bearing
from a wind turbine).
The freely distributed software package GNU Octave can also be used to read and
manipulate these files (http://www.gnu.org/software/octave/)
Conclusion: Bearing Envelope analysis is a powerful analysis method for the detection of
bearing fault. Window selection is important – a poor window may not detect a bearing that
is in the process of failing. Window selection can be guided by the use of spectral kurtosis,
or by selecting part the spectrum where the bearing under analysis would have a resonant
response.
Appendix:
Example of Spectral Kurtosis algorithm
function S = SpecKurt(v,sr)
%S = SpecKurt(v,sr)
%Inputs:
% v :time domain values
% sr :sample rate
%Outputs:
% S :Kurtogram
%Spectrum is calculated using psde
idx = sdix:edix;
S(i,idx) = sk;
sdix = edix + 1;
edix = edix + dix;
cLw = cLw + dBw;
end
end
fq = linspace(lw,hi,32);
surf(fq,1:8,S)
axis([fq(1) fq(end) 1 8])
% title(name);
colorbar
8
%Inputs:
% x :time domain data
% windln :window length, e.g. 2048,
% Fs :sampleing frequency
% noverlap :length of the overlp
%Outputs:
% Spec :vector Spectrum
% freq :corresponding frequency
n = winln;
m = n/2;
window = .5*(1 - cos(2*pi*(1:m)'/(n+1))); %Hann window
window = [window; window(end:-1:1)];
window = window(:);
nfft = length(window);
Spec = zeros(nfft,1);
for i=1:k
xw = window.*detrend(x(index));
index = index + (nwind - noverlap);
xx = fft(xw,nfft);
Xx = abs(xx).^2;
Spec = Spec + Xx;
end
c = (highf + lowf)/2;
9
if 1/dt/2 < c
y = [];
dt = [];
else
ndata = length(data);
z = data(:) .*exp(-2 * pi * 1i * c * dt * (0:ndata-1)');
bw = highf - lowf;
b = fir1(nfilt,bw*dt);
x = filter(b,1,z);
r = fix(1/(bw*2*dt));
env = abs( x(nfilt+1:r:ndata) ); % crop first nfilt elements
dty = dt*r;
end
n = length(data);
dfq = 1/dt/n;
idxLow = floor(lowf/dfq);
idxHi = ceil(highf/dfq);
D = fft(data);
idx = idxHi-idxLow + 1;
D(1:idx) = D(idxLow:idxHi);
D(idx+1:end) = 0;
data = abs(ifft(D));
bw = highf - lowf;
r = fix(1/(bw*2*dt));
env = data(1:r:n); % crop first nfilt elements
dty = dt*r;
10