Labview_频谱仪设计_东南大学实验报告 下载本文

如有你有帮助,请购买下载,谢谢!

实验: 利用LabVIEW进行仿真信号及实测信号的分析

一、实验目标:

1. 学习LabVIEW 软件特点及工作环境。

2.利用LabVIEW进行频谱仪的设计,并对仿真信号进行分析。

3. 利用DAQ将函数发生器中的信号进行采集,再对实测信号进行分析。

二.实验内容:

①设计一个频谱分析仪,对正弦波、方波、三角波信号进行频谱分析 ②产生叠加谐波,并分析叠加谐波的周期信号的频谱分析 ③非周期信号的频谱分析 ④分两种情况测量: ?不经过数据采集的仿真 ?经过myDAQ数据采集卡 ⑤备注:

?界面尽可能美观大方

?程序尽量简短、占用系统资料尽可能少

三.实验要求:

实现仿真信号的生成,实际信号的数据采集,同时观察信号的波形,存储、回放信号的波形,并利用FFT对所得仿真信号、实际信号进行频谱分析进而得到信号的频谱。 ①采样频率、采样点数、信号频率、幅值和初相位可调 ②分析正弦波、方波、三角波和白噪声的频谱特性

③前面板上既可显示信号的时域图形(其X轴为时间轴)、又可观察到信号经过FFT后的幅值谱(其X轴为频率轴)

四. 实验方案选择

1.仿真波形的产生与叠加

由于后期需要叠加谐波,所以要产生5个频率的波,使用5个函数发生器的话资源比较浪费,所以我们采用一个函数发生器加5个锁存器循环的方式产生五个频率的波。利用五个缓存器分别存储5个频率的波。

叠加我们采用的是利用公式节点编程控制选中频率的波输出进行叠加。

2.白噪声的产生

直接在周期信号进入显示屏前叠加一个均匀白噪声发生器产生白噪声。通过幅值调整选择或取消白噪声。

3.仿真信号频谱分析

我们调用了频谱测量函数,只需将波形输入调节dt即可。

4.非周期信号的产生

我们采用了两种方法产生非周期信号

第一,我们通过for循环产生大量随机数构造非周期波形。

第二,利用两个周期不存在公倍数的正弦波叠加得到非周期信号。

5.波形保存与回放

波形存储与回放我们采用的是TDMS保存与读取。由于保存功能会多次使用,所以将其做

1页

如有你有帮助,请购买下载,谢谢!

成子VI。

6.实测信号采集

我们参考了案例中的DAQ信号采集并加以修改,主要是利用DAQmx的子VI实现数据采集。

五. 方案的优缺点

1.优点

①可以在一次运行下做到多次修改周期信号的各个参数以及叠加谐波的次数。 ②可以进行任意频率谐波的叠加,而且所有周期波形均可叠加谐波。 ③有两种非周期信号可供选择 ④界面简单明了,外形美观

2.缺点

①调节相位后要重新运行程序才能看到相位的改变

②叠加谐波的范围只能在1~5倍频之间,如果想要加入更高频率要加入更多的锁存器。 软件设计

我们将界面分成了仿真信号及其分析、实测信号及其分析、回放三个界。下面我将分成三个部分分别介绍。

六.软件部分

(一)仿真信号及其分析 整体设计思路为:

仿真信号部分前面板设计为: 1.周期信号

我们首先对其功能进行了分析,次界面既要产生各种波形,还要能够叠加谐波并进行频谱测量。要能够叠加谐波就要求能够产生不同频率的波形进行选择性叠加。因此我们选择了采用一个基本函数发生器并通过for循环实现不同频率波形的产生。其基本思路见框图3-2-1。程序框图如下:

为了达到频率、幅值、相位可调,波形类型可调,我们分别为相应参数设置了数据输入控件和文本下拉列表控件。通过簇变量我们完成了采样频率和采样数的可调。

对于谐波的叠加,我们设计了4个谐波频率选择按钮,以便用户选择添加谐波的次数。本程序中,基波为默认存在的,用户2~5倍频中自由选择叠加。我在公式节点结构中添加了5个布尔型输入变量,5个数组型输出变量,通过for循环将之前产生的不同频率的波形有选择的输出到公式节点外进行叠加。其程序流程图可简单示意为“ 实现该流程图的源代码为: float outone[1000]; float outtwo[1000]; float outthere[1000]; float outfour[1000]; float outfive[1000]; int p=0; int j=0 ;

for(j;j<1000;j++) { outone[j]=a[j];} if (intwo==1)

2页

如有你有帮助,请购买下载,谢谢!

{ int j=0 ;

for(j;j<1000;j++) { outtwo[j]=b[j];} }

if (inthere==1) { int j=0 ;

for(j;j<1000;j++) { outthere[j]=c[j];} }

if (infour==1) { int j=0 ;

for(j;j<1000;j++) { outfour[j]=d[j];} }

if (infive==1) { int j=0 ;

2.白噪声的产生

为了产生白噪声,我使用了均匀白噪声发生器函数产生幅值可调的白噪声信号。将这个白噪声信号与之前叠加好的基波加谐波进行叠加,再利用创建波形函数将数组波形转换成波形,输出到“仿真信号”显示屏上。 与此同时,将输出波形送入频谱测量函数进行频谱分析,将分析结果通过“仿真信号频谱”屏幕显示。

3.频谱分析及频谱图X坐标修改

插入频谱测量函数,将产生的波形接入,并将FFT设为峰值模式。

由于频谱的X轴单位应该为HZ,所以,我给“仿真信号频谱”显示屏添加了X标尺偏移量与缩放系数属性节点,使得X轴数值表示HZ,如下图黄色圈内部分所示。 我们将图片保存功能做成了子VI(详细介绍见下文),连接上保存选择开关和“仿真信号”显示屏上实现波形的保存。

以上1~3点功能程序框图如下:

4.非周期信号1

我们采用for循环中加入随机数产生多个随机数作为非周期信号的y值,经过创建波形产生可以输出的非周期信号。一位整个仿真信号是放在一个while循环中的,而随机数不能一直产生,否则会造成波形混乱,所以我们将随机数循环放在了大while循环的外面。我们还在for循环框中加了一个时间延时,并将频谱分析中的dt改为0.01。其程序框图如下:

5.非周期信号2

与非周期信号1的产生方式不同,非周期信号2采用的是两个不同频率的正弦波叠加的形式。我们分别用频率为7HZ和11HZ的两个周期信号进行叠加,并对叠加波进行FFt,输出到频谱屏幕上。其程序框图如下:

6.图像保存功能子VI

图像保存功能在本仪器中经常会使用到,所以我将图像保存功能做成了子VI(保存功能.vi)。其程序框图如下:

这个框图我是参考范例中的一个保存案例。当布尔开关选择为真时进入保存功能,此时文件对话框函数会令前面板弹出保存路径选择,将选择好的路径送给TDMS打开函数在相应的路径位置创建一个TDMS文件。接着TDMS写入函数将数据写入创建好的TDMS文件中,TDMS

3页