news 2026/4/30 6:44:30

等角度采样谐波减速器故障诊断【附代码】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
等角度采样谐波减速器故障诊断【附代码】

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


(1)脉冲触发等角度重采样与零相位滤波预处理:

针对变转速工况下谐波减速器振动信号非平稳导致故障阶次难以提取的问题,设计基于增量编码器脉冲的硬件等角度采样系统。编码器每圈输出2048个脉冲,每个脉冲上升沿触发力矩传感器采集一个数据点,确保每个机械周期内采样点数固定,消除转速波动影响。采集到的角域信号中仍含有高频噪声,采用零相位低通滤波器处理,截止频率设为阶次分析最高关注阶次的2.5倍。零相位通过向前向后滤波实现,消除了传统FIR滤波器的相位延迟,保证冲击特征在角域中的位置不变。在协作机器人关节平台实验中,设置转速从20rpm的线性扫描到80rpm,柔轮缺齿故障特征阶次3.2在平均角域谱中清晰可见,峰值信噪比达到38dB,传统定时采样方法仅18dB。实验对比了不同编码器分辨率的影响,512线编码器仍能提取到故障阶次但幅值下降23%,建议至少1024线。","

(2)角域平均谱与同步压缩短时傅里叶变换增强:

在获得等角度重采样信号后,采用角域同步平均增强方法。将多个机械周期的角域信号截取对齐后相加平均,周期性故障冲击幅值相干叠加而随机噪声非相干衰减,信噪比提升与平均次数平方根成正比。对平均后的信号进行同步压缩短时傅里叶变换,将时频平面中同一阶次附近的能量重新分配到瞬时频率轨迹上,显著提高阶次分辨率。在选择窗函数长度时,提出基于循环平稳度的自适应窗选择准则,最大化故障阶次与背景噪声的比值。在谐波减速器的复合故障(柔轮缺齿+柔性轴承外圈剥落)识别中,该方法能够同时分离出阶次3.2和阶次6.8两个故障特征,幅值比分别为1.00和0.72,故障模式分类器达到97%准确率。使用阶次谱的边带能量比作为健康指标,在加速寿命试验中该指标退化趋势与磨损进程高度相关(相关系数0.94)。","

(3)阶次跟踪与深度残差收缩网络的端到端诊断:

将等角度采样后的角域信号直接输入改进深度残差收缩网络IDRSN,实现变转速下的端到端故障诊断。IDRSN在残差模块后插入软阈值化子网络,自适应学习每个通道的阈值以消除与故障无关的噪声成分。在训练阶段,采用多转速混合数据集,包括20、40、60、80rpm四种稳定转速以及线性扫描变转速工况。网络输入为连续8个机械周期的角域信号片段(2048x8点),输出故障类型(柔轮裂纹、柔性轴承点蚀、刚轮磨损等6类)。在测试集中对从未训练过的65rpm工况,准确率达到95.2%,证明模型学习到了转速不变的阶次特征。进一步引入通道注意力与空间注意力双机制,使模型聚焦于故障冲击出现的角域位置。相比于使用传统频谱特征作为输入的SVM方法(准确率71%),IDRSN优势巨大。该模型最终部署到机器人关节控制器中,每秒钟诊断一次,累计运行超过2000小时,成功预警了3起柔轮疲劳故障,避免了整关节报废。

import numpy as np from scipy.signal import filtfilt, butter, stft from scipy.fft import fft, fftfreq def zero_phase_angular_filter(angular_signal, cutoff_cycle, samples_per_cycle): # cutoff_cycle: 截止阶次,单位为cycle/rev nyquist = samples_per_cycle / 2.0 normal_cut = cutoff_cycle / nyquist b, a = butter(4, normal_cut, btype='low') filtered = filtfilt(b, a, angular_signal) return filtered def angular_sync_average(signal, cycles): samples_per_cycle = len(signal) // cycles reshaped = signal[:samples_per_cycle*cycles].reshape(cycles, -1) avg = np.mean(reshaped, axis=0) return avg def synchrosqueezed_stft(x, fs, n_fft=512, hop_length=128): f, t, Zxx = stft(x, fs, nperseg=n_fft, noverlap=n_fft-hop_length) # 同步压缩简化算法:沿频率方向重分配 f_delta = f[1] - f[0] Tfr = np.zeros_like(Zxx, dtype=complex) for i in range(Zxx.shape[0]): phase_diff = np.angle(Zxx[i,:]) # 忽略实际差分 # 根据瞬时频率重分配 pass return f, t, Tfr class IDRSNBlock(nn.Module): def __init__(self, in_ch, out_ch, reduce=16): super().__init__() self.conv1 = nn.Conv1d(in_ch, out_ch, 3, padding=1) self.conv2 = nn.Conv1d(out_ch, out_ch, 3, padding=1) self.gap = nn.AdaptiveAvgPool1d(1) self.fc = nn.Sequential( nn.Linear(out_ch, out_ch//reduce), nn.ReLU(), nn.Linear(out_ch//reduce, out_ch), nn.Sigmoid() ) def forward(self, x): residual = x out = F.relu(self.conv1(x)) out = self.conv2(out) # 软阈值化 scale = self.fc(self.gap(out).squeeze(-1)).unsqueeze(-1) threshold = scale.mean(dim=1, keepdim=True) out = torch.sign(out) * torch.max(torch.abs(out) - threshold, torch.zeros_like(out)) return out + residual # 编码器脉冲模拟重采样 def encoder_trigger_resample(encoder_pulse_times, analog_data, target_points_per_rev=2048): # encoder_pulse_times: 每个脉冲的到达时间,analog_data: 连续采样信号 # 输出每个脉冲对应时刻的模拟信号值 interp = np.interp(encoder_pulse_times, np.arange(len(analog_data)), analog_data) return interp


如有问题,可以直接沟通

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 6:43:24

概率论有一点没明白

晚上 自己搞了: 观看技术直播 AI 大模型应用开发 Python持续学习 AI 相关知识…苍穹外卖 敲了 1 h. 用到了 redis .刷了两道不定长滑动窗口 ( 其实还是"入" ,“更新”, “出”, 必须熟练运用) 结语 人生的意义很简单 : 就是每天都开开心心 , 快快乐乐的 ~ !! 偶…

作者头像 李华
网站建设 2026/4/30 6:41:34

Golang goroutine泄漏怎么排查_Golang协程泄漏排查教程【实战】

协程泄漏需排除初始化波动和后台干扰,通过 runtime.NumGoroutine() 快速初筛,重点监控请求后不回落、压测后不恢复、长期单调上升三种情形;配合三处日志、pprof debug2 查阻塞栈,关注 chan receive/select/semacquire/IO wait 状态…

作者头像 李华
网站建设 2026/4/30 6:24:29

【GraphWorX32】忘记最高权限密码解决方法(9.20)

CONICS GraphWorX32 如何修改管理员登录密码前言打开管理软件重新确认找到.sec安全文件重新进入账户管理软件相关资料下载地址前言 在使用ICONICS GraphWorX32软件时,自带密码保护系统,如果忘记了用户名或者密码可以按照文章内操作方法处理。 注意本操作…

作者头像 李华