✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅ 如需沟通交流扫描文章底部二维码。1静电传感器有限元仿真与最优安装位置确定为了实现对滚动轴承非接触式静电监测首先对静电传感器进行设计并通过COMSOL软件进行有限元仿真分析。选择圆环式静电探头建立包含轴承座、滚动体和传感器的三维静电模型施加不同转速下的摩擦荷电边界条件。仿真计算传感器的轴向灵敏度沿轴承轴向移动时的输出变化和径向灵敏度沿径向距离变化的输出变化。结果表明在轴承外圈附近且靠近滚动体载荷区的轴向位置具有最高的灵敏度和最小的方向依赖性。根据仿真结果在轴承故障诊断实验台的合适位置加工安装孔并实际布置静电传感器。同时搭建了包含振动加速度计、光电转速计和数据采集卡的数据采集系统加工了内圈、外圈、滚动体三种故障类型的轴承。通过同步采集静电信号和振动信号为后续分析提供了真实有效的实验数据。2谱插值与小波阈值联合去噪方法抑制工频和背景噪声静电信号中常混有50Hz工频干扰及随机背景噪声这会严重干扰故障特征提取。为此提出一种联合去噪方法。首先对原始静电信号进行快速傅里叶变换在频谱上识别出工频及其谐波频率成分采用谱插值法将工频点的幅值用其两侧相邻频点幅值的线性插值替代从而滤除窄带干扰。然后针对宽带的背景噪声和随机脉冲采用基于控制图的小波阈值收缩算法。对信号进行多尺度小波分解得到近似系数和细节系数。在每个细节系数尺度上计算系数绝对值的均值和控制限如均值加三倍标准差将超过控制限的系数视为随机脉冲并予以保留因为它们可能包含故障冲击而低于控制限的系数进行软阈值收缩。仿真和实际信号处理表明联合方法能够在保留故障冲击成分的同时显著提高信噪比为后续时频分析提供了干净的信号。3时频谱能量差分与小波图像分解注意力卷积网络针对静电信号非平稳、故障特征随时间变化的特点提出一种基于时频谱能量差分和注意力卷积网络的故障诊断方法。首先采用短时傅里叶变换将去噪后的静电信号转换为二维时频谱矩阵然后计算每个时间点相邻频率区间的能量差分得到能量变化率矩阵这可以突出故障出现时引起的瞬态能量波动。接着对能量差分矩阵进行二维离散小波变换分解为逼近子带、水平细节子带和垂直细节子带从而从不同空间频率和方向描述故障模式。将这三个子带分别输入到嵌入通道注意力和空间注意力机制的卷积神经网络中注意力模块自适应地加权重要特征图最后融合三个分支的特征进行分类。在自建静电信号数据集上进行对比试验单用CNN准确率为86.5%加入时频谱能量差分后提升至89.5%再加入小波分解和注意力模块后达到92.1%验证了方法对微弱故障特征的有效提取能力。基于该算法利用上位机开发平台LabVIEW构建了故障诊断界面实现了数据采集、滤波、时频分析和诊断结果的一体化流程。import numpy as np import pywt from scipy.signal import spectrogram, stft import torch import torch.nn as nn # 谱插值滤除工频 def spectral_interpolation(signal, fs, target_freq50, width2): fft_vals np.fft.fft(signal) freqs np.fft.fftfreq(len(signal), 1/fs) idx np.argmin(np.abs(freqs - target_freq)) for i in range(-width, width1): if i ! 0: fft_vals[idx] np.mean(fft_vals[idx-1:idx1]) # 简单插值 return np.fft.ifft(fft_vals).real # 基于控制图的小波阈值去噪 def wavelet_thresholding_control_chart(signal, waveletdb4, level5, sigma3): coeffs pywt.wavedec(signal, wavelet, levellevel) new_coeffs [coeffs[0]] # 近似系数保留 for detail in coeffs[1:]: median np.median(detail) mad np.median(np.abs(detail - median)) / 0.6745 threshold sigma * mad # 控制图超过阈值则认为是信号成分否则收缩 # 软阈值处理 new_detail np.sign(detail) * np.maximum(np.abs(detail) - threshold, 0) new_coeffs.append(new_detail) return pywt.waverec(new_coeffs, wavelet) # 时频谱能量差分 小波分解 注意力CNN class AttentionCNN(nn.Module): def __init__(self, num_classes3): super().__init__() self.conv nn.Sequential( nn.Conv2d(3, 16, 3, padding1), nn.ReLU(), nn.MaxPool2d(2), # 输入3通道逼近水平垂直 nn.Conv2d(16, 32, 3, padding1), nn.ReLU(), nn.MaxPool2d(2) ) self.ca nn.Sequential(nn.AdaptiveAvgPool2d(1), nn.Flatten(), nn.Linear(32, 32), nn.Sigmoid()) self.sa nn.Conv2d(32, 1, 1) self.fc nn.Linear(32 * 7 * 7, num_classes) def forward(self, x): feat self.conv(x) # 通道注意力 ca_weights self.ca(feat).view(-1, 32, 1, 1) feat feat * ca_weights # 空间注意力 sa_map torch.sigmoid(self.sa(feat)) feat feat * sa_map feat feat.view(feat.size(0), -1) return self.fc(feat) # 时频能量差分特征提取 def tf_energy_diff(signal, fs, nperseg128, noverlap64): f, t, Sxx spectrogram(signal, fs, npersegnperseg, noverlapnoverlap) Sxx np.abs(Sxx) # 能量谱 # 沿时间方向计算差分 diff np.diff(Sxx, axis1) # 频率轴不变时间轴相邻帧差分 return diff # DWT分解得到三个子带 def get_dwt_subbands(img, waveletdb1): # img 为二维能量矩阵 LL, (LH, HL, HH) pywt.dwt2(img, wavelet) return LL, LH, HL, HH # 选择LL, LH, HL作为三通道输入如有问题可以直接沟通