LabWindows/CVI 在虚拟信号发生器设计中的应用

时间:2010-10-16

     摘要:通过虚拟信号发生器的设计,阐述利用LabWindows/CVI 进行虚拟仪器设计的方法、步骤和实现技术,并借此展望虚拟仪器的广阔应用前景。利用其软件开发平台,按步骤阐述了虚拟信号发生器设计和实现过程,终实现了信号发生器的设计,该信号发生器可以选择波形以及幅值和频率,功能可以由用户根据需要自行设计或扩展,人机界面友好。

     引言

  20 世纪80 年代中后期,国外提出了“虚拟仪器”、“虚拟系统”的概念,随着微电子技术、计算机技术的飞速发展及其在测量与仪器上的应用,测试领域的新理论、新方法以及仪器结构不断出现,突破了传统仪器的概念,继而开创了仪器仪表的新时代——虚拟仪器。虚拟仪器技术的思想就是利用计算机的硬/软件资源,使本来需要硬件实现的技术软件化(虚拟化),以便限度的降低系统成本,增强系统的功能和灵活性。

  虚拟仪器技术的实质是利用的计算机技术来实现和扩展传统仪器的功能。其基本构成包括计算机、虚拟仪器软件、硬件接口模块等。在这里,硬件仅是为了解决信号的输入输出,软件才是整个系统的关键。当基本硬件确定了以后,就可以通过不同的软件实现不同的功能。虚拟仪器应用软件集成了仪器的所有采集、控制、数据分析、结果输出和用户界面等功能,使传统仪器的某些硬件甚至整个仪器都被计算机软件所代替。虚拟仪器系统的设计与实现已成为仪器产业发展的一个重要方向,代表着一起发展的方向和潮流,是信息技术的一个重要领域,开创了个人计算机仪器时代,是测量仪器工业发展的一个里程碑,其思想将更多地渗透到未来电子测量仪器和自动化测试技术的发展中去,有着广泛的发展和应用前景。

  1 硬件组成

  虚拟仪器的硬件平台主要是解决信号的输入输出,由计算机和I/O 接口设备组成的,计算机是硬件平台的,一般是工作站、工控机,亦可以是普通的带总线插槽的个人计算机. I/O接口设备负责被测信号的采集、调整、放大,以及A/D 转换。本文中硬件由工控机及其接口,数据采集卡和放大及滤波电路构成,其原理框图如图1 所示:

硬件原理框图

图1 硬件原理框图

  本设计用的数据采集设备是采用 NI 公司生产的1200 系列Lab-PC-1200,这是一种性能优良低价位适合PC 及兼容机的数据采集卡,它能够完成信号采集(A/D),数字信号的模拟输出(D/A)及定时/计数功能。它具有8 个12 位模拟量输入通道, 2 个12 位模拟量输出通道, 24 个数字量I/O 接口和3 个16 位定时/计数器。Lab-PC-1200 输出的模拟信号通过滤波器进行滤波平滑、放大后即可使用。其中滤波器的选择视输出信号频率范围而定,放大倍数根据实际需要分不同的档位。

  2 仪器面板设计

  仪器软件开发采用的是美国 NI 公司的虚拟仪器开发环境LabWindows/CVI,它是基于C语言的半图形化软件开发平台,将使用灵活的C 语言平台与用于数据采集、分析和显示的测控工具有机结合起来,利用它的集成开发环境、交互式编程方法、函数面板和丰富的库函数大大增强了C 语言的功能,为熟悉C 语言的开发设计人员便于编写检测系统、自动测试系统、数据采集系统等应用软件提供的一个理想的软件开发环境。面板设计过程包括创建控件和修改控件属性两部分,设计的前面板如图 2 所示。

仪器前面板

图2 仪器前面板

  2.1 创建控件

  用户界面共 6 个控件:两个Graph 控件,三个Ring 控件,一个Command Button.。启动CVI 在工程窗口中选择File→New→User Interface(*.uir),打开用户界面编辑窗口,在其中点右键,依次选择Graph 控件,Ring 控件和 Command Button.,依次拖放好各自位置。

  2.2 修改控件属性

  波形选择 Ring 控件主要是要产生几种波形选项,包括无,正弦波,三角波,锯齿波,方波。双击Ring 控件进行设置,将Label 设置为“波形选择”将Constant Name 设置为“WAVEFORM”将Callback Function 设置“WaveFormChooseCB”,然后通过Label/ValuePairs…设置Ring 控件的选择项。Graph 控件和Command Button 控件设置与Ring 控件类似。修改完成后,选择 File→Save as,保存.uir 文件,其文件名为信号发生器.uir 保存,点击Save 关闭保存文件对话框。

  3 仪器程序设计

  仪器的程序设计是整个虚拟仪器的部分,在用户完成用户界面设计后,CVI 可自动生成程序的框架以及缺醒消息处理函数,只要在这些函数中添加所需的代码即可完成程序的设计。具体操作如下:在用户界面窗口菜单中选择Code→Generate All Code,点OK 键即可进入代码编辑窗口,即可生成程序的框架,限于篇幅有限,本文只写出自己根据仪器需要自己编写的部分代码。首先在源代码窗口main 函数上方输入如下代码声明变量和函数,如


  完成波形选择函数:


  编写调用函数show_wave()




  当点击用户界面上的波形选择时,程序将自动执行WaveFormChooseCB 函数,实现函数波形和频谱的产生并显示。

  添加完成以上代码添加后,在源代码窗口里选择File→Save,以文件名信号发生器.c 保存源文件。

  4 调试运行

  在工程窗口中选择:Edit→Add Files To Project…→All Files,依次将前述用户界面文件,源程序代码文件以及自动生成的头文件添加到工程文件中,现在已完成信号发生器.prj。选择工程窗口Run→Debug 信号发生器_dbg.exe 执行代码,编译过程中LabWindows/CVI 会发现程序缺少ansi_c.h 引用并弹出对话框询问是否在源文件中加入引用语句,点击Yes 添加该应用文件,接着根据提示在运行前保存对文件‘信号发生器.c’的修改。

  运行时,我们选择锯齿波为例,在波形选择键选中锯齿波,幅值为1.12V,频率为62.39Hz,在波形显示上得到一个锯齿波并在频谱显示上显示其频谱,如图3。

锯齿波波形图及频谱图

图3 锯齿波波形图及频谱图

  5 结论

  本文通过以 LabWindows/CVI 为虚拟仪器的开发工具进行虚拟信号发生器的设计,充分利用了计算机的强大信息处理能力和LabWindows/CVI 强大的开发功能与灵活的编程手段,终实现了虚拟信号发生器的设计,可以看出虚拟仪器给用户提供了一个充分发挥自己才能和想象力的空间,可根据用户自己的设想及要求,通过编程来设计、组建自己的仪器系统,它的灵活、开放,技术更新周期短,可随着计算机技术的发展和用户的需求进行仪器与系统的升级,在性能维护和灵活组态等多个方面有着传统仪器无法比拟的优点。


  
上一篇:SCA100t 和MCU在数字倾角传感器中的应用
下一篇:基于形体特征的手写体数字识别

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料