ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:2.74MB ,
资源ID:510099      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-510099.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于LabVIEW的任意波形发生器.docx)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

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

1、课程设计报告虚拟仪器课程设计报告一、 综述任意波形发生器是一种常用的信号源, 广泛用于科学研究生产实践和教学实践等领域。不论是在生产上还是在科研与教学上, 任意波形发生器都是电子工程师信号仿真实验的最佳工具。一般来讲任意波形发生器,是一种特殊的信号源,综合具有其它信号源波形生成能力,因而适合各种仿真实验的需要。 1、信号发生器的发展历史自上世纪20年代,首台信号发生器诞生以来,信号发生器经历了一个漫长的发展期,特别是前四十年,由于早期机械结构比较复杂,功率比较大,电路比较简单,因此发展速度比较慢。而之后的一二十年间,由于分析元件和模拟集成电路的应用,信号发生器开始可以产生正弦波、方波、锯齿波、

2、三角波等几种简单波形,但同时也存在着稳定性差、尺寸大、价格贵、功耗大等诸多问题。随着70年代微处理器的出现,利用微处理器、模数转换器和数模转换器,信号发生器的功能被大大地开发,能够通过硬件和软件产生较复杂的波形,这类的信号发生器多以软件为主,随着我国经济和科技的发展, 对相应的测试仪器和测试手段也提出了更高的要求。基于LabVIEW的任意波形发生器就是在这个基础上发展而来。 2、基于LabVIEW的信号发生器的特点LabVIEW作为虚拟仪器技术的主要代表,在信号发生器方面,有着许多不可超越的优点,如虚拟仪器成本低、功能多、灵活性强、人机界面友好并且拥有不输传统台式发生器的性能等等。其最大的优点

3、就在于用户可根据自己的需求自己修改程序,来达到输出所需波形的目的,这是传统的台式发生器无法比拟的。 3、课程要求以及可行性分析在本课程中,我们需要通过使用LabVIEW2012这款软件,配合实验室配置的数据采集卡和电路实验箱,完成一款简易的任意波形信号发生器的程序开发。由于实验室的配置齐全,硬件方面可以轻松达到程序最终所需的要求。而在软件方面,由于LabVIEW内置强大的拓展包和程序库,我们可以通过调用许多其自身已有的子VI如正弦信号发生、公式信号发生、一维插值等,轻松达到输出波形的目的。其主要的工作量将集中在任意手绘波形以及各种程序结构的嵌套等方面。二、 程序说明1、 整体流程本程序从打开运

4、行到输出波形要经历打开运行程序、选择波形、控制波形属性、生成波形和输出波形五个过程。(如图1)打开运行程序选择波形控制波形属性生成波形输出波形图12、具体说明接下来将从上述五个过程对程序进行详细的说明:(1) 打开运行该过程相对简单,在按下运行按钮之后,程序开始运行,但在运行程序主结构之前会经历一个初始化过程(如图2),通过顺序结构在主结构前添加一帧完成,其主要内容,为是各按钮复位,调节各参数至初始值(除频率均为0,频率为1Hz),同时对任意手绘波形部分的一些功能参数进行初始化。在初始化之后,程序进入主结构进行运行。图2(2) 选择波形程序的主结构是通过最外层的循环加条件结构完成的,通过不停地

5、循环运行条件结构,针对所给条件运行程序,波形的选择按钮是通过整合成一个簇,再转化为数组来判断的,再通过一个小FOR循环和条件结构,来对同时选择两种及两种以上波形的情况进行甄别(如图3,图4 为其前面板)。此外在这个过程中,还设置了统一的波形参数入口,例如频率、幅度、占空比、初始相位等等,同时还包括高斯噪声和均匀噪声的控制开关(如图6,前面板如图5),为之后的控制波形属性过程做下铺垫。图3图5图4图6(3) 控制波形属性与生成波形这两个过程有着很紧密的关系。由于选择不同的波形,这两个过程也会有不同的运行结果,主要可以分为三类。 当为选择任何一种波形时,条件结构会经过默认分支,通过公式默认为0的公

6、式波形输出一条直线(如图7)。图7 当选择经典波形或者公式波形时,都可以通过LabVIEW自带的子VI进行输出,参数可通过条件结构外几个参数设置入口进行设置,最后可以通过元素同址操作将生成波形分别于两种噪声进行叠加(如图8 以正弦波为例)。图8 当选择任意手绘波形时,条件结构将经过一个相对复杂很多的分支,首先是通过任意手绘波形图的属性节点将该波形图设置为可见(在初始化和其他分支中均为不可见)(如图9)。通过循环加事件结构,对任意手绘图形进行采集,其基本原理是通过采集波形图中的游标坐标位置,并将y坐标转化为数组,出于精确度和系统鼠标位置采样率的影响,默认将波形图所采集的信息限制为50个点,x坐标

7、分别为049,在初始化过程中,将50个点的y坐标都设置为0(如图10)。 图9 图10该事件结构总共有4个事件分支,最主要的两个分支为“游标移动”和“鼠标按下”,在“游标移动”分支中,将游标所在的位置的y坐标代替初始化的50个位置x坐标相同点的y坐标(如图11)。在“鼠标按下”分支中,通过条件结构,当鼠标坐标在波形图范围内时,将鼠标的坐标位置输入游标的坐标位置,从而激活上一个分支。通过不停循环上述两个分支,可以采集到鼠标的位置信息,并将转化为一个大小为50的一维数组(如图12)。图11图12剩下两个分支,分别为“任意波形”按钮值变化分支和设有固定时长(具体时长将在之后的算法说明中介绍)的超时分

8、支,其功能都用于停止事件结构外的循环结构,但是不同在于,当进入“值变化”分支时,最外层的条件结构将重新进入默认分支,输出零波形(如图13),而当进入“超时”分支时,条件结构依旧进入“任意波形”分支,用于自动刷新任意手绘波形,以达到输出连续波形的目的(如图14)。图13图14在经过上述的循环事件结构之后,将所得到的新的50个点的y坐标值通过局部变量更新到初始化之后的y坐标值。事件结构和循环结构之间的顺序结构是为了起到使程序运行更有序。再通过线性插值的方式,将50个y坐标值细化为5000个y坐标值,具体的插值方法将在算法说明中进行介绍,最后再和噪声进行叠加,生成最终波形。(4) 输出波形本过程需要

9、运用到DAQmx功能,通过简单的DAQ助手设置,即可达到目的,由于所有分支都可以自动连续输出波形,因此只需将DAQ助手的数据输入端口连接至输出波形图的输入数据流即可(如图15),DAQ助手的所设置的生成方式为采用发生一段数据(硬件定时)的方式,生成模式选用N采样。(由于本人笔记本电脑未安装DAQ,因此无法运行带有DAQ的程序,因此所提交的压缩包内包含完整程序和无DAQ的删减版程序。)图15-三、 算法说明在本任意波形发生器程序中,并未运用到过多很复杂的算法,主要的算法都运用在手绘任意波形的事件结构分支中。在上面的程序说明中,已经详细地说明可以通过一系列的循环结构、条件结构和事件结构采集到任意手

10、绘图形的信息,具体的信息内容就是50个y坐标组成的数组,接下来所要用到的就是具体的差值算法,插值的原理是通过在已知点之间根据一定规则生成更多的点,使原来的曲线所包含的信息更完整。插值的方式有很多,包括最近、线性、样条、拉格朗日等等,在本程序中主要是使用线性插值,用户也可根据需求自己调节插值方式,这里主要介绍默认的线性插值。线性插值的基本原理如下:图16在本程序中将50个点的y坐标作为y值输入到一维插值子VI,再通过一个FOR循环生成049的一维数组作为与y坐标相对应的x坐标输入到一维插值子VI,最后将x值的个数在相同区间内变为原来的100倍,即在原来的每两个点等间距插入99个点。最后输出的则为

11、5000个y坐标,再通过创建波形函数,设置dt(即为相邻两点之间横坐标之差)的大小来生成最后的波形,而dt的大小由频率直接调节,两者呈反比关系。由于这样的设置会导致频率越大,整个波形的长度就越小的问题,因此需要在频率的同时,调节整个波形的长度。而调节波形长度需要调节y值的个数,即y值的个数与dt的乘积为1,当y值的个数超过50时,需要通过一个FOR循环,使用商和余数函数重复之前的50个y值(如图17)。图17在叠加噪声的过程中,由于高斯噪声和均匀白噪的dt都默认为0.001,因此无法直接与手绘生成波形相加。此时则通过获取波形成分的函数将噪声信号中的y值剥离出来,再通过设置和手绘波形相同的dt将

12、噪声信号的y值重新创建为波形,最后再通过同址操作将两者叠加(如图18)。图18之前还说到了事件结构中的超时分支的时长问题,由于这个分支起到自动刷新的作用,因此需要在波形生成瞬间,恰好能够自动刷新(忽略程序运行的时间),因此这个时间应该为dt与y值个数之积(即为1)有线性关系,经多次试验,发现当超时时长为积的十分之一时,波形能近似不间断输出,因此如此设置超时时长(如图19)。图19最后要介绍的在本程序中多次运用并提到的同址操作,使用元素同址操作结构用于控制LabVIEW编译器更高效地执行常见操作,以及提高内存使用效率。许多LabVIEW操作要求LabVIEW对数据复制并保存在内存中,因此降低了执

13、行速度且增加了内存占用,使用元素同址操作结构有效避免了不必要的数据复制,改善了内存和VI的效率(如图20)。图20四、 结果分析与收获建议1、结果分析本程序最终所能做到的是能通过电压模拟出所设置的波形,通过NI公司的NI MAX软件,直接检验所模拟的波形,结果如下:正弦波形:图21方波波形:图22三角波波形:图23锯齿波波形:图24公式波波形:图25手绘任意波形:图26图27正弦波状态下的高斯噪声叠加:图28正弦波状态下的均匀白噪声叠加:图29任意手绘波形状态下的高斯噪声和均匀白噪声的双重叠加:图302、 收获与建议这门课与其他课程不同,相对更注重实践操作和自主学习。在前半学期的课程中,老师在

14、课堂上结合实例由浅入深地介绍了LabVIEW这款在测量控制方面具有很大功能的软件,让我对这款软件了有了基本的了解。在后半学期的实际完成程序的过程中,自己动手、自己摸索的环节更是让我对这款软件有了更深的理解,同时,我也发现,光凭老师上课所讲的内容,到做到能独自开发一款程序,还有很长的路要走。在完成大作业的过程中,我曾凭着上半学期所学知识的记忆以及自己对软件的理解试图完成任务,但发现寸步难行,我不得不寻求图书馆和互联网的帮助,终于,在摸索中找到了思路。由于LabVIEW是关于测量和控制方面的软件,因此许多功能直接关系到信号处理的知识,但是由于本人尚未修过类似课程,因此在选题和实际制作中都遇到了不小

15、的困难,但最终都被一一克服。这个过程不仅让我对LabVIEW这款软件有了真正的了解和认识,同时更是锻炼了我自己的自主学习和查阅文献的能力。在本课程结束之后,我不会停下对LabVIEW的了解和学习,LabVIEW亲民的可视化编程界面深深的吸引了我,让我真正能在编程中体会快乐,体会自己辛苦劳动的结晶。本课程给学生很好地了解LabVIEW软件提供了一个平台,让同学们能更深入地研究这样一款在工程领域应用十分广泛的软件。但是我觉得本课程从整个学期看来,有些头轻脚重的感觉,上半学期没有作业、没有考勤,过于轻松,不免会给大家一种“水课”的懈怠感,但后半学期的大作业,在时间上对同学着实有不小的压力,特别是对于没有学过任何信号相关知识的低年级同学。希望老师以后能在前半学期中,适当地布置一些作业,依赖能让同学们更好地理解所学到的知识,另一方面,也能让大家更好地适应这款软件。另一方面,老师也可在课上适当地教授一些信号方面的内容,或者在选课之初就提醒尚未学习信号方面知识的同学谨慎选课。这样一来,或许能让大家更从容地完成这门课的学习,从而更好地学会使用操作LabVIEW软件。 最后,感谢老师课上的认真讲解和课后的耐心辅导!五、 参考文献1、虚拟仪器设计基础教程 陈锡辉,张银鸿著2、一个NI工程师的十年编程经验(第2版) 阮奇桢著3、LABVIEW大学实用教程(第三版) (美)特拉维斯克林著

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

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