论文题目: University of Ottawa constant and variable speed electric motor vibration and acousticfault signature dataset
机构: Department of Mechanical Engineering, University of Ottawa, 161 Louis Pasteur, Ottawa, Ontario, Canada
为解决这一问题,渥太华大学提供了“电动电机数据集——恒速和变速条件下的振动与声学故障”(UOEMD-VAFCVS)。该数据集收集了来自加速度传感器、温度传感器和声学传感器的高质量电机故障数据,涵盖了多种感应电机故障,可用于时域分析。这些高质量数据有助于在使用故障检测方法时区分机械故障和电气故障,这对于机器状态监测来说是一项宝贵的资产。
关键词:感应电机,电气故障,机械故障,振动,声学,状态监测,信号处理
从数据中获取的时域信号可以应用不同的故障信号方法,例如频谱分析或时频分析,以区分各种机械和电气感应电机故障类型。
该数据可用于探索变速和恒速数据集之间的相关性,尤其是在考虑不同的故障识别方法时。这种探索可以提供关于故障在不同运行条件下如何变化的见解。
收集的数据可用于训练用于电动电机故障诊断的机器学习算法,无论是以原始格式还是经过处理后。这种训练可以涉及神经网络和支持向量机等算法。
由于加速度传感器的布置,数据可用于相位分析,以确定电气故障。相位分析涉及理解加速度传感器的布置如何有助于准确的故障分析。
数据提供了嘈杂信号和干净信号,以鼓励在两种情况下进行故障检测和提取。嘈杂信号对检测过程提出了挑战,而干净信号作为参考进行比较,确保有效的故障提取。
本文提供的电气数据集可以与其他机械故障数据集(如[1–4])结合,以区分电气故障和机械故障。
一个在恒速和变速条件下运行的感应电机试验台,从加速度传感器、温度传感器、麦克风和变频驱动器中收集信号。本文提供的数据集鼓励研究人员使用传统和深度学习方法来识别感应电机中的机械故障和电气故障。该数据将支持各种方法和算法的应用,以诊断电机的电气和机械问题。数据将有助于训练和验证深度学习算法,从而提高机器学习方法的准确性,并鼓励使用不同的故障类型识别方法。数据集涵盖了不同的运行条件,包括空载、负载、恒速和变速。
每个单独的文件包含10秒的数据,采样率为42000Hz。在每个文件中,
第一列是电机驱动端的加速度计数据;
第二列是声学数据;
第三列是电机驱动端附近轴轴承外壳上的第二个加速度计的数据;
第四列是离电机驱动端最远的轴轴承外壳上的第三个加速度计的数据;
第五列是电机驱动端表面的温度数据。
原始数据以时间序列形式提供,包括振动、声学和温度的幅度,而电机转速则以旋转频率的形式给出。数据集的格式如下:{字母}-{字母}-{数字}-{数字}。
数据集的标记方案中,第一个字母和第二个字母组合起来表示被测试的电机的健康状况。具体来说,第一个字母可以表示为“H”(正常)、“R”(转子)、“S”(定子)、“V”(电压)、“B”(弯曲)、“K”(断裂)或“F”(故障)。第二个字母可以表示为“H”(正常)、“U”(不平衡)、“M”(不对中)、“W”(绕组)、“R”(转子)、“A”(转子条)或“B”(轴承)。
数据集标记方案中的第一个数字表示电机的运行频率,而最后一个数字则表示电机是否加载,其中“0”表示未加载的电机轴,“1”表示加载的电机轴。例如,
标记为“R-U-1-0”的数据样本对应于未加载的转子不平衡故障,电机速度为15 Hz;
而“R-M-4-1”表示在60 Hz下加载的转子不对中故障。
同样,“B-R-7-0”表示在速度从45 Hz降至15 Hz时未加载的弯曲转子故障,
而“V-U-5-1”表示在速度从15 Hz升至45 Hz时加载的电压不平衡。
表1和表2提供了数据集标记的详细说明。图1展示了B-R-7-0(转子条断裂,速度从45 Hz降至15 Hz)的时间序列样本(振动数据),图2展示了B-R-4-0(60 Hz下的转子条断裂)的样本(振动数据)。
图1 B-R-7-0(减速)加速度计数据
图2 B-R-4-0(恒速)加速度计数据
正常电机以及不同类型电机故障的数据是在大约恒定的频率(约15 Hz、30 Hz、45 Hz和60 Hz)和变化的频率(约15 Hz至45 Hz、30 Hz至60 Hz、45 Hz至15 Hz和60 Hz至30 Hz)下记录的。以下是数据集的详细分解。
表1 恒速工况标签
表2 变速工况标签
由于使用了声学传感器,采样频率被设定为42000 Hz,这是基于人耳可听频率范围(20000 Hz)并应用了香农-奈奎斯特采样定理。数据采集时间为10秒,以确保有足够的样本量来区分速度的增加和减少。因此,每组数据共采集了420,000个数据样本。每台被测试的电动电机都具有其独特的人工制造故障(由SpectraQuest引入),从而能够收集不同的结果。数据集被设计为包含每种故障类型在恒速和变速运行条件下的四种不同电机速度。总共使用了8台电动电机(同型号)来采集数据,其中1台为正常电机,7台为故障电机。每组电机数据的采集都采用了相同的传感器布置方式,旨在减少收集信号时所包含的噪声量。本数据集中使用的电机型号的规格在表3中提供。
表3 电机参数规格
图3 实验台
共有128组数据可在以下链接获取:https://data.mendeley.com/datasets/msxs4vj48g/1。数据采集使用了经过改装的SpectraQuest机械故障与转子动力学模拟试验台。实验装置如图3所示。实验装置包括一台安装在由橡胶减震器支撑的刚性板上的三相电机。电机的转速由变频驱动器控制,单位为赫兹(Hz)。
图3所示的试验台配备了四个传感器和一个变速控制器:三个加速度传感器、一个麦克风和一个变频驱动器。加速度传感器1(带有集成温度传感器,PCB型号603C01)通过磁铁安装在电机驱动端。
传感器2和3(PCB型号623C01)分别通过螺柱安装在图3中左右两侧的轴轴承外壳上。麦克风(PCB型号130F20)放置在左侧轴承外壳2厘米范围内,并通过一个独立且防振的支架支撑。
这种装置允许在电机驱动端以及沿轴的两个位置收集故障振动特征,从而降低信噪比。如图3所示,加速度传感器2和3的放置位置为研究人员提供了干净的电动电机信号,噪声量最小。相比之下,从加速度传感器1获得的信号包含来自变频驱动器的电气噪声。
图4展示了加载条件下的试验台,其中通过在轴上安装的圆盘上对称附加十个螺栓作为负载。传感器通过National Instruments USB-6212数据采集系统连接到计算机。加速度传感器和麦克风传感器连接到PCB Piezotronics 482C信号调理器。加速度传感器用于在系统驱动端和轴上收集振动和温度信号,麦克风用于收集声学信号,变频驱动器用于收集电机的旋转频率。LabVIEW虚拟仪器软件用于捕获数据。图5展示了本研究中使用的前面板,图6展示了块图。
图5 LabVIEW设置面板
图6 LabVIEW设置框图
未进行信号过滤:在信号采集过程中未应用任何滤波器。因此,在数据可用之前,可能需要对数据进行预处理。
实验室环境数据:数据采集是在实验室环境中进行的,可能无法完全代表工业环境中的实际数据。
电磁干扰问题:将传感器安装在电机本身上会引入由变频器的高开关频率和脉冲宽度调制(PWM)引起的电磁干扰。PWM供电的交流电机驱动器会导致电气干扰,可能会在高频段导致信号失真。因此,在使用来自电机驱动端加速度传感器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.xlabel('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_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()
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/B_R_1_0.mat'
data_mat = loadmat(file_path)
data_mat['data'].shape
第1列:加速度计1
第2列:麦克风
第3和第4列:加速度计2和3
第5列:温度信号
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/H_H_1_0.mat'
data_arr = data_read(file_path)
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
plt_envelope_spectrum(vib_arr, fs=42000, xlim=2000, vline=15)
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/R_U_1_0.mat'
data_arr = data_read(file_path)
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
plt_envelope_spectrum(vib_arr, fs=42000, xlim=2000)
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/R_M_1_0.mat'
data_mat = loadmat(file_path)
data_arr = data_read(file_path)
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
plt_envelope_spectrum(vib_arr, fs=42000, xlim=2000, vline=[15,30,45,60])
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/S_W_1_0.mat'
data_arr = data_read(file_path)
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
plt_envelope_spectrum(vib_arr, fs=42000, xlim=2000, vline=[15,30,45,60])
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/V_U_1_0.mat'
data_arr = data_read(file_path)
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
plt_envelope_spectrum(vib_arr, fs=42000, xlim=2000, vline=[15,30,45,60])
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/B_R_1_0.mat'
data_arr = data_read(file_path)
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
plt_envelope_spectrum(vib_arr, fs=42000, xlim=2000, vline=[15,30,45,60])
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/K_A_1_0.mat'
data_arr = data_read(file_path)
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
plt_envelope_spectrum(vib_arr, fs=42000, xlim=2000, vline=[15,30,45,60])
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/F_B_1_0.mat'
data_mat = loadmat(file_path)
data_arr = data_mat['data']
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
plt_envelope_spectrum(vib_arr, fs=42000, xlim=2000, vline=[15,30,45,60])
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/H_H_5_0.mat'
data_mat = loadmat(file_path)
data_arr = data_mat['data']
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/R_U_5_0.mat'
data_mat = loadmat(file_path)
data_arr = data_mat['data']
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/R_M_5_0.mat'
data_mat = loadmat(file_path)
data_arr = data_mat['data']
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/S_W_5_0.mat'
data_mat = loadmat(file_path)
data_arr = data_mat['data']
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/V_U_5_0.mat'
data_mat = loadmat(file_path)
data_arr = data_mat['data']
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)0
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/B_R_5_0.mat'
data_mat = loadmat(file_path)
data_arr = data_mat['data']
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
file_path = r'E:\03-公开数据集\渥太华大学定速和变速电机故障振动和声音数据集\University of Ottawa Electric Motor Dataset – Vibration and Acoustic Faults under Constant and Variable Speed Conditions (UOEMD-VAFCVS)\3_MatLab_Data_Files\1_Unloaded_Condition/F_B_5_0.mat'
data_mat = loadmat(file_path)
data_arr = data_mat['data']
vib_arr = data_arr[:,0]
plt_time_domain(vib_arr)
plt_fft_img(vib_arr, fs=42000, xlim=2000)
编辑:李正平
校核:陈凯歌、赵栓栓、曹希铭、赵学功、白亮、任超、Tina、陈宇航、陈莹洁、王金、赵诚、肖鑫鑫
该文资料搜集自网络,仅用作学术分享,不做商业用途,若侵权,后台联系小编进行删除
来源:故障诊断与python学习