利用LabWindows/CVI开发工具进行虚拟信号发生器的设计

描述

 引言

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

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

1 硬件组成

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

5 结论

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


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分