基于LabVIEW的虚拟频谱分析仪的设计与实现

发布者:yunhao最新更新时间:2019-12-11 来源: elecfans关键字:LabVIEW  虚拟频谱分析仪  库函数 手机看文章 扫描二维码
随时随地手机看文章

O 引言

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种图形化的编程语言,集成了满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能,还内置了便于应用TCP/IP、ActiveX等软件标准的库函数。利用LabVIEW可以方便地建立各种虚拟仪器。


频谱分析仪是对无线电信号进行测量的必备手段,是从事电子产品研发、生产、检验的常用工具,应用十分广泛,被称为工程师的射频万用表。传统的频谱分析仪的前端电路是一定带宽内可调谐的接收机,输入信号经变频器变频后由低通滤器输出。滤波输出信号作为垂直分量,频率作为水平分量,在示波器屏幕上绘出坐标图,就是输入信号的频谱图。由于变频器可以达到很宽的频率,例如30Hz-30GHz,与外部混频器配合,可扩展到100GHz以上,所以频潜分析仪是频率覆盖最宽的测量仪器之一,无论测量连续信号或调制信号,频谱分析仪都是很理想的测量工具。但是传统的频谱分析仪只能测量频率的幅度,缺少相位信息,因此属于标量仪器,而且体积庞大。利用LabVIEW强大的虚拟仪器开发功能,可实现基于快速傅里叶变换(FFT)的现代频谱分析仪功能,采用数字方法直接由模拟/数字转换器(ADC)对输入信号取样,再经FFT处理后获得频谱图,可以解决传统频谱分析仪价格昂贵,携带不便等缺点。


1 虚拟频谱分析仪总体设计方案

虚拟频谱分析仪由数据采集卡、计算机和在其上运行的用LabVIEW开发的应用软件组成,如图1所示。

虚拟频谱分析仪

虚拟频谱分析仪利用数据采集卡的模拟输入和模拟输出两个功能,用模拟输出功能产生所需的激励信号,并将其加到被测网络上,再用两个模拟输入通道将激励信号和网络输出端的响应信号同时采集到计算机中,经处理后,构成幅频和相频特性曲线,并显示在计算机屏幕上,最后对模拟生成的信号进行分析,在计算机屏幕上输出模拟信号的幅频/相频特性。


2 虚拟频谱分析仪组成及功能

2.1 虚拟仪器和频谱分析仪组成

本文设计的虚拟频谱分析仪由周期性信号发生器、滤波器以及幅频/相频特性、频谱分析结果三个子模块组成。信号发生器子模块生成两路模拟输入信号,一路是可调频率、相位和振幅的正弦信号,另一路是指可调频率、相位和振幅的余弦信号,最后利用信号合成器把两路信号混合起来作为生成的2路模拟信号;频谱分析和滤波器子模块利用LabVIEW强大的数字信号处理功能,对这组数据进行滤波、加窗、FFT运算处理,得到信号的实部谱和虚部谱,最重要的是得到信号的幅频特性曲线和相频特性曲线;在频谱分析的结果子模块中,对生成信号的频谱进行分析,并将均方根值、一个周期内的信号均值等参数在系统退出时保存到文本文件中。其中,在滤波设置中可以控制滤波的通过方式以及截止频率,最后显示出频谱分析结果,系统退出时提示保存当前数据到文本文件。


虚拟频谱分析仪前面板分为3部分:周期性信号发生器、周期性信号滤波器及幅频/相频特性和周期性信号频谱分析结果,如图2所示。图中显示的是周期性信号发生器的界面,图中正弦波和余弦波信号可以通过鼠标拖拽和旋转按钮来改变信号的频率、振幅及相位。当拖拽的时候可以发现下方的"2路原始模拟信号波形"会发生变化,而且横坐标轴的最大值也会发生变化。程序内部通过调用后面介绍的"XScaleControl.VI"就可以实现这个功能;对于"周期性信号滤波器及幅频/相频特性"和"周期性信号频谱分析结果"这两个功能模块界面限于篇幅不再赘述。

虚拟频谱分析仪后面板

虚拟频谱分析仪后面板

虚拟频谱分析仪后面板由五个子模块组成:波形生成模块,波形分析模块,控制X轴范围,滤波器以及幅频/相频特性和数据保存模块,如图3所示。

虚拟频谱分析仪面板

虚拟频谱分析仪面板


2.2 虚拟频谱分析仪子模块的设计

(1)波形生成子模块

要进行频谱分析,首先得生成模拟信号,本文采取系统的两个子模块:Triangle waveform.VI和Sinewaveform.VI生成2路模拟输入信号,为了实现模拟信号的频率、相位和幅度的调节增加了几个控制输入,引脚图4和图5所示。

引脚图

引脚图

在图4和图5中,输入引脚和输出引脚完全相同,"offset"是指波形的偏移量,一般不进行设置;"resetsignal"是一个布尔型的输入控制,若加载为True时则可以复位波形,若为False则不对波形进行复位;"frequency"是指生成信号的频率;"amplitude"是指想要生成信号的振幅;"phase"是指生成信号的相位;"error in"和"error out"是指当程序有异常发生时的输入和输出;"sampling info"是指要生成信号的采样率,缺省设定为1000,即一秒采样1000个点;"Duty Cycle"即占空比,是指一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。


(2)控制X轴范围子模块

子模块XscaleControl.VI用于实现动态控制波形X轴范围,共有4个输入引脚,其中3个是引用型reference输入,一个是常数型输入引脚。随着输入信号频率的增大,若输出波形的X轴范围固定不变为1的话,那么波形显示太密,导致根本看不清楚图形,故需要当频率增大时,波形x轴范围相对缩小,让波形显示更加清楚。其中三个引用型输入引脚分别指代正弦波频率、三角波频率和波形控件WaveformGraph三个原控件的属性节点 (propertynode)。内部工作原理是当正弦波频率和三角波形频率二者中有任一个大于10HZ时就按照二者频率之中较大的那个频率的倒数的数值来当作波形控件WaveformGraph的横坐标轴的最大值,实现了当模拟信号频率增大时波形依然清晰的功能,从而实现了动态地控制波形控件x轴的范围。

(3)波形分析子模块

LabVIEW提供了丰富的波形频谱分析工具,最典型的就是Amplitude and Level Measurement.VI,它的存放路径是后面板中Functions->Signal Analysis,参数对话框中共分为4个区域,分别是要求进行的幅值特征值求取的项目(Amplitude Measurements)、当前信号幅值求取的结果(Results)、输入信号预览窗口(Input Signal)和加窗后信号预览窗口(Result Signal),其中最重要的是幅值特征值求取项目的设置,需要求取哪个特征值,就在它前面划勾,Amplitude and Level Measurement.VI自动在其图标中添加这一输出端口。频谱分析Amplitudeand Level Measurement.VI功能引脚如图7所示。

频谱分析Amplitudeand Level Measurement.VI功能引脚

频谱分析Amplitudeand Level Measurement.VI功能引脚

该模块有3个输入引脚和8个输出引脚。3个输入引脚分别如下:"Restart Averaging"引脚标识是否重启选定的平均处理过程,缺省为False;"Signals"引脚是输入要分析的信号;"error in(no error)"引脚是对在执行到这个VI之前若是发生错误条件的描述;8个输出引脚叙述如下:"RMS"引脚指信号均方根值;"PosiTIve Peak"引脚指正向峰值;"error out"引脚指子VI执行错误时的输出信息;"Cycle Average"引脚指一个周期的平均值;"Cycle RMS"引脚指一个周期的均方根值;"Mean(DC)"引脚指信号均值;"NegaTIve Peak"引脚指负向峰值;"Peak to Peak"引脚指峰一峰值,即输入信号波形的正向和负向的最大振幅值。


把模拟生成的2路信号作为此VI的输入引脚"Signals",就可以对生成的信号进行分析,从而输出该信号的一些参数信息,如信号均值、峰值和一个周期的均方根值等。


另外一个比较典型的信号分析VI就是FFTSpectrum(Real-Im).VI,该VI可以对输入的时域信号计算出快速傅立叶变换频谱,并分别返回波形的实部谱和虚部谱,在实际应用中进行实部谱和虚部谱的分析也很有意义,傅立叶频谱变换FFT Spectrum.VI功能引脚如图8所示。

VI功能引脚

VI功能引脚

该模块共有10个引脚。其中"restart averaging(F)"引脚和上面提到的功能一样,用来标识是否重启选定的平均处理过程;"time signals"引脚标识输入的时域信号;"window"引脚指加窗设置,加窗方式包括可以有多种不同的方式,如Uniform、Hanning、 Hamming以及Blackman等;"error in(noerror)"引脚和"error out"引脚标识执行此VI有错误发生时的输入和输出信息;"averaging parameters"引脚指输入波形信号的平均参数;"real parts"引脚标识波形的实部谱,输出可以是用graph图像直观描述的方式也可以是一堆参数的描述形式;"imaginary parts"引脚指输入波形的虚部谱,描述方式同实部谱;其余两个引脚"averaging done"引脚和"averages completed"引脚一般不用,都是对输入波形的一些不常用的参数的叙述。


(4)滤波器以及幅频/相频特性子模块

滤波器子模块处于Functions->Signal Analysis子模板中,它的设置分为4个区域,分别为滤波器参数设置(Filtering Type)、两个预览窗口和预览模式设定区域(VIew Mode)。滤波器种类有四种,分别为高通、低通、带通以及平滑滤波。前三种都容易理解,而平滑滤波主要用于对信号进行局部平均,消除周期性噪声或白噪声。低通滤波器子模块Filter.VI的功能引脚如图9所示。

低通滤波器子模块Filter

低通滤波器子模块Filter

带通滤波器子模块BandFilter.VI的功能引脚如图10所示。顾名思义,带通滤波器的意思就是频率在某个范围内的波形可以通过,它比图9中的低通滤波器就多了一个引脚Upper Cut-Off。

带通滤波器子模块BandFilter

带通滤波器子模块BandFilter

(5)数据保存子模块

数据保存子模块即SaveData.VI功能引脚如图11所示。它把想要保存的数据处理成统一的格式,在系统退出时保存到文本文件中。

数据保存子模块即SaveData

数据保存子模块即SaveData

其中,只有两个引脚是输出端,即"string"和"系统日期和时间",分别代表格式化输出的字符串和系统当期日期和时间。输出端"string"在系统自动存储文件中的一条记录格式如下:

"周期平均值:-0.258667正峰值:2.845332信号均方根值:2.845332 3dB带宽:392.968235.


2007年8月21日12:21:32"。其中,"周期平均值"表示波形信号在一个周期内的信号平均值;"正峰值"表示波形信号达到的最大幅度值;"信号均方根值"表示波形信号按均方根公式求出的值;"3dB带宽"表示通过子VI求出的带宽幅度值;最后一个代表的是存储该条记录的日期和时间。其中主要用到 LabVIEW提供的Format函数,通过把多个中文字符串和一个数字通过Fromat函数格式化到同一个字符串"string"中输出,从而为系统退出时保存数据做准备,因为若是把保存数据放到while循环里,则会因一直提示保存数据而导致程序死循环。


图11中,有六个输入端引脚,其中"RMS"引脚表示信号的周期平均值,"Positive Peak"引脚表示正向最大峰值,"CycleAverage"引脚表示信号均方根值,"detected frequencies"引脚是指检测到的频率,而"3db带宽"引脚和"上限带宽"引脚是通过嵌套的—个子Ⅵ即Compute 3db bandwidth.VI计算出来的。


3 结语

基于LabVIEW编程环境下的虚拟频谱分析仪主要实现了时域分析和频域分析两个功能。信号的时域分析主要是测量测试信号经滤波处理后的特征值,这些特征值以一个数值表示信号的某些时域特征,是对测试信号最简单直观的时域描述。将测试信号采集到计算机后,在测试VI中进行信号特征值处理,并在测试VI前面板上直观地表示出信号的特征值,可以给测试VI的使用者提供一个了解测试信号变化的快速途径。信号的特征值分为幅值特征值、时间特征值和相位特征值,本文对幅值特征值的分析进行了设计。


信号的频域分析就是根据信号的频域描述来估计和分析信号的组成和特征量。也就是研究信号的频率结构,即求取其分量的幅值、相位按频率的分布规律,并建立以频率为横轴的各种谱。对于周期信号可将其展开为傅立叶系数,其频谱具有离散性、谐波性和收敛性;对于非周期信号可用频谱密度函数分析其频率构成,其频谱具有连续性。


频域分析包括频谱分析、功率谱分析、相干函数分析以及频率响应函数分析。本文实现了频谱分析,即信号的幅频特性和相频特性。

关键字:LabVIEW  虚拟频谱分析仪  库函数 引用地址:基于LabVIEW的虚拟频谱分析仪的设计与实现

上一篇:基于XMEGA128的便携式电解质分析仪设计
下一篇:采用高性能XMEGAl28单片机实现便携式电解质分析仪的设计

推荐阅读最新更新时间:2024-11-13 07:00

【STM32】ADC库函数、一般步骤详解 实例:内部温度传感器
STM32F1xx官方资料: 《STM32中文参考手册V10》-第11章 模拟/数字转换(ADC) 《STM32中文参考手册V10》-第11章 第11.10小节 温度传感器 ADC采样数值 如何STM32的ADC模块,得到接入ADC管脚上的实际电压值? 会读到什么值 由于STM32的ADC是12位逐次逼近型的模拟数字转换器,也就是说ADC模块读到的数据是12位的数据。 因此:STM32读到的ADC值,是从0到4095(111111111111)。当把ADC引脚接了GND,读到的就是0;当把ADC引脚接了VDD,读到的就是4095。 读到的值怎么换算成实际的电压值 前面提到了,我们输入GND,读到的值是0,输入V
[单片机]
【STM32】ADC<font color='red'>库函数</font>、一般步骤详解 实例:内部温度传感器
LabVIEW的数控机床网络测控系统B/S模式软件设计
下位测控机的数据采集、显示及存储回放软件设计 下位机测控服务器系统软件包括接口仪器驱动软件和应用软件两部分。其中,接口仪器驱动程序是完成对某一特定仪器的控制与通信的软件程序集合,是连接上层易用软件和底层软件的纽带和桥梁。每个仪器模块都有自己的软件驱动程序,仪器厂商将其以源码的形式提供给用户,用户在应用程序中调用仪器驱动程序。应用程序包含两方面的程序:实现虚拟面板功能的前面板软件程序和定义测试功能的流程图软件程序。它主要功能是给用户提供操作仪器、显示数据的人机接口;实现数据的采集、分析处理、显示、存储等;并将需要在客户端显示的数据发送到Web服务器,同时从Web服务器接收来自远程客户端的控制命令。 数控机床 测控软件的结构化设计
[电源管理]
<font color='red'>LabVIEW</font>的数控机床网络测控系统B/S模式软件设计
基于LabVIEW的数控机床网络测控系统--基于B/S模式的软件设计 2
在Analog Tag Configuration的Connect目录下的Item与OPC服务器的项名进行匹配,并对Tag进行了详细的描述,如OPC服务器,工程量的范围,报警的上下限,更新的死区等等。在运行时,标签引擎Tag Engine会根据。scf文件的配置建立与OPC服务器的连接。当OPC服务器与。scf文件配置好以后,可以在LabVIEW的前面板上通过Numeric Control,Numeric Indicator控件读写现场采集的数据,Numeric Control,Numeric Indicator控件通过人机向导HMI Wizard For Analog Control与。scf文件Tag进行匹配,并自动默认控件的L
[测试测量]
基于<font color='red'>LabVIEW</font>的数控机床网络测控系统--基于B/S模式的软件设计 2
LabView利用IMAQ来采集笔记本自带摄像头图像
最近想学习一下在、labview环境下来做简单的图像处理,延伸到机器视觉上的使用。 于是安装了​驱动NI Vision Acquisition,这是labview的关于机器视觉方面的驱动程序。 在labview界面就多了这些子VI图标: ​其中,NI-IMAQ主要用来对NI自己的图像采集卡进行编程;NI-IMAQdx主要用来完成对非NI自己的板卡或摄像头来进行编程,当然相对于NI-IMAQ来讲这里面的VI自由度就高一些,因为毕竟不是自己家的图像采集设备,就不太可能集成度更高嘛;Vision Utility是机器视觉模块或者叫图像处理模块,来完成对图像的一些初步的处理;Vision RIO是图像操作在FPGA上的应用;V
[测试测量]
基于LabVIEW的2ASK通信系统程序设计
摘要:研究ASK信号的设计方法及计算机仿真和结果,通过使用LabVIEW语言对2ASK通信系统进行调制和解调,调制方法为输入序列与载波相乘,再将调制出的波形通过信道、低通滤波器滤波后采用非相干解调的解调方式实现二进制幅移键控系统的解调,形成所要的波形。并通过改变输入序列的输入值来得到相应波形和功率谱图形的变化。 0 引言 随着科学技术的进步,计算机的发展日新月异,计算机强大的处理能力,使得它成为一种很好的工具,通信事业得到了飞速发展,信息的传送也由模拟传输转向数字传输,信息越来越多地作为数字脉冲之间的时间或相位的变化而传送出去。这样,对信号进行数字调制显的尤其重要,这种利用模拟调制方法随着现代调制方法的出现而陷入了困境。为了可靠
[测试测量]
基于<font color='red'>LabVIEW</font>的2ASK通信系统程序设计
STM32之ADC库函数的介绍
ADC的基本概念希望各位网友查阅相应的手册,上面对ADC有比较详尽的介绍,包括误差的分析和消除。这里主要介绍ADC的基本库函数的定义和使用。 1.ADC_DeInit函数的功能是将外设ADCx的全部寄存器重设为默认值。 ADC_DeInit(ADC2); 2.ADC_Init函数的功能是根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器。其中ADC_InitTypeDef定义在stm32f10x_adc.h中。其结构体如下所示: typedef struct { u32 ADC_Mode;//可以设置ADC_Mode FunctionalState ADC_ScanConvMode;//规定了模数转换工作在扫描
[单片机]
LabVIEW2011中NI错误报告器的解决方法
在LabVIEW2011中,NI提供一种更简单的方式,用来对软件的崩溃进行报告。在LabVIEW发生崩溃时,你可以使用NI错误报告器(NI Error Reporter,NIER)将错误报告至NI社区。NIER将发送一个错误日志,其中含有导致出错的根本原因,同时你也可以填加一些描述以及代码,以便NI可以更快地找到解决方案。 同时,导致每个软件崩溃的原因将被给予一个唯一的ID号码。你可以使用此ID在NI网站上进行搜索,如果有人曾对同样的错误进行过报告,你就可以找到NI给出的相应解决方案,避免再次发生崩溃。 图1. 通过添加描述和代码,并将其发送给NI进行调查,从而使错误报告更有效。
[测试测量]
在<font color='red'>LabVIEW</font>2011中NI错误报告器的解决方法
【STC15库函数上手笔记】7、PCA与PWM
STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 硬件知识 摘自《STC15系列单片机器件手册》 STC15系列部分单片机集成了3路可编程计数器阵列(CCP/PCA)模块(STC15W4K32S4系列单片机只有两路CCP/PCA),可用于软件定时器、外部脉冲的捕捉、高速脉冲输出以及脉宽调制(PWM)输出。 下表总结了STC15系列单片机内部集成了CCP/PCA/PM功能的单片机型号: 上表中√表示对应的系列有相应的功能。 CCP/PWM/PCA模块的结构
[单片机]
【STC15<font color='red'>库函数</font>上手笔记】7、PCA与PWM
小广播
最新测试测量文章
换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved