造纸机烘缸轴承故障预测【附代码】
✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅ 如需沟通交流扫描文章底部二维码。1烘缸表面温度分布特征与振动联合诊断造纸机烘缸轴承故障会导致缸体表面温度分布不均匀。采用红外热像仪采集烘缸表面的温度分布图分辨率320x240提取温度场的统计特征均值、方差、偏度、峰度、以及水平方向温度梯度的最大变化率。同时采集靠近轴承座的加速度信号提取包络谱中的轴承特征频率幅值。将温度特征和振动特征拼接后使用主成分分析降维到20维。在1760型造纸机上模拟了轴承内圈故障和外圈故障。联合特征对故障类型分类准确率为95.7%而单独振动特征为88.3%单独温度特征为79.2%。2基于长短时记忆网络的轴承剩余寿命预测烘缸轴承的退化过程缓慢可利用历史振动和温度数据预测剩余寿命。构建一个双向LSTM模型输入为过去7天的每日振动均方根、峰值、温度均值和温差共4个指标输出为未来剩余天数。训练数据来自一台从新轴承到失效的全寿命运行数据约180天。模型的预测绝对误差平均为8.6天R2分数为0.92。当模型预测剩余寿命低于15天时发出更换预警实际提前检出率为83%。3基于变分自编码器的异常检测与健康指数构建正常运行的烘缸轴承数据容易获取而故障数据稀缺。训练一个变分自编码器VAE仅使用正常状态下的振动频谱和温度分布特征作为输入。编码器输出隐变量的均值和方差解码器重构输入。通过计算重构误差和隐变量的KL散度构造一个健康指数HI 重构误差 β*KL散度。当HI超过阈值正常样本99.5%分位数时判定为异常。在实际运行中该HI在轴承出现早期剥落前20天就开始缓慢上升比传统阈值法提前约12天报警。,import torchimport torch.nn as nnimport torch.nn.functional as Fimport numpy as npfrom sklearn.decomposition import PCAclass BiLSTM_RUL(nn.Module):def __init__(self, input_dim4, hidden_dim64, num_layers2):super().__init__()self.lstm nn.LSTM(input_dim, hidden_dim, num_layers, batch_firstTrue, bidirectionalTrue)self.fc nn.Linear(hidden_dim*2, 1)def forward(self, x):out, _ self.lstm(x) # (B, T, H*2)out out[:, -1, :] # 取最后一个时间步return self.fc(out)class VAE(nn.Module):def __init__(self, input_dim20, hidden_dim32, latent_dim8):super().__init__()self.encoder nn.Sequential(nn.Linear(input_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, hidden_dim),nn.ReLU())self.fc_mu nn.Linear(hidden_dim, latent_dim)self.fc_logvar nn.Linear(hidden_dim, latent_dim)self.decoder nn.Sequential(nn.Linear(latent_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, input_dim))def encode(self, x):h self.encoder(x)mu self.fc_mu(h)logvar self.fc_logvar(h)return mu, logvardef reparameterize(self, mu, logvar):std torch.exp(0.5*logvar)eps torch.randn_like(std)return mu eps*stddef decode(self, z):return self.decoder(z)def forward(self, x):mu, logvar self.encode(x)z self.reparameterize(mu, logvar)recon self.decode(z)return recon, mu, logvardef vae_loss(recon, x, mu, logvar, beta0.1):mse F.mse_loss(recon, x, reductionsum)kld -0.5 * torch.sum(1 logvar - mu.pow(2) - logvar.exp())return mse beta * klddef health_index(recon, mu, logvar, x, beta0.1):mse F.mse_loss(recon, x, reductionnone).mean(dim1)kld -0.5 * (1 logvar - mu.pow(2) - logvar.exp()).sum(dim1)hi mse beta * kldreturn hiclass TemperatureVibrationFusion(nn.Module):def __init__(self, temp_dim10, vib_dim15, out_dim20):super().__init__()self.temp_net nn.Linear(temp_dim, out_dim//2)self.vib_net nn.Linear(vib_dim, out_dim//2)self.pca PCA(n_componentsout_dim)def forward(self, temp_feat, vib_feat):temp_out F.relu(self.temp_net(temp_feat))vib_out F.relu(self.vib_net(vib_feat))concat torch.cat([temp_out, vib_out], dim1)# PCA 需要手动实现这里简化用线性变换return concat如有问题可以直接沟通
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2569858.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!