振动解调用的包络谱计算

2024-02-28 07:04
文章标签 计算 调用 振动 包络

本文主要是介绍振动解调用的包络谱计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1缘起

在振动分析中,对于一些高频频点的分析计算,使用包络谱技术,进而得到特化谱是最适宜的。我们看matlab信号分析中提供的一个实例:

https://www.mathworks.com/help/signal/ug/compute-envelope-spectrum.html

轴承故障有4个故障频点,示例中模拟了一个外圈故障的数据,然后对BPFO附近的谱线进行分解,最终用于分析的BPFO特化谱在这里,外圈故障是点蚀作用,非标准正弦波,所以倍频丰富。形成的最终包络谱视图可以很清晰地看到相关故障信号的基频和倍频特征。方便进行相关的故障分析的定量和定性分析。

9ccca8b94ee843aea7d6c90dc419a3f8.png

它的纵坐标有问题,最终的图理论上需要用db坐标。-40db一般认为是有效信号出现的门限。

这个问题,我看了无数的文章,看了希尔伯特变换的一篇论文,但是似乎没有人能说清楚包络变换的原理和操作步骤,很多人在进行包络计算时,只是调用了一个数学工具库中的函数。它做了什么,甚至,最终视图的坐标轴的档位都不明晰。

奇怪的是,这个重要的数学工具,在我查阅的一些标准的振动分析教材上也鲜有提及——也许它太过简单,是个常识?但关于希尔伯特变换的含义和在包络运算的使用,又确实没有几个人能说得清。感谢matlab,感谢一切在网络上积极进行理论和技术传播的从业人员和热心人士。希望和你们继续同行。

2.包络谱的计算步骤

四个步骤:

1.去零点

2.带通滤波

3.包络解调

4.去零点

然后在展示时:

5.功率谱显示

6.设置maxFreq。修饰倍频谱线位置。

3.重要步骤备注

1.为什么最终的包络谱线能达到谱线移动的效果?

44d5bbd81c4d471893d7e8a931cce670.png

看到上面带通滤波后的红色频谱和时域图就明白了。(出处:Bandpass-filter signals - MATLAB bandpass)

经过带通之后的时域图红色的部分是个非常典型的调制波。在它的这个高频频点附近BPFO的基频和倍频以调制波上叠加低频信号呈现。因为所有关心谱线之外的频段已经都被带通滤波器抑制,所以,最终经过标准的希尔伯特envelope解调后,这段细节谱就会被移动到低频部分。

此外,注意如果使用标准的希尔伯特解调,解调前后似乎会有一个两倍幅度加乘,如果你无法使用好用的数学运算库,要注意核对最终生成的全域包络谱的幅度,要把额外的加成消掉。

附录A 各种中间波形和频谱图

原始时域图

外圈故障是等幅的,因为只有一个BPFO在起作用,内圈故障因为滚珠和轴速接近,会呈现出幅度调制的效果。波形边缘是起伏的。

a5668337af4c4d06bee38b8d85ac74dc.png

原始频域功率谱

注意3kHz的一簇梳状故障谱线,高峰已经顶过-40db。故障信号已经形成。在进行FFT变换时,特别注意变换后输出的纵坐标的单位是什么。是原始幅度值还是db这类比率坐标,它直接影响故障的初筛。

018118c871d44210b2bd875be9702895.png

包络时域图

注意红色的故障频带幅度是很小的,样例中,这个振动信号刚刚超过-40db,是原始信号的1/100这样的量级。

376201de8de8404e9296dbb772654c2e.png

包络和全频域图

这里高频的下潜部分是由带通滤波实现的,低于-40db无需分析。输出全域谱可以保留,如本文开篇那个BPFO特化谱,可以直接把低于-40db很多的无关部分消掉,不显示。

0d057d467f1b42cc8088ebdbf31ff144.png

附录B 希尔伯特变换的数学和物理意义 

与包络计算相关的希尔伯特变换的解析参见:

希尔伯特变换的在信号解调时的示例-CSDN博客

这篇关于振动解调用的包络谱计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/754716

相关文章

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

python如何调用java的jar包

《python如何调用java的jar包》这篇文章主要为大家详细介绍了python如何调用java的jar包,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录一、安装包二、使用步骤三、代码演示四、自己写一个jar包五、打包步骤六、方法补充一、安装包pip3 install

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

使用@Cacheable注解Redis时Redis宕机或其他原因连不上继续调用原方法的解决方案

《使用@Cacheable注解Redis时Redis宕机或其他原因连不上继续调用原方法的解决方案》在SpringBoot应用中,我们经常使用​​@Cacheable​​注解来缓存数据,以提高应用的性能... 目录@Cacheable注解Redis时,Redis宕机或其他原因连不上,继续调用原方法的解决方案1

C#通过进程调用外部应用的实现示例

《C#通过进程调用外部应用的实现示例》本文主要介绍了C#通过进程调用外部应用的实现示例,以WINFORM应用程序为例,在C#应用程序中调用PYTHON程序,具有一定的参考价值,感兴趣的可以了解一下... 目录窗口程序类进程信息类 系统设置类 以WINFORM应用程序为例,在C#应用程序中调用python程序

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,