# detect **Repository Path**: forget-w/detect ## Basic Information - **Project Name**: detect - **Description**: 轴承检测是工业中非常重要的一项任务,本仓库为软件代码工程。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-14 - **Last Updated**: 2024-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 引言 ### 项目说明 轴承作为工业领域中应用极为广泛的机械组件,其高效且稳定的运行对于保障整个机械设备的可靠性至关重要。然而,在实际的工业应用中,由于灾难性故障或偶然性机械故障的数据量相对较少,这导致了数据在数量上的极度不平衡以及分布上的不一致性。因此,在面对数据不平衡的挑战时,如何稳定且准确地检测滚动轴承的异常状态,已成为当前研究领域中的一个热点问题。 ### 轴承故障分类 - 磨损 ![轴承磨损检测的几种技术办法-西马力仪器](README.assets/20220415124433_42894.jpg) - 疲劳 ![表面疲劳磨损_360百科](README.assets/t01251bde2a7b02c397.jpg) - 过热 ![轴承过热 的图像结果](README.assets/OIP.QoaV8TcOmb-Qm0487pyv8AHaD9w=306&h=180&c=7&r=0&o=5&dpr=1.4&pid=1.jpeg) - 松动 ![轴承松动故障 的图像结果](README.assets/OIP.7LQ9MREWhSZTz4_j9MO_sgAAAAw=249&h=176&c=7&r=0&o=5&dpr=1.4&pid=1.jpeg) - 缺乏润滑 ![image-20240514164759251](README.assets/image-20240514164759251-171567648052210.png) - 密封损坏 ![热负荷会造成机械密封件表面材质的损坏?](README.assets/20171211114266556655-171567658969014.jpg) ### 综述 本项目是对6004轴承振动数据的采集、分析与数据可视化。使用三轴振动温度传感器、PHM收集数据。使用python进行数据分析。 ## 配置说明 ### 硬件配置 采用竞业达公司提供的三轴振动温度传感器、PHM(故障预测与健康管理)试验台基于RS485通信接口按照Modbus通信协议,采集6004轴承振动数据。 - 三轴振动温度智能传感器采用 RS485 链路上的 Modbus-RTU 协议进行通讯 - 试验台是一种用于模拟和测试机械设备,特别是轴承等关键部件的运行状态,以预测其故障和剩余使用寿命的实验设备。 ### 软件配置 使用python进行编写数据可视化和数据分析训练模型。QT开发GUI界面。git和Gitee实现项目管理和代码托管。 - Python及PyCharm - Git和Gitee - QT5开发GUI界面 ### 文献引用 轴测检测的故障评估方法参考知网一些论文。 引用论文如下 - 一种基于数据驱动的轴承异常检测与故障评估方法。作者:曾继宇 - 利用轴承检测信息进行压缩机的故障诊断与分析 作者:李洪明 ## 项目实现思路demo实例 ### 2获取传感器的数据 详细内容参考传感器的说明文档,已读寄存器为例(03H功能吗) #### **主机发送的03H命令包括:** 1. 从机地址:指定要通信的从设备的地址。 2. 功能码(03H):表示读取保持寄存器的命令。 3. 寄存器起始地址:指定要读取的保持寄存器的起始地址。 4. 读取数量:指定要读取的寄存器数量。 5. CRC校验码:用于确保数据传输的完整性和正确性。 #### **从机应答的信息包括:** 1. 从机地址:确认应答来自正确的从设备。 2. 功能码(03H):确认响应与请求的命令相匹配。 3. 寄存器数据:从指定的起始地址开始,连续的寄存器数据块。 4. CRC校验码:用于校验数据的完整性和正确性。 下面是一个使用python采集的数据实例 ```python import serial import threading import time # 配置串口 serial_port = 'COM7' baud_rate = 9600 timeout = 1 # 打开串口 ser = serial.Serial(serial_port, baud_rate, timeout=timeout) def read_serial(): while True: if ser.in_waiting >= 13: packet = ser.read(13) if packet[0] == 0x01: process_packet(packet) else: print("Error: Incorrect start byte.") def process_packet(packet): data1=int.from_bytes([packet[3],packet[4]],'big') data2=int.from_bytes([packet[5],packet[6]],'big') data3=int.from_bytes([packet[7],packet[8]],'big') data4=int.from_bytes([packet[9],packet[10]],'big') #print("Received valid packet:", packet.hex()) print(f"data1={data1}data2={data2}data3={data3}data4={data4}") # 在单独的线程中读取串口数据 read_thread = threading.Thread(target=read_serial) read_thread.start() # 主线程用于发送数据 try: while True: data = b'\x01\x03\x00\x69\x00\x04\x94\x15' ser.write(data) #print("Sent packet:", data.hex()) time.sleep(1) except KeyboardInterrupt: ser.close() ``` ``` data1=0data2-0data3=0data4-0data1=0data2=0data3=0data4-0data1=ldata2=0data3=ldata4-0data1=ldata2=ldata3ldata4=1datal=ldata2-0data3=ldata4-0datal=ldata2=ldata3=ldata4-0datal=ldata2-0data3=ldata4-0datal=ldata2=ldata3=ldata4=1data1=0data2=0data3=0data4=0data1=0data2=0data3=0data4=0datal=ldata2=ldata3=ldata4-0data1=ldata2=0data3=ldata4-0datal=ldata2=ldata3=ldata4-0data1=0data2=0data3=0data4-0data1=ldata2=ldata3=ldata4-0data1=0data2-0data3-0data4=0datal=ldata2=0data3=ldata4-0 ``` ### 分析算法 轴承检测的分析算法主要用于从传感器收集的数据中识别和预测轴承的故障,以下是几种常见的轴承故障检测算法: 1. **傅里叶变换(FFT)**:这是一种将信号从时间域转换到频率域的数学方法,用于识别轴承故障的特征频率。 2. **小波变换(Wavelet Transform)**:用于分析非平稳信号,能够同时提供信号的时间与频率信息,适合于轴承故障的早期检测。 3. **谱峭度(Spectral Kurtosis)**:一种衡量信号峭度的统计方法,用于增强轴承故障特征,减少噪声干扰。 4. **自适应滤波器(如Wiener Filter)**:通过估计信号和噪声的统计特性来增强信号中的有用成分,常用于噪声环境下的故障检测。 5. **神经网络(如卷积神经网络CNN)**:通过学习历史数据,能够识别复杂的模式和关系,适用于复杂环境下的故障分类。 6. **机器学习算法(如支持向量机SVM)**:利用训练数据集学习故障特征,用于分类和预测轴承的状态。 7. **包络谱分析**:通过包络线检测方法识别轴承故障产生的冲击信号,常用于检测轴承的早期磨损。 8. **深度学习**:使用多层神经网络自动提取特征并进行分类,适用于大规模数据集的故障检测。 每种算法都有其优势和应用场景,选择合适的算法需要考虑数据的特性、计算资源和实时性要求。 ----- 轴承检测中,特征频率的计算对于识别轴承故障类型和严重程度至关重要。以下是一些基本的轴承特征频率及其计算方法: 1. **基本频率(BPFO, Ball Pass Frequency Outer Race)**:当滚动体通过外圈时产生,计算公式如下: $$BPFO = \frac{2 \times N \times Z}{60} $$ 其中 \( N \) 是轴承的转速(单位:rpm),\( Z \) 是滚动体的数量。 2. **基本频率(BPFI, Ball Pass Frequency Inner Race)**:当滚动体通过内圈时产生,计算公式如下: $$BPFI = \frac{2 \times N \times Z}{60}$$ 这个公式与BPFO相同,但实际应用中,由于内圈和外圈的尺寸不同,可能需要考虑内圈的直径。 3. **滚动体自转频率(BSF, Ball Spin Frequency)**:滚动体自转产生的频率,计算公式如下: $$BSF = \frac{N \times Z}{60} $$ 4. **特征频率的谐频**:轴承故障分析中,经常需要考虑特征频率的倍频和分数频率。 5. **齿轮啮合频率(GF, Gear Mesh Frequency)**:如果轴承与齿轮箱配合使用,还需要考虑齿轮啮合频率及其谐频。 6. **边带频率**:在实际应用中,由于轴承的非线性特性,故障特征频率两侧常常伴随着边带频率。 7. **冲击脉冲频率(IPF, Impulse Per Fault)**:轴承元件故障时产生的冲击频率,与故障的严重程度有关。 8. **摩斯电码(Morse Code)**:轴承故障特征频率可以类比摩斯电码,其中点、划和空格分别对应不同的频率。 在实际应用中,轴承的特征频率会受到多种因素的影响,包括轴承类型、尺寸、负载、转速、润滑条件等。因此,特征频率的准确计算需要结合具体的轴承参数和工作条件。通常,这些计算会结合振动信号的频谱分析,使用傅里叶变换或小波变换等工具来实现。 ### 数据的引用 本项目利用西储大学的轴承数据进行试验的情况。试验使用了12KHZ采样率得到的驱动端故障振动数据以及正常振动数据。在原始数据集中,轴承的故障类型包括内圈、滚动体和外圈故障,这些故障是人为制造的。制造过程利用电火花加工在轴承不同部位(内圈、滚动体和外圈)制造了四种不同半径的凹坑,分别为0.007、0.0014、0.021和0.028 mils。 试验中,电机转速与轴承载荷成对设置,0hp对应1797rmp,1hp对应1772rmp,2hp对应1750rmp,3hp对应1730rmp,共四种组合。这些设置为研究不同故障类型对轴承振动特性以及电机转速和载荷对振动特性的影响提供了丰富的实验基础。 ## 项目实现方案 ### 数据可视化及上位机 使用QT5完成数据可视化的工作。 ![image-20240514161225881](README.assets/image-20240514161225881.png) ### 模型训练 通过引用凯斯西储大学的开源数据进行数据分析 ![image-20240514170056649](README.assets/image-20240514170056649-171567725791816.png) ## 技术难点 ### 神经网络训练算法 轴承故障的检测和诊断是一个复杂的过程,需要综合运用时域分析、频域分析、包络解调、小波变换等信号处理技术,以及深度学习和机器学习算法来提高诊断的准确性。此外,轴承故障的特征频率分析也是诊断中的一个重要环节,通过分析振动信号中的特征频率及其谐波,可以推断出轴承的具体故障类型。 过程中参考了深度学习的算法和关于轴承检测的论文。 ## 总结 通过监测轴承的振动、声音、温度等参数,及时发现轴承的故障迹象,预测可能的故障类型和时间,从而采取预防性维护措施,避免意外停机和设备损坏。及时检测和处理轴承故障,可以提高设备的可靠性和安全性,降低生产事故的风险。 通过以上算法,我们可以轻易地将其微系统上。对实际的轴承进行实时检测。同时我们判断出了故障轴承。