首页/文章/ 详情

HUST Gearbox公开数据集(含4种转速工况)

6月前浏览10185

继前期推荐的公开数据集:

今天给大家推荐一个齿轮箱故障公开数据集,该数据集有4种转速工况3种健康状态,诊断起来更具有挑战性。该数据集是华中科技大学沈卫明老师团队2024年公开,因此目前基于该数据集的论文不是很多,小伙伴们赶紧用起来吧!对于研究齿轮故障诊断的小伙伴们,再也不用担心写论文找不到数据啦!

最近公 众 号开通了评论区留言功能,大家还想了解什么数据集,欢迎在评论区留言

数据集基本信息

该数据集包括轴承在4种不同工况条件下的3种不同健康状态的振动信号。这些数据集是公开的,任何人都可以使用它们来验证齿轮诊断算法。使用HUST Gearbox数据集的出版物请引用以下论文
参考论文Domain Generalization for Cross-Domain Fault Diagnosis: an Application-oriented Perspective and a Benchmark Study
论文期刊:Reliability Engineering and System Safety
Doihttps://doi.org/10.1016/j.ress.2024.109964
作者:Chao Zhao(a c), Enrico Zio(b c), Weiming Shen(a)
机构
a State Key Laboratory of Digital Manufacturing Equipment and Technology, Huazhong University of Science & Technology, Wuhan 430074, China
b MINES Paris PSL University, CRC, Sophia Antipolis, France
c Energy Department, Politecnico di Milano, Milan, Italy
数据集下载https://github.com/CHAOZHAO-1/HUSTbearing-dataset
公开日期:2024年
第一作者简介:赵超,2019年毕业于中南大学,获得学士学位,目前是华中科技大学运筹与优化团队的博士生。他的主要研究方向包括工业大数据、设备智能运维和故障诊断。github主页:https://github.com/CHAOZHAO-1
通讯作者简介沈卫明(Fellow, IEEE) 1983年和1986年分别在北京交通大学获得学士和硕士学位,1996年在法国贡比涅工业大学获得博士学位。沈老师目前是华中科技大学的教授,以及加拿大西安大略大学的兼 职教授。主要研究方向为智能软件代理、无线传感器网络、物联网、大数据及其在工业中的应用。沈教授是加拿大工程院和加拿大工程学院的院士,同时也是加拿大安大略省注册工程师。
上述链接若打不开,文末有百度网盘链接。

目录

1 实验简介
1.1 齿轮箱故障实验台
1.2 实验齿轮箱
1.3 运行工况
1.4 传感器参数及其设置
1.5 采样设置
2 数据集细节
3 数据读取与展示

3.1 数据读取

3.2 绘制时域图

3.3 绘制频域图

3.4 绘制stft时频域图

1 实验简介

1.1 齿轮箱故障实验台

齿轮箱故障试验使用Spectra-Quest机械故障实验台进行,如图1所示。

图1  HUST齿轮箱数据集实验台

实验台上从左到右依次为①速度控制器、②电机、③加速度传感器、④变速箱和⑤数据采集卡。

齿轮箱3种健康状态的轴承如图2所示,分别为
  • (1) 正常
  • (2) 断齿
  • (3) 缺齿

    需要注意的是,所有故障都是人为设置的,故障是在小齿轮上。

图2  故障齿轮照片

1.2 实验齿轮箱

图3 齿轮箱的照片

图3为齿轮箱,其详细信息如下:

1.3 运行工况

实验共设置了4种不同的运行工况。运行工况(转速和负载)包括:

  • 20 Hz(1200rpm)、0.113Nm;
  • 25 Hz(1500rpm)、0.226Nm;
  • 30 Hz(1800rpm)、0.339Nm;
  • 35 Hz(2100rpm)、0.45Nm。

转速由调速装置调节,负载由负载控制装置调节。负载控制装置如图4所示。

图4  负载控制装置
1.4 传感器参数及其设置

用于数据采集的加速度传感器如图5所示,传感器参数如图6所示。具体信号采集设置如图7所示。

图5  三向加速度传感器的照片

图6  传感器参数

图7  信号采集设置

1.5 采样设置

采样频率设置为25.6 kHz。如图8所示,每次采样共记录262144个数据点(即10.2s)。

图8  文件描述

2 数据集细节

原始数据文件包括12个文件(3个健康状态乘以4个工况条件),每个文件为txt格式。例如,文件名“B_20_1”表示在20Hz和0.113Nm工况条件下发生断齿故障

故障状态用以下代码表示:
  • H:健康

  • B:断齿

  • M:缺齿

图9 文件夹数据

3 数据读取与展示

B_20_1.txt数据为例,展示其时域图、频域图、stft时频域图。

3.1 数据读取

首先是先了解如何用python读取数据。它的格式是txt,用pd.read_csv()函数读取,但还需要再处理一下。下面定义了1个data_read()函数。









































## 导入包from matplotlib import pyplot as pltfrom matplotlib import rcParamsimport numpy as npimport pandas as pdimport os
config = {    "font.family": 'serif', # 衬线字体    "font.size": 14, # 相当于小四大小    "font.serif": ['SimSun'], # 宋体    "mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New Roman差别不大    'axes.unicode_minus': False # 处理负号,即-号}rcParams.update(config)
def data_read(file_path):    """    :fun: 读取xls数据    :param file_path: 文件路径    :return df:    """    df = pd.read_csv(file_path)[13:]   # 第13行开始为加速度数据    df.columns = ['Column']    # 使用 split 方法分割每行的单元格,expand=True 会将分割后的每个元素作为单独的列返回    df_split = df['Column'].str.split('\t', expand=True)    # 将分割后的所有列转换为 float 类型    df_split = df_split.astype(float)
   # 重置索引,以便将分割后的列与原始 DataFrame 的索引对齐    df_split.reset_index(drop=True, inplace=True)
   # 现在 df_split 包含了分割后的五列数据    # 为这些新列设置列名    df_split.columns = ['Time', 'Speed', 'Acc_x', 'Acc_y', 'Acc_z']    return df_split    file_path = r'E:/03-公开数据集/HUST-gearbox-dataset/Raw data (原始数据)/B_20_1.txt'df = data_read(file_path)acc_z_arr= df['Acc_z']df

图8 一个txt文件内具体内容

可知,该数据为5列,分别为'Time', 'Speed', 'Acc_x', 'Acc_y', 'Acc_z'

3.2 绘制时域图

选择z轴的加速度传感器数据进行展示。






























##========绘制时域信号图========##def plt_time_domain(arr, fs=1600, ylabel='Amp($m/s^2$)', 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=0.2, 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()





fs = 25600file_name = r'B_20_1.txt'##=====绘制时域数据====##time_img_save_path = file_path.replace('.txt', '时域_.png')plt_time_domain(acc_z_arr, fs=fs, title=file_name, img_save_path=time_img_save_path)

共10.2s的数据,单位    。

3.3 绘制频域图




































##========绘制频域信号图========##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()





fs = 25600file_name = r'B_20_1.txt'##=====绘制频域数据====##fft_img_save_path = file_path.replace('.txt', '频域_.png')plt_fft_img(acc_z_arr, fs=fs, title=file_name, img_save_path=fft_img_save_path)

可见频率集中在中高频(2000-4000Hz)。

3.4 绘制stft时频域图


























































def plt_stft_img(arr, fs, ylabel='Amp(mg)', title='频域图', img_save_path=None, vline=None, hline=None, xlim=None):    """    :fun: 绘制stft时频域图模板    :param arr: 输入一维时域数组数据    :param fs: 采样频率    :param ylabel: y轴标签    :param title: 图标题    :return: None    """    import scipy.signal as signal    import numpy as np    import matplotlib.pyplot as plt
   f, t, nd = signal.stft(arr, fs=fs, window='hann', nperseg=128, noverlap=64,nfft=None,                           detrend=False, return_onesided=True, boundary='odd', padded=False, axis=-1)    #  fs:时间序列的采样频率,  nperseg:每个段的长度,默认为256(2^n)   noverlap:段之间重叠的点数。如果没有则noverlap=nperseg/2
   #window :字符串或元组或数组,可选需要使用的窗。    # #如果window是一个字符串或元组,则传递给它window是数组类型,直接以其为窗,其长度必须是nperseg。    # 常用的窗函数有boxcar,triang,hamming, hann等,默认为Hann窗。
   #nfft :int,可选。如果需要零填充FFT,则为使用FFT的长度。如果为 None,则FFT长度为nperseg。默认为无
   # detrend :str或function或False,可选    # 指定如何去除每个段的趋势。如果类型参数传递给False,则不进行去除趋势。默认为False。
   # return_onesided :bool,可选    # 如果为True,则返回实际数据的单侧频谱。如果 False返回双侧频谱。默认为 True。请注意,对于复杂数据,始终返回双侧频谱。
   # boundary :str或None,可选    # 指定输入信号是否在两端扩展,以及如何生成新值,以使第一个窗口段在第一个输入点上居中。    # 这具有当所采用的窗函数从零开始时能够重建第一输入点的益处。    # 有效选项是['even', 'odd', 'constant', 'zeros', None].    # 默认为‘zeros’,对于补零操作[1, 2, 3, 4]变成[0, 1, 2, 3, 4, 0] 当nperseg=3.
   # padded:bool,可选    # 指定输入信号在末尾是否填充零以使信号精确地拟合为整数个窗口段,以便所有信号都包含在输出中。默认为True。    # 填充发生在边界扩展之后,如果边界不是None,则填充为True,默认情况下也是如此。    # axis :int,可选
   # 绘制STFT时频域图    plt.figure(figsize=(12,4))    plt.pcolormesh(t, f, np.abs(nd), vmin = np.min(np.abs(nd)), vmax = np.max(np.abs(nd)))    plt.title(title)    plt.xlabel('时间(t)')    plt.ylabel('频率 (Hz)')    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()





fs = 25600file_name = r'0.5X_B_65Hz.xls'##=====绘制STFT时频域数据====##stft_img_save_path = file_path.replace('.xls', '时频域_.png')    plt_stft_img(acc_z_arr, fs=fs, img_save_path=stft_img_save_path)

与fft频域图一致,频率主要集中在中高频(2000-4000Hz)。

数据集获取方法后台回复“HUST齿轮故障数据集

大家还想要什么数据集,欢迎在留言区评论,小编尽可能的满足。



来源:故障诊断与python学习
ACTSystem振动航空pythonUM电机数字孪生控制渲染试验数控
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-05-10
最近编辑:6月前
故障诊断与python学习
硕士 签名征集中
获赞 64粉丝 66文章 140课程 0
点赞
收藏
作者推荐

故障诊断实验台 | FRT1000柔性转子故障实验台(4.6w)

很多同学因为实验数据而被困扰,目前数据来源有3方面,公开实验数据集、校企合作项目实际数据、自制实验台数据。公开实验数据集被用烂了,容易被审稿人质疑;校企合作项目实际数据缺少故障数据,数据需保密,相关信息较少;相对而言,自制实验台数据是个不错的选择,可以做加速失效实验和人为故障实验。但缺点也很明显,自己搭建实验台周期长,购买现场实验台的价格又较贵。1 实验台简介VALENIAN转子实验台是一种用来模拟旋转机械振动的试验装置。主要用于实验室验证挠性转子轴系的强迫振动和自激振动特性。它能有效地再现大型旋转机械所产生的多种振动现象。通过不同的选择改变转子转速、轴系刚度、质量不平衡、轴承的摩擦或冲击条件以及联轴节的型式来模拟机器的运行状态,由配置的检测仪表来观察和记录其振动特性。因此,本试验台为专门从事振动测试、振动研究及大专院校有关实验室提供了有效而方便的实验手段。瓦伦尼安公司有电涡流传感器、光电传感器及振动、动平衡分析仪、软件等几种测试仪表与试验台配套,使实验能很方便地描绘出波特图(幅频和相频特性曲线)、振型圆、轴心轨迹图、频谱图、趋势图、轴中心位置图及升速率图。根据试验目的可将试验台组装成几种不同型式。几种基本型式可用于:验证质量不平衡等引起的振动;验证油膜振荡理论;验证自由转子扰动;摩擦影响。 图1 FRT1000型转子实验台模型,该模型为单跨转子,即有2个转子2 实验台组成及技术参数本试验台采用直流并励电动机驱动方案,电机轴经联轴器直接驱动转子结构简单、调速范围宽,且平稳可靠。电机额定电流2.5A,输出功率250W调速器将220V AC电源整流供电机励磁电压,同时经调压器调压并整流后供电机电枢电流,手动调整调压器输出电压可实现电机 0~10000rpm范围的无级调速,升速率可达800rpm/min。FRT型是由产品代号(FRT)+跨数组成试验台长1200mm,宽108mm,高145mm,质量约45kg。转轴直径均为Ф9.5mm,有两种长度规格:320mm轴3根、500mm油膜振荡专用轴1根;最大挠曲不超过0.03mm;沿轴的轴向任何部位均可选作试验中的支承点。共配有六只转子,分为两种规格:Ф76x25mm和Ф76x19mm,质量分别为800g和600g,可根据实验需要选用。配有刚性联轴节和半挠性联轴节供选用。试验台最多可安装三跨转子,用Ф8涡流传感器测量,测点数随转子数而定,每个转子可安装x及y方向各一个测点。试验临界转速因跨度、转子质量及位置等因素而各异,参考数据如下:使用 320mm 转轴,跨度为 250mm,当一根轴上安装两个转子时,其一阶临界转速约为 4400rpm。3 实验台技术参数FRT1000转子故障模拟实验台技术参数(以单跨为例)4 实验台定制也支持实验台定制,下面为部分定制转子实验台图片:往期推荐[1] 故障诊断实验台 | PT500mini轴承齿轮箱转子故障实验台[2] 故障诊断实验台 | PT300mini微型振动故障实验台[3] 故障诊断实验台 | PT400mini齿轮轴承故障模拟实验台(1.48w)[4] 故障诊断实验台 | PT600电机电气故障实验台[5] 故障诊断实验台 | WFD1000双馈风力涡轮发电机故障模拟实验台[6] 故障诊断实验台 | PT580离心水泵故障模拟实验台[7] 航空发动机轴承数据集 | 写论文再也不用担心没数据集啦![8] 风力发电机行星齿轮箱数据集 | 写论文再也不用担心没数据集啦! 来源:故障诊断与python学习

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈