Labview频谱仪设计东南大学实验报告.docx
《Labview频谱仪设计东南大学实验报告.docx》由会员分享,可在线阅读,更多相关《Labview频谱仪设计东南大学实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
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保存与读取。
由于保存功能会多次使用,所以将其做成子VI。
6.实测信号采集
我们参考了案例中的DAQ信号采集并加以修改,主要是利用DAQmx的子VI实现数据采集。
五.方案的优缺点
1.优点
①可以在一次运行下做到多次修改周期信号的各个参数以及叠加谐波的次数。
②可以进行任意频率谐波的叠加,而且所有周期波形均可叠加谐波。
③有两种非周期信号可供选择
④界面简单明了,外形美观
2.缺点
①调节相位后要重新运行程序才能看到相位的改变
②叠加谐波的范围只能在1~5倍频之间,如果想要加入更高频率要加入更多的锁存器。
软件设计
我们将界面分成了仿真信号及其分析、实测信号及其分析、回放三个界。
下面我将分成三个部分分别介绍。
六.软件部分
(一)仿真信号及其分析
整体设计思路为:
仿真信号部分前面板设计为:
1.周期信号
我们首先对其功能进行了分析,次界面既要产生各种波形,还要能够叠加谐波并进行频谱测量。
要能够叠加谐波就要求能够产生不同频率的波形进行选择性叠加。
因此我们选择了采用一个基本函数发生器并通过for循环实现不同频率波形的产生。
其基本思路见框图3-2-1。
程序框图如下:
为了达到频率、幅值、相位可调,波形类型可调,我们分别为相应参数设置了数据输入控件和文本下拉列表控件。
通过簇变量我们完成了采样频率和采样数的可调。
对于谐波的叠加,我们设计了4个谐波频率选择按钮,以便用户选择添加谐波的次数。
本程序中,基波为默认存在的,用户2~5倍频中自由选择叠加。
我在公式节点结构中添加了5个布尔型输入变量,5个数组型输出变量,通过for循环将之前产生的不同频率的波形有选择的输出到公式节点外进行叠加。
其程序流程图可简单示意为“
实现该流程图的源代码为:
floatoutone[1000];
floatouttwo[1000];
floatoutthere[1000];
floatoutfour[1000];
floatoutfive[1000];
intp=0;
intj=0;
for(j;j<1000;j++)
{outone[j]=a[j];}
if(intwo==1)
{intj=0;
for(j;j<1000;j++)
{outtwo[j]=b[j];}
}
if(inthere==1)
{intj=0;
for(j;j<1000;j++)
{outthere[j]=c[j];}
}
if(infour==1)
{intj=0;
for(j;j<1000;j++)
{outfour[j]=d[j];}
}
if(infive==1)
{intj=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关闭函数执行关闭TDMS文件任务。
范例中还加了一个建议错误处理器来反馈错误。
我将这个保存功能设计成了子VI,外部输入为布尔开关和波形数据。
其图标为:
7.波形回放功能
波形回放实际就是对已经保存的波形的一个读取,其设计思路与波形保存十分类似。
先添加一个“波形回放”选择按钮,当按钮选中时打开文件函数选择路径后TDMS打开函数打开相应文件,TDMS读取函数读取数据后TDMS关闭函数关闭文件完成波形回放功能。
(二)实测部分
实测部分的前面板设计为:
其程序框图为:
这个模块我们参考了帮助案例,先添加一个DAQmx开始任务函数开启DAQ子VI,并将任务通道设置为物理通道。
再通过DAQmx采样时钟函数配置采样数和采样频率并创建缓存区。
为了能够进行连续采样我们将采样类型改为连续采样。
通过DAQmx创建虚拟通道函数调用创建虚拟通道VI。
然后通过DAQmx读取函数读取虚拟通道中的数据,将采样部分放入一个while循环中用于连续获取数据并在最后调用DAQmx清除任务函数清除多余的缓冲数据。
七.软硬件的调试
①调试步骤
(1)开始产生正弦波、方波、三角波
(2)调整它们的频率及相位观察波形和频谱特性
(3)调试各种正弦波的叠加并观察它们的波形及频谱特性
(4)观察白噪声的波形及频谱特性
(5)观察非周期信号的波形及频谱特性
(6)观察实测信号的波形及其频谱特性
(7)信号的保存
(8)信号的回放
②调试结果
分别产生正弦波、三角波、方波、锯齿波,并对其进行频谱分析。
(下图中的各个波形频率均为20HZ)
叠加白噪声后:
对周期波叠加谐波。
下图分别为频率为20HZ的正弦波叠加2倍、5倍频谐波后波形图以及频谱图;以及对方波进行谐波叠加。
非周期信号1
非周期信号2
保存波形功能
回放波形功能
如果取消保存则会出现错误对话框:
这个对话框的出现主要是因为在保存和回放功能最后都添加了建议错误处理器函数进行报错。
因为没有得到正确的路径输入而终止了整个程序。
实测数据信号
七.实验心得体会
这是我们继MFC后第二次合作完成大型实验项目。
labview是图形化的形式进行设计的,相对来说更容易上手。
然而到后期很多函数功能实现的详细方法以及使用法也让我们绞尽脑汁。
与传统的编程语言来说,labview可以算是更人性化,各种功能都已经被做成了函数可以直接调用,这大大减少了编程量,在公式节点中还有大量的函数可以调用。
我个人感觉labview是一个很使用也是我们生医学生必须要掌握的一款软件。
很多情况下并不需要实际的仪器,虚拟仪器可以实现实时监测实时数据存储,仅需要一台电脑就可以实现很多功能。
这一点对于生物医学仪器十分重要,如在远程医疗中可以利用虚拟仪器做为用户的客户端实现各种测量功能并通过互联网传送数据。
我觉得相比于实际仪器。
虚拟仪器具有成本低,使用方便等很多优点,未来随着采集卡可采集的信号形式多样化后可以替代很多仪器。
这次试验也提高了我的团队协作能力,小组中两个人相互讨论制定方案,完善程序。
同时,也很感谢周围同学的支持,有时一直解决不出来的问题几个组之间也会在一起讨论碰撞出思路,使得试验期间总是乐趣无穷。
八.参考资料
[1]Labview8使用教程电子工业出版社
[2]Labview帮助