齿轮箱监测数据管理与故障分析【附代码】
✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。
✅ 专业定制毕设、代码
✅如需沟通交流,查看文章底部二维码
(1)多神经网络交叉注意力故障诊断模型:
设计CNN-Transformer提取振动信号多尺度空间特征,再通过双向长短期记忆网络捕捉时序依赖,最后引入交叉注意力机制融合时域特征与频域特征(快速傅里叶变换和变分模态分解的频谱)。交叉注意力以时域特征为Query,频域特征为Key/Value,有效突出故障调制边带。在齿轮箱实测数据集(含齿根裂纹、缺齿、磨损)上,诊断准确率97.2%,相比单一CNN模型高8.6%。
(2)PyQt5监测数据管理系统:
开发了基于Python的数据管理软件,包含数据录入(支持手动输入、批量导入csv)、数据查询(按时间、设备编号、故障类型组合筛选)、数据可视化(时域波形、频谱、包络谱实时绘图)。系统采用多线程架构,采集与诊断分离,避免界面卡顿。内置SQLite数据库,存储原始信号和特征数据,查询响应时间低于200ms。还提供了报警日志功能,当实时诊断结果异常时自动记录并弹窗。
(3)变分模态分解与傅里叶变换联合特征提取:
对一维振动信号先进行变分模态分解,选取能量最高的3个模态重构,再对重构信号做快速傅里叶变换得到频谱。同时计算原始信号的时域统计特征(均值、方差、峭度、峰值因子、脉冲因子等17维)。将所有特征拼接后送入诊断网络。在1000条测试样本上,联合特征比单一特征准确率提升5.2%。系统已部署于某齿轮传动厂,连续运行30天无误报,成功预警2起早期轴承故障。
import sys import numpy as np import torch import torch.nn as nn from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QPushButton from PyQt5.QtCore import QThread, pyqtSignal import pyqtgraph as pg class CrossAttentionFusion(nn.Module): def __init__(self, dim=256, num_heads=8): super().__init__() self.mha = nn.MultiheadAttention(dim, num_heads, batch_first=True) def forward(self, time_feat, freq_feat): # time_feat: [B, L, D], freq_feat: [B, L, D] fused, attn = self.mha(query=time_feat, key=freq_feat, value=freq_feat) return fused.mean(dim=1) class CNNTransformerBiLSTM(nn.Module): def __init__(self, input_len=1024, num_classes=7): super().__init__() self.cnn = nn.Sequential(nn.Conv1d(1, 32, 3, padding=1), nn.ReLU(), nn.MaxPool1d(2), nn.Conv1d(32,64,3,padding=1), nn.ReLU()) self.transformer = nn.TransformerEncoderLayer(d_model=64, nhead=4, batch_first=True) self.lstm = nn.LSTM(64, 128, bidirectional=True, batch_first=True) self.cross_attn = CrossAttentionFusion(256) self.classifier = nn.Linear(256, num_classes) def forward(self, time_sig, freq_sig): # time_sig: [B, 1, L] cnn_out = self.cnn(time_sig) # [B,64, L/2] cnn_out = cnn_out.transpose(1,2) # [B, L/2, 64] trans_out = self.transformer(cnn_out) lstm_out, _ = self.lstm(trans_out) # [B, seq, 256] time_feat = lstm_out # freq_sig: [B, F] 假设已处理为与time_feat同维度 freq_feat = freq_sig.unsqueeze(1).expand(-1, lstm_out.size(1), -1) fused = self.cross_attn(time_feat, freq_feat) return self.classifier(fused) class DataManagerThread(QThread): data_received = pyqtSignal(np.ndarray) def run(self): # 模拟实时数据采集 import time while True: fake_data = np.random.randn(1024) self.data_received.emit(fake_data) time.sleep(0.1) class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle('齿轮箱监测系统') self.table = QTableWidget(self) self.btn = QPushButton('查询', self) self.plot_widget = pg.PlotWidget(self) # 布局等略如有问题,可以直接沟通
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
