基于LabVIEW的任意波形发生器.docx

上传人:聆听****声音 文档编号:510099 上传时间:2023-04-29 格式:DOCX 页数:13 大小:2.74MB
下载 相关 举报
基于LabVIEW的任意波形发生器.docx_第1页
第1页 / 共13页
基于LabVIEW的任意波形发生器.docx_第2页
第2页 / 共13页
基于LabVIEW的任意波形发生器.docx_第3页
第3页 / 共13页
基于LabVIEW的任意波形发生器.docx_第4页
第4页 / 共13页
基于LabVIEW的任意波形发生器.docx_第5页
第5页 / 共13页
基于LabVIEW的任意波形发生器.docx_第6页
第6页 / 共13页
基于LabVIEW的任意波形发生器.docx_第7页
第7页 / 共13页
基于LabVIEW的任意波形发生器.docx_第8页
第8页 / 共13页
基于LabVIEW的任意波形发生器.docx_第9页
第9页 / 共13页
基于LabVIEW的任意波形发生器.docx_第10页
第10页 / 共13页
基于LabVIEW的任意波形发生器.docx_第11页
第11页 / 共13页
基于LabVIEW的任意波形发生器.docx_第12页
第12页 / 共13页
基于LabVIEW的任意波形发生器.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于LabVIEW的任意波形发生器.docx

《基于LabVIEW的任意波形发生器.docx》由会员分享,可在线阅读,更多相关《基于LabVIEW的任意波形发生器.docx(13页珍藏版)》请在冰点文库上搜索。

基于LabVIEW的任意波形发生器.docx

课程设计报告

虚拟仪器课程设计报告

一、综述

任意波形发生器是一种常用的信号源,广泛用于科学研究生产实践和教学实践等领域。

不论是在生产上还是在科研与教学上,任意波形发生器都是电子工程师信号仿真实验的最佳工具。

一般来讲任意波形发生器,是一种特殊的信号源,综合具有其它信号源波形生成能力,因而适合各种仿真实验的需要。

1、信号发生器的发展历史

自上世纪20年代,首台信号发生器诞生以来,信号发生器经历了一个漫长的发展期,特别是前四十年,由于早期机械结构比较复杂,功率比较大,电路比较简单,因此发展速度比较慢。

而之后的一二十年间,由于分析元件和模拟集成电路的应用,信号发生器开始可以产生正弦波、方波、锯齿波、三角波等几种简单波形,但同时也存在着稳定性差、尺寸大、价格贵、功耗大等诸多问题。

随着70年代微处理器的出现,利用微处理器、模数转换器和数模转换器,信号发生器的功能被大大地开发,能够通过硬件和软件产生较复杂的波形,这类的信号发生器多以软件为主,随着我国经济和科技的发展,对相应的测试仪器和测试手段也提出了更高的要求。

基于LabVIEW的任意波形发生器就是在这个基础上发展而来。

2、基于LabVIEW的信号发生器的特点

LabVIEW作为虚拟仪器技术的主要代表,在信号发生器方面,有着许多不可超越的优点,如虚拟仪器成本低、功能多、灵活性强、人机界面友好并且拥有不输传统台式发生器的性能等等。

其最大的优点就在于用户可根据自己的需求自己修改程序,来达到输出所需波形的目的,这是传统的台式发生器无法比拟的。

3、课程要求以及可行性分析

在本课程中,我们需要通过使用LabVIEW2012这款软件,配合实验室配置的数据采集卡和电路实验箱,完成一款简易的任意波形信号发生器的程序开发。

由于实验室的配置齐全,硬件方面可以轻松达到程序最终所需的要求。

而在软件方面,由于LabVIEW内置强大的拓展包和程序库,我们可以通过调用许多其自身已有的子VI如正弦信号发生、公式信号发生、一维插值等,轻松达到输出波形的目的。

其主要的工作量将集中在任意手绘波形以及各种程序结构的嵌套等方面。

二、程序说明

1、整体流程

本程序从打开运行到输出波形要经历打开运行程序、选择波形、控制波形属性、生成波形和输出波形五个过程。

(如图1)

打开运行程序

选择波形

控制波形属性

生成波形

输出波形

图1

2、具体说明

接下来将从上述五个过程对程序进行详细的说明:

(1)打开运行

该过程相对简单,在按下运行按钮之后,程序开始运行,但在运行程序主结构之前会经历一个初始化过程(如图2),通过顺序结构在主结构前添加一帧完成,其主要内容,为是各按钮复位,调节各参数至初始值(除频率均为0,频率为1Hz),同时对任意手绘波形部分的一些功能参数进行初始化。

在初始化之后,程序进入主结构进行运行。

图2

(2)选择波形

程序的主结构是通过最外层的循环加条件结构完成的,通过不停地循环运行条件结构,针对所给条件运行程序,波形的选择按钮是通过整合成一个簇,再转化为数组来判断的,再通过一个小FOR循环和条件结构,来对同时选择两种及两种以上波形的情况进行甄别(如图3,图4为其前面板)。

此外在这个过程中,还设置了统一的波形参数入口,例如频率、幅度、占空比、初始相位等等,同时还包括高斯噪声和均匀噪声的控制开关(如图6,前面板如图5),为之后的控制波形属性过程做下铺垫。

图3

图5

图4

图6

(3)控制波形属性与生成波形

这两个过程有着很紧密的关系。

由于选择不同的波形,这两个过程也会有不同的运行结果,主要可以分为三类。

①当为选择任何一种波形时,条件结构会经过默认分支,通过公式默认为0的公式波形输出一条直线(如图7)。

图7

②当选择经典波形或者公式波形时,都可以通过LabVIEW自带的子VI进行输出,参数可通过条件结构外几个参数设置入口进行设置,最后可以通过元素同址操作将生成波形分别于两种噪声进行叠加(如图8以正弦波为例)。

图8

③当选择任意手绘波形时,条件结构将经过一个相对复杂很多的分支,首先是通过任意手绘波形图的属性节点将该波形图设置为可见(在初始化和其他分支中均为不可见)(如图9)。

通过循环加事件结构,对任意手绘图形进行采集,其基本原理是通过采集波形图中的游标坐标位置,并将y坐标转化为数组,出于精确度和系统鼠标位置采样率的影响,默认将波形图所采集的信息限制为50个点,x坐标分别为0~49,在初始化过程中,将50个点的y坐标都设置为0(如图10)。

图9图10

该事件结构总共有4个事件分支,最主要的两个分支为“游标移动”和“鼠标按下”,在“游标移动”分支中,将游标所在的位置的y坐标代替初始化的50个位置x坐标相同点的y坐标(如图11)。

在“鼠标按下”分支中,通过条件结构,当鼠标坐标在波形图范围内时,将鼠标的坐标位置输入游标的坐标位置,从而激活上一个分支。

通过不停循环上述两个分支,可以采集到鼠标的位置信息,并将转化为一个大小为50的一维数组(如图12)。

图11

图12

剩下两个分支,分别为“任意波形”按钮值变化分支和设有固定时长(具体时长将在之后的算法说明中介绍)的超时分支,其功能都用于停止事件结构外的循环结构,但是不同在于,当进入“值变化”分支时,最外层的条件结构将重新进入默认分支,输出零波形(如图13),而当进入“超时”分支时,条件结构依旧进入“任意波形”分支,用于自动刷新任意手绘波形,以达到输出连续波形的目的(如图14)。

图13

图14

在经过上述的循环事件结构之后,将所得到的新的50个点的y坐标值通过局部变量更新到初始化之后的y坐标值。

事件结构和循环结构之间的顺序结构是为了起到使程序运行更有序。

再通过线性插值的方式,将50个y坐标值细化为5000个y坐标值,具体的插值方法将在算法说明中进行介绍,最后再和噪声进行叠加,生成最终波形。

(4)输出波形

本过程需要运用到DAQmx功能,通过简单的DAQ助手设置,即可达到目的,由于所有分支都可以自动连续输出波形,因此只需将DAQ助手的数据输入端口连接至输出波形图的输入数据流即可(如图15),DAQ助手的所设置的生成方式为采用发生一段数据(硬件定时)的方式,生成模式选用N采样。

(由于本人笔记本电脑未安装DAQ,因此无法运行带有DAQ的程序,因此所提交的压缩包内包含完整程序和无DAQ的删减版程序。

图15

-

三、算法说明

在本任意波形发生器程序中,并未运用到过多很复杂的算法,主要的算法都运用在手绘任意波形的事件结构分支中。

在上面的程序说明中,已经详细地说明可以通过一系列的循环结构、条件结构和事件结构采集到任意手绘图形的信息,具体的信息内容就是50个y坐标组成的数组,接下来所要用到的就是具体的差值算法,插值的原理是通过在已知点之间根据一定规则生成更多的点,使原来的曲线所包含的信息更完整。

插值的方式有很多,包括最近、线性、样条、拉格朗日等等,在本程序中主要是使用线性插值,用户也可根据需求自己调节插值方式,这里主要介绍默认的线性插值。

线性插值的基本原理如下:

图16

在本程序中将50个点的y坐标作为y值输入到一维插值子VI,再通过一个FOR循环生成0~49的一维数组作为与y坐标相对应的x坐标输入到一维插值子VI,最后将x值的个数在相同区间内变为原来的100倍,即在原来的每两个点等间距插入99个点。

最后输出的则为5000个y坐标,再通过创建波形函数,设置dt(即为相邻两点之间横坐标之差)的大小来生成最后的波形,而dt的大小由频率直接调节,两者呈反比关系。

由于这样的设置会导致频率越大,整个波形的长度就越小的问题,因此需要在频率的同时,调节整个波形的长度。

而调节波形长度需要调节y值的个数,即y值的个数与dt的乘积为1,当y值的个数超过50时,需要通过一个FOR循环,使用商和余数函数重复之前的50个y值(如图17)。

图17

在叠加噪声的过程中,由于高斯噪声和均匀白噪的dt都默认为0.001,因此无法直接与手绘生成波形相加。

此时则通过获取波形成分的函数将噪声信号中的y值剥离出来,再通过设置和手绘波形相同的dt将噪声信号的y值重新创建为波形,最后再通过同址操作将两者叠加(如图18)。

图18

之前还说到了事件结构中的超时分支的时长问题,由于这个分支起到自动刷新的作用,因此需要在波形生成瞬间,恰好能够自动刷新(忽略程序运行的时间),因此这个时间应该为dt与y值个数之积(即为1)有线性关系,经多次试验,发现当超时时长为积的十分之一时,波形能近似不间断输出,因此如此设置超时时长(如图19)。

图19

最后要介绍的在本程序中多次运用并提到的同址操作,使用元素同址操作结构用于控制LabVIEW编译器更高效地执行常见操作,以及提高内存使用效率。

许多LabVIEW操作要求LabVIEW对数据复制并保存在内存中,因此降低了执行速度且增加了内存占用,使用元素同址操作结构有效避免了不必要的数据复制,改善了内存和VI的效率(如图20)。

图20

四、结果分析与收获建议

1、结果分析

本程序最终所能做到的是能通过电压模拟出所设置的波形,通过NI公司的NIMAX软件,直接检验所模拟的波形,结果如下:

正弦波形:

图21

方波波形:

图22

三角波波形:

图23

锯齿波波形:

图24

公式波波形:

图25

手绘任意波形:

图26

图27

正弦波状态下的高斯噪声叠加:

图28

正弦波状态下的均匀白噪声叠加:

图29

任意手绘波形状态下的高斯噪声和均匀白噪声的双重叠加:

图30

2、收获与建议

这门课与其他课程不同,相对更注重实践操作和自主学习。

在前半学期的课程中,老师在课堂上结合实例由浅入深地介绍了LabVIEW这款在测量控制方面具有很大功能的软件,让我对这款软件了有了基本的了解。

在后半学期的实际完成程序的过程中,自己动手、自己摸索的环节更是让我对这款软件有了更深的理解,同时,我也发现,光凭老师上课所讲的内容,到做到能独自开发一款程序,还有很长的路要走。

在完成大作业的过程中,我曾凭着上半学期所学知识的记忆以及自己对软件的理解试图完成任务,但发现寸步难行,我不得不寻求图书馆和互联网的帮助,终于,在摸索中找到了思路。

由于LabVIEW是关于测量和控制方面的软件,因此许多功能直接关系到信号处理的知识,但是由于本人尚未修过类似课程,因此在选题和实际制作中都遇到了不小的困难,但最终都被一一克服。

这个过程不仅让我对LabVIEW这款软件有了真正的了解和认识,同时更是锻炼了我自己的自主学习和查阅文献的能力。

在本课程结束之后,我不会停下对LabVIEW的了解和学习,LabVIEW亲民的可视化编程界面深深的吸引了我,让我真正能在编程中体会快乐,体会自己辛苦劳动的结晶。

本课程给学生很好地了解LabVIEW软件提供了一个平台,让同学们能更深入地研究这样一款在工程领域应用十分广泛的软件。

但是我觉得本课程从整个学期看来,有些头轻脚重的感觉,上半学期没有作业、没有考勤,过于轻松,不免会给大家一种“水课”的懈怠感,但后半学期的大作业,在时间上对同学着实有不小的压力,特别是对于没有学过任何信号相关知识的低年级同学。

希望老师以后能在前半学期中,适当地布置一些作业,依赖能让同学们更好地理解所学到的知识,另一方面,也能让大家更好地适应这款软件。

另一方面,老师也可在课上适当地教授一些信号方面的内容,或者在选课之初就提醒尚未学习信号方面知识的同学谨慎选课。

这样一来,或许能让大家更从容地完成这门课的学习,从而更好地学会使用操作LabVIEW软件。

最后,感谢老师课上的认真讲解和课后的耐心辅导!

五、参考文献

1、《虚拟仪器设计基础教程》陈锡辉,张银鸿 著

2、一个NI工程师的十年编程经验(第2版)阮奇桢 著

3、LABVIEW大学实用教程(第三版)(美)特拉维斯克林 著

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2