论文题目: Bearing vibration data collected under time-varying rotational speed conditions
机构: Department of Mechanical Engineering, University of Ottawa, 161 Louis Pasteur, Ottawa, Ontario, Canada
不同于现有文献中在恒速条件下收集的数据集,这些数据是从在时变转速条件下运行的轴承收集的。
所收集的数据可用于分析时变转速条件下不同健康状态轴承的频率特性。
这些数据也可以用于评估新开发的轴承故障诊断或时变转速条件下状态监测方法的有效性
实验在SpectraQuest机械故障模拟器(MFS-PK5M)上进行。实验装置如图1所示。轴由电机驱动,转速由交流驱动器控制。安装两个ER16K球轴承支撑轴,左边一个是健康轴承,右边一个是实验轴承,用不同健康状态的轴承代替。一个ICP加速度计(型号623C01)安装在实验轴承的外壳上,用于收集振动数据。此外,一个增量编码器(EPC型号775)安装在轴上,用于测量轴的旋转速度。
图1试验台
通过观察故障特征频率(FCF)在频域中的表现,可以检测和诊断轴承故障。每种类型的故障都有特定的FCF,它与操作转速成正比,且系数由轴承的结构参数决定。实验中使用的轴承结构参数如表1所示。根据这些参数,轴承内圈的FCF系数为5.43,即内圈球通频率(BPFI)等于FCF系数(5.43)与轴的旋转频率 的乘积,即BPFI = 5.43 * 。同理,轴承外圈的FCF,即外圈球通频率(BPFO)= 3.57 * 。
表1 轴承参数
import numpy as np
import pandas as pd
from scipy.io import loadmat
import matplotlib.pyplot as plt
from matplotlib import rcParams
from nptdms import TdmsFile
config = {
"font.family": 'serif', # 衬线字体
"font.size": 15, # 相当于小四大小
"font.serif": ['SimHei'], # 宋体
"mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New Roman差别不大
'axes.unicode_minus': False # 处理负号,即-号
}
rcParams.update(config)
##========绘制时域信号图========##
def plt_time_domain(arr, fs=1600, c='Amp(mg)', title='原始数据时域图', img_save_path=None, x_vline=None, y_hline=None):
"""
:fun: 绘制时域图模板
:param arr: 输入一维数组数据
:param fs: 采样频率
:param ylabel: y轴标签
:param title: 图标题
:return: None
"""
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
plt.rcParams['axes.unicode_minus'] = False # 显示负号
font = {'family': 'Times New Roman', 'size': '20', 'color': '0.5', 'weight': 'bold'}
plt.figure(figsize=(12,4))
length = len(arr)
t = np.linspace(0, length/fs, length)
plt.plot(t, arr, c='g')
plt.xlabesl('t(s)')
plt.ylabel(ylabel)
plt.title(title)
if x_vline:
plt.vlines(x=x_vline, ymin=np.min(arr), ymax=np.max(arr), linestyle='--', colors='r')
if y_hline:
plt.hlines(y=y_hline, xmin=np.min(t), xmax=np.max(t), linestyle=':', colors='y')
#===保存图片====#
if img_save_path:
plt.savefig(img_save_path, dpi=500, bbox_inches = 'tight')
plt.show()##========绘制时域信号图========##
##========绘制频域信号图========##
def plt_fft_img(arr, fs, ylabel='Amp(mg)', title='频域图', img_save_path=None, vline=None, hline=None, xlim=None):
"""
:fun: 绘制频域图模板
:param arr: 输入一维时域数组数据
:param fs: 采样频率
:param ylabel: y轴标签
:param title: 图标题
:return: None
"""
# 计算频域幅值
length = len(arr)
t = np.linspace(0, length/fs, length)
fft_result = np.fft.fft(arr)
fft_freq= np.fft.fftfreq(len(arr), d=t[1]-t[0]) # FFT频率
fft_amp= 2*np.abs(fft_result)/len(t) # FFT幅值
# 绘制频域图
plt.figure(figsize=(12,4))
plt.title(title)
plt.plot(fft_freq[0: int(len(t)/2)], fft_amp[0: int(len(t)/2)], label='Frequency Spectrum', color='b')
plt.xlabel('频率 (Hz)')
plt.ylabel('幅值')
plt.legend()
if vline:
plt.vlines(x=vline, ymin=np.min(fft_amp), ymax=np.max(fft_amp), linestyle='--', colors='r')
if hline:
plt.hlines(y=hline, xmin=np.min(fft_freq), xmax=np.max(fft_freq), linestyle=':', colors='y')
#===保存图片====#
if img_save_path:
plt.savefig(img_save_path, dpi=500, bbox_inches = 'tight')
if xlim: # 图片横坐标是否设置xlim
plt.xlim(0, xlim)
plt.tight_layout()
plt.show()
return fft_freq, fft_amp
##========绘制包络谱图========##
def plt_envelope_spectrum(data, fs, ylabel='Amp(mg)', title='包络谱图', img_save_path=None, vline=None, hline=None, xlim=None):
'''
fun: 绘制包络谱图
param data: 输入数据,1维array
param fs: 采样频率
param xlim: 图片横坐标xlim,default = None
param vline: 图片垂直线,default = None
'''
from scipy import fftpack
#=========做希尔伯特变换=======#
xt = data
ht = fftpack.hilbert(xt)
at = np.sqrt(xt**2+ht**2) # 获得解析信号at = sqrt(xt^2 + ht^2)
at = at - np.mean(at) # 去直流分量
fft_amp = np.fft.fft(at) # 对解析信号at做fft变换获得幅值
fft_amp = np.abs(fft_amp) # 对幅值求绝对值(此时的绝对值很大)
fft_amp = fft_amp/len(fft_amp)*2
fft_amp = fft_amp[0: int(len(fft_amp)/2)] # 取正频率幅值
fft_freq = np.fft.fftfreq(len(at), d=1 / fs) # 获取fft频率,此时包括正频率和负频率
fft_freq = fft_freq[0:int(len(fft_freq)/2)] # 获取正频率
# 绘制包络谱图
plt.figure(figsize=(12,4))
plt.title(title)
plt.plot(fft_freq, fft_amp, label='Envelope Spectrum', color='b')
plt.xlabel('频率 (Hz)')
plt.ylabel('幅值')
plt.legend()
if vline:
plt.vlines(x=vline, ymin=np.min(fft_amp), ymax=np.max(fft_amp), linestyle='--', colors='r')
if hline:
plt.hlines(y=hline, xmin=np.min(fft_freq), xmax=np.max(fft_freq), linestyle=':', colors='y')
#===保存图片====#
if img_save_path:
plt.savefig(img_save_path, dpi=500, bbox_inches = 'tight')
if xlim: # 图片横坐标是否设置xlim
plt.xlim(0, xlim)
plt.tight_layout()
plt.show()
import os
from scipy.io import loadmat
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# 设置字体
matplotlib.rc("font", family='Microsoft YaHei')
# 数据文件夹路径
data_dir = r'G:\Ottawa数据集\experimental_data'
# 这里列出文件名
file_names = [
'H-A-1.mat',
'B-A-1.mat',
'I-A-1.mat',
'O-A-1.mat',
'C-A-1.mat',
]
# 加载并存储数据
data1 = loadmat(os.path.join(data_dir, file_names[0]))
data2 = loadmat(os.path.join(data_dir, file_names[1]))
data3 = loadmat(os.path.join(data_dir, file_names[2]))
data4 = loadmat(os.path.join(data_dir, file_names[3]))
data5 = loadmat(os.path.join(data_dir, file_names[4]))
# Channel1数据
data_list1 = data1['Channel_1'].reshape(-1)
data_list2 = data2['Channel_1'].reshape(-1)
data_list3 = data3['Channel_1'].reshape(-1)
data_list4 = data4['Channel_1'].reshape(-1)
data_list5 = data5['Channel_1'].reshape(-1)
time_step= 102400
# 划窗取值,前102400做可视化·
data_list1 = data_list1[0:time_step]
data_list2 = data_list2[0:time_step]
data_list3 = data_list3[0:time_step]
data_list4 = data_list4[0:time_step]
data_list5 = data_list5[0:time_step]
vib_arr=data_list1
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=200000, xlim=2000)
plt_envelope_spectrum(vib_arr, fs=20000, xlim=2000)
vib_arr=data_list2
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=200000, xlim=2000)
plt_envelope_spectrum(vib_arr, fs=200000, xlim=2000)
vib_arr=data_list3
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=200000, xlim=100000)
plt_envelope_spectrum(vib_arr, fs=200000, xlim=100000,)
vib_arr=data_list4
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=200000, xlim=100000)
plt_envelope_spectrum(vib_arr, fs=200000, xlim=10000)
vib_arr=data_list5
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=200000, xlim=100000)
plt_envelope_spectrum(vib_arr, fs=200000, xlim=100000)
编辑:赵栓栓
校核:陈凯歌、李正平、曹希铭、赵学功、白亮、任超、Tina、陈宇航、陈莹洁、王金、赵诚、肖鑫鑫
该文资料搜集自网络,仅用作学术分享,不做商业用途,若侵权,后台联系小编进行删除