news 2026/4/29 18:01:14

声发射技术干气密封摩擦润滑状态与泄漏检测系统【附代码】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
声发射技术干气密封摩擦润滑状态与泄漏检测系统【附代码】

博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。
✅ 如需沟通交流,扫描文章底部二维码。


(1)基于免疫算法优化变分模态分解的声发射信号降噪:

针对干气密封运行时声发射信号易受机械噪声和环境干扰的问题,提出了免疫算法优化VMD参数的降噪方法。VMD的分解效果高度依赖于惩罚因子α和模态数K。传统方法需要人工试错,且针对不同工况适应性差。免疫算法模拟生物免疫系统,通过抗体-抗原亲和度评价寻找最优参数组合。亲和度函数定义为分解后各模态中心频率之间的最小间隔与重构信号信噪比的加权组合。优化后的VMD将原始声发射信号分解为若干本征模态函数,然后根据模态与原始信号的相关系数和峭度值,选择包含主要端面摩擦信息的模态进行重构。实验对比表明,IA-VMD方法相比标准VMD和EMD,信噪比提升了约5dB,尤其在低转速、轻载工况下效果显著。

(2)混沌特征分析与摩擦润滑状态识别:

基于混沌理论分析干气密封启停过程中的声发射信号,提取最大Lyapunov指数、关联维数、K熵和吸引子形态作为特征参数。最大Lyapunov指数大于0表明系统具有混沌特性,是密封端面进入混合润滑的标志;关联维数在边界润滑阶段呈现先增后减趋势,反映了摩擦面粗糙峰接触的复杂程度;K熵在流体动压润滑阶段趋于稳定,表征系统不确定性降低。将这四个特征输入到基于自注意力机制的稠密连接网络进行分类。网络首先将一维声发射信号转换为三维小波时频图(作为输入),DenseNet-CBAM模块自动提取深层特征,自注意力机制对不同时间步的特征进行加权。实验结果显示,该方法对干摩擦、边界润滑、混合润滑和流体动压润滑四种状态的识别准确率达到99.27%。

(3)声发射均方根与泄漏率的理论模型及在线检测:

建立了声发射信号均方根与泄漏率之间的理论关系模型。通过分析密封端面微间隙内的气体流动和声发射产生机理,推导出RMS值正比于泄漏率的四次方根,即Q = k1·(RMS)^(1/4) + k2。利用试验数据进行最小二乘拟合,确定了系数k1、k2。该模型在压力范围为0.5~5MPa、转速为500~8000rpm的工况下均表现良好,预测泄漏率与实际测量值的平均相对误差小于8%。基于此,开发了干气密封在线监测系统,实时采集声发射信号并计算RMS,再根据模型反推泄漏率,当泄漏率超过设定阈值时发出报警。系统还集成了温度和压力补偿模块,提高了模型的跨工况适应性。现场应用证明,该系统能够有效预警密封端面开启失效和过度磨损,保障了旋转设备的安全运行。"

import numpy as np import pywt from scipy.fft import fft from scipy.linalg import svd import tensorflow as tf from tensorflow.keras.layers import Dense, Conv2D, GlobalAvgPool2D, Multiply, Reshape # 免疫算法优化VMD参数(简化) class ImmuneOptimizer: def __init__(self, signal): self.signal = signal self.best_params = None self.best_fitness = -np.inf def fitness(self, alpha, K): # 调用VMD分解(需要vmd库或自行实现) # 此处用模拟代替 imfs = np.random.randn(K, len(self.signal)) # 计算最小中心频率间隔 centers = [] for i in range(K): f = np.abs(fft(imfs[i])) centers.append(np.argmax(f[:len(f)//2])) min_dist = np.min(np.diff(sorted(centers))) if K>1 else 1000 # 计算重构信噪比 recon = np.sum(imfs, axis=0) snr = 10*np.log10(np.var(self.signal)/np.var(self.signal-recon)) fitness = -min_dist + 0.5 * snr # 需要最大化 return fitness def immune_opt(self, pop=20, max_iter=20): # 初始化抗体群(alpha范围[100,2000], K范围[2,10]) population = np.hstack([np.random.uniform(100,2000, (pop,1)), np.random.randint(2,10, (pop,1))]) for t in range(max_iter): fitness_vals = np.array([self.fitness(p[0], int(p[1])) for p in population]) # 克隆选择 clone_num = 5 clones = [] best_idx = np.argmax(fitness_vals) for _ in range(clone_num): clones.append(population[best_idx].copy()) # 变异(逆高斯变异) for clone in clones: clone[0] += np.random.normal(0, 100) clone[0] = np.clip(clone[0], 100, 2000) clone[1] += np.random.randint(-1,2) clone[1] = np.clip(clone[1], 2, 10) # 替换最差的抗体 worst_idx = np.argmin(fitness_vals) for i, clone in enumerate(clones): if i < clone_num//2: population[worst_idx + i] = clone # 记录最优 cur_best_fit = np.max(fitness_vals) if cur_best_fit > self.best_fitness: self.best_fitness = cur_best_fit self.best_params = population[best_idx] return self.best_params, self.best_fitness # 混沌特征:最大Lyapunov指数(Wolf方法简化) def max_lyapunov(series, tau=1, dim=3): N = len(series) # 重构相空间 m = dim n_vectors = N - (m-1)*tau Y = np.zeros((n_vectors, m)) for i in range(n_vectors): Y[i] = series[i:i+m*tau:tau] # 找最近邻点并计算发散率(简化) lyap = 0 for i in range(100, n_vectors-1): # 寻找最近邻(排除自身) dists = np.linalg.norm(Y[i] - Y[:i-1], axis=1) nearest_idx = np.argmin(dists) if dists[nearest_idx] < 1e-6: continue # 演化一步后的距离 if i+1 < n_vectors and nearest_idx+1 < n_vectors: dist_next = np.linalg.norm(Y[i+1] - Y[nearest_idx+1]) lyap += np.log(dist_next / dists[nearest_idx]) return lyap / (n_vectors - 100) # DenseNet-CBAM模型片段(用于摩擦状态识别) def densenet_cbam(input_shape=(64,64,3), num_classes=4): inputs = tf.keras.Input(shape=input_shape) # 简化的Dense Block x = Conv2D(32, 3, activation='relu', padding='same')(inputs) # CBAM: 通道注意力+空间注意力 channel_avg = tf.reduce_mean(x, axis=[1,2], keepdims=True) channel_max = tf.reduce_max(x, axis=[1,2], keepdims=True) channel_att = Dense(32//8, activation='relu')(channel_avg) channel_att = Dense(32, activation='sigmoid')(channel_att) x = Multiply()([x, channel_att]) # 空间注意力 spatial_avg = tf.reduce_mean(x, axis=-1, keepdims=True) spatial_max = tf.reduce_max(x, axis=-1, keepdims=True) spatial_att = tf.concat([spatial_avg, spatial_max], axis=-1) spatial_att = Conv2D(1, 7, padding='same', activation='sigmoid')(spatial_att) x = Multiply()([x, spatial_att]) # 全局池化+分类 x = GlobalAvgPool2D()(x) outputs = Dense(num_classes, activation='softmax')(x) model = tf.keras.Model(inputs, outputs) return model # 泄漏率预测模型(基于RMS) def leak_rate_from_rms(rms, k1=0.03, k2=0.01): Q = k1 * (rms ** 0.25) + k2 return Q # 在线监测主循环(伪代码) def online_monitoring(): params, _ = ImmuneOptimizer(signal).immune_opt() print(f"Optimal VMD params: alpha={params[0]:.0f}, K={int(params[1])}") model = densenet_cbam() model.load_weights('seal_state.h5') while True: ae_signal = acquire_signal() # 降噪 clean = vmd(ae_signal, alpha=params[0], K=int(params[1])) # 调用VMD # 计算混沌特征 lyap = max_lyapunov(clean) # 生成小波时频图 cwtmatr = pywt.cwt(clean, scales=np.arange(1,128), wavelet='cmor')[0] spectrogram = np.abs(cwtmatr)[:64,:64,None] # 取64x64 # 摩擦状态预测 state = model.predict(spectrogram[np.newaxis,...]) # 计算RMS并预测泄漏率 rms = np.sqrt(np.mean(clean**2)) leak = leak_rate_from_rms(rms) if leak > threshold: alert() time.sleep(1) "


如有问题,可以直接沟通

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

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

windows安装linux虚拟机

新手推荐VirtualBox, 因为它有图形界面&#xff0c;操作起来更直观&#xff0c;像在 Windows 里操作另一个窗口&#xff1b; 第一步&#xff1a;下载并安装 VirtualBox virtualBox官网下载 选择Windows hosts 下载 第二步&#xff1a;下载 Linux 系统的“安装盘” (ISO镜像) …

作者头像 李华
网站建设 2026/4/29 17:43:20

OBS面部跟踪插件终极指南:3步实现智能自动对焦

OBS面部跟踪插件终极指南&#xff1a;3步实现智能自动对焦 【免费下载链接】obs-face-tracker Face tracking plugin for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-face-tracker 你是否厌倦了直播时手动调整镜头&#xff1f;OBS面部跟踪插件为你带来…

作者头像 李华
网站建设 2026/4/29 17:37:22

OBS背景移除插件深度解析:AI虚拟背景实战指南

OBS背景移除插件深度解析&#xff1a;AI虚拟背景实战指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https://gitcode.…

作者头像 李华
网站建设 2026/4/29 17:36:34

编程面试自我介绍,30秒抓住面试官注意力

文章目录前言一、90%的程序员&#xff0c;都死在了这4个自我介绍致命误区里1. 简历复读机式&#xff1a;把简历内容从头念一遍2. 流水账式报菜名&#xff1a;从毕业说到现在&#xff0c;毫无重点3. 假大空式自吹自擂&#xff1a;全是套话&#xff0c;没有任何实锤4. 跑偏式自我…

作者头像 李华