振动解调用的包络谱计算

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

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

一分钟带你上手Python调用DeepSeek的API

《一分钟带你上手Python调用DeepSeek的API》最近DeepSeek非常火,作为一枚对前言技术非常关注的程序员来说,自然都想对接DeepSeek的API来体验一把,下面小编就来为大家介绍一下... 目录前言免费体验API-Key申请首次调用API基本概念最小单元推理模型智能体自定义界面总结前言最

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如