当前位置: 首页 > news >正文

齿轮典型故障精确建模与智能诊断【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。
✅ 专业定制毕设、代码
如需沟通交流,查看文章底部二维码


(1)齿轮齿根裂纹与断齿精确动力学建模:

基于有限元方法构建单对齿轮三维实体模型,在齿根圆处预制不同长度(1mm、2mm、3mm)和不同角度(30°、45°、60°)的裂纹,通过瞬态动力学求解器计算啮合过程中的应力分布及振动加速度响应。仿真结果显示,裂纹深度超过2mm时齿根应力集中系数达到3.2,边频带幅值比正常齿轮高出11dB。断齿故障模型移除一个完整轮齿,冲击能量集中在啮合频率的奇数倍频,仿真数据与试验台实测值误差小于5%。

(2)刚柔耦合多体动力学箱体模型:

建立齿轮箱刚柔耦合模型,将箱体视为柔性体(模态中性文件导入),齿轮视为刚体。在不同转速(500-3000rpm)和负载(10-100Nm)下仿真,提取箱体表面测点振动信号。揭示了转速增加造成边频带展宽,负载增加使啮频幅值线性增长但边频带相对幅值下降的规律。生成108种工况仿真数据,填补了小样本条件下齿轮故障数据空白。

(3)融合仿真与真实数据的CBAM-STCN诊断网络:

针对真实样本稀缺,将仿真数据与少量真实数据混合训练。模型采用时间卷积网络(TCN)为主干,嵌入卷积块注意力模块(CBAM)同时关注通道和空间特征。当真实数据每类仅20个时,加入仿真数据(每类200个)后诊断准确率从67%提升至94.5%。在两种未知工况下准确率分别达94.5%和93.7%,且对不同程度裂纹(轻度、中度、重度)的分类准确率均超过90%,优于纯真实数据训练的模型(82%)。

import numpy as np from scipy.signal import find_peaks import torch import torch.nn as nn from torch.nn.utils import weight_norm class Chomp1d(nn.Module): def __init__(self, chomp_size): super().__init__() self.chomp_size = chomp_size def forward(self, x): return x[:, :, :-self.chomp_size].contiguous() class TemporalBlock(nn.Module): def __init__(self, n_inputs, n_outputs, kernel_size, stride, dilation, padding, dropout=0.2): super().__init__() self.conv1 = weight_norm(nn.Conv1d(n_inputs, n_outputs, kernel_size, stride=stride, padding=padding, dilation=dilation)) self.chomp1 = Chomp1d(padding) self.relu1 = nn.ReLU() self.dropout1 = nn.Dropout(dropout) self.conv2 = weight_norm(nn.Conv1d(n_outputs, n_outputs, kernel_size, stride=stride, padding=padding, dilation=dilation)) self.chomp2 = Chomp1d(padding) self.relu2 = nn.ReLU() self.dropout2 = nn.Dropout(dropout) self.net = nn.Sequential(self.conv1, self.chomp1, self.relu1, self.dropout1, self.conv2, self.chomp2, self.relu2, self.dropout2) self.downsample = nn.Conv1d(n_inputs, n_outputs, 1) if n_inputs != n_outputs else None self.relu = nn.ReLU() def forward(self, x): out = self.net(x) res = x if self.downsample is None else self.downsample(x) return self.relu(out + res) class CBAM_STCN(nn.Module): def __init__(self, num_inputs=1, num_channels=[32,64,128], kernel_size=3, dropout=0.2, num_classes=5): super().__init__() layers = [] num_levels = len(num_channels) for i in range(num_levels): dilation = 2 ** i in_channels = num_inputs if i == 0 else num_channels[i-1] out_channels = num_channels[i] layers += [TemporalBlock(in_channels, out_channels, kernel_size, stride=1, dilation=dilation, padding=dilation*(kernel_size-1), dropout=dropout)] self.tcn = nn.Sequential(*layers) self.cbam = CBAM(num_channels[-1], reduction=8) self.fc = nn.Linear(num_channels[-1], num_classes) def forward(self, x): x = self.tcn(x) x = self.cbam(x) x = x.mean(dim=-1) return self.fc(x) class CBAM(nn.Module): def __init__(self, channels, reduction=8): super().__init__() self.avg_pool = nn.AdaptiveAvgPool1d(1) self.max_pool = nn.AdaptiveMaxPool1d(1) self.fc = nn.Sequential(nn.Linear(channels, channels//reduction, bias=False), nn.ReLU(), nn.Linear(channels//reduction, channels, bias=False)) self.sigmoid = nn.Sigmoid() def forward(self, x): b, c, _ = x.size() avg = self.avg_pool(x).view(b,c) max = self.max_pool(x).view(b,c) avg_out = self.fc(avg) max_out = self.fc(max) att = self.sigmoid(avg_out + max_out).view(b,c,1) return x * att


如有问题,可以直接沟通

👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇

http://www.jsqmd.com/news/722264/

相关文章:

  • 读已提交和可重复读到底有啥不一样?为什么RC就不能解决不可重复读和幻读呢?
  • AI Agent如何重构跨境物流的决策?
  • Umi-OCR终极指南:免费开源离线OCR工具,5分钟开启高效文字识别之旅
  • 算法训练营第二十天|150. 逆波兰表达式求值
  • 优化.NET依赖注入中的设置缓存
  • 九部门联合布局:开启3.5万亿的“超级物联网”计划
  • 别再死记硬背了!一张图看懂AXI4握手时序,附赠读/写通道依赖关系速查表
  • 物联网电主轴智能运维系统【附代码】
  • Moneta Markets亿汇:美元走强日元宽幅震荡
  • 医疗电子PCB设计:挑战、标准与关键技术解析
  • LwIP(轻量级IP协议栈)概述
  • 机器学习中的特征工程与TensorFlow模型
  • 增程式PHEV能量管理仿真——从规则策略到优化算法
  • 卡梅德生物技术快报|杂交瘤测序实战:SP2/0 假轻链酶切去除与序列验证代码
  • 2026年最新英语作文批改手机APP 帮学生快速提分的实用神器
  • 别再全网乱搜了!RAS官方模板下载与IROS/ICRA投稿避坑全指南(附会议排名)
  • 2026年Q2广州白云区搬家公司实测排行一览 - 优质品牌商家
  • 【本地部署】2026年Hermes Agent/OpenClaw7分钟超简易搭建流程
  • 时间戳处理:从Pandas到BigQuery的无缝转换
  • PHP应用容器化迁移至统信UOS与openEuler(国产操作系统适配终极手册)
  • Horos:如何免费获得专业级macOS医疗影像处理能力
  • 《Windows Internals》读书笔记 10.3.7:UBPM 的任务触发与状态管理
  • 别再只会用runOnUiThread了!Android子线程更新UI的5种正确姿势(附Handler/LiveData对比)
  • 指纹锁核心技术拆解与场景适配全推荐 - 优质品牌商家
  • wireshark学习-ARP
  • CANoe Analysis功能区保姆级教程:从Trace窗口到Graphics,手把手教你高效分析总线数据
  • “给我发个元红包“:一条群消息背后的 AI 安全危机
  • 深入探讨Rust中指针的安全性
  • 魔兽争霸3终极兼容性修复指南:5分钟解决所有现代系统运行问题
  • 从零到部署:用Uvicorn和Docker打包你的FastAPI应用(附Nginx配置)