电子测量技术
ELECTRONICMEASUREMENTTECHNOLOGY
第29卷第5期2006年10月基于LabVIEW的波形发生器
陈永明王红超李继芳黄元庆
(厦门大学机电系厦门361005)
摘要:传统信号发生器只能产生正弦波、方波、三角波和锯齿波4种基本波形,虚拟波形发生器不仅能产生这些基本波形,还可以输出任意波形且价格低廉,可以满足高校实验室教学的需要。文中详细介绍了基于LabVIEW的虚拟波形发生器的组建方法,重点阐述了虚拟波形发生器的软面板和应用程序的设计。关键词:波形发生器;虚拟仪器;LabVIEW
VirtualfunctiongeneratorbasedonLabVIEW
ChenYongmingWangHongchaoLiJifangHuangYuanqing
(TheMechanicandElectronicEngineeringofXiamenUniversity,Xiamen361005)
Abstract:Thetraditionalsignalgeneratordevicecanonlyoutputthesinewave,thesquarewave,thetrianglewaveandthesaw-toothwave.Thevirtualfunctiongeneratorcannotonlyhavethesebasicprofiles,butalsomayoutputrandomwaveswithinexpensiveprices,cansatisfytheneedofuniversitylaboratoryteaching.ThispaperthoroughlyintroducesthemethodofbuildingvirtualfunctiongeneratorbasedonLabVIEW,andmainlysetsforthonthedesignofsoftpanelandapplication.
Keywords:functiongenerator;virtualinstrument;LabVIEW
0引言
信号发生器作为科学实验所必不可缺少的装置,被广泛地应用到教学、科研等各个实验领域。传统的模拟信号发生器一般只能产生几种常规的波形,而一些复杂和特殊的应用,要求输出任意波形的信号且易于程控,即便一些
[1]
高档仪器能够实现,其价格也极其昂贵。虚拟仪器借助计算机的软硬件资源,配以相应的I/O接口设备(在中低端应用中通常为多功能数据采集卡,本文使用的是NI公司的PCI6221,其性能指标见参考文献[2]),就可以构成功能适合用户需求的仪器。虚拟仪器功能强大、价格低廉、升级方便,在越来越多的领域可以取代传统仪器。LabVIEW是目前影响力最大的虚拟仪器应用软件开发平台[3],本文尝试用LabVIEW开发一款适用于高校实验室应用的多功能波形发生器。
将被禁用,模拟了传统波形发生器的互斥按键。产生一种波形后,在波形预览区域给出波形的时域图像,使用者可以观察波形是否符合要求。波形预览区域右下角绿色的指示灯用于表示是否正在输出波形。另外,当波形产生模块出现错误时,波形预览区域的右边会给出出错啦的提示。频率、幅值和直流偏置3个旋钮只对4种基本波形起作用,可以用鼠标旋转这3个旋钮连续改变它们的值,也可以在它们下面的数字控件中输入精确的值,当选择后3种波形时,它们将被禁用;开始、暂停和结束按钮用于对程序的控制。在LabVIEW控件库中并没有这种外观的按钮,但是LabVIEW提供了控件编辑器,可以利用它定制所需的控件。
2虚拟波形发生器的软件设计
虚拟波形发生器的工作原理是:首先配置好硬件设备,然后根据所需波形的幅值、数据点数等参数计算出不同波形的波形数据,由计算机将波形数据送到数据采集卡的输出缓冲区内,数据采集卡根据给定的更新频率进行D/A转换,就可以在输出端口得到相应的波形了。2.1互斥按钮的实现
LabVIEW没有提供这样的控件,只是提供了单个的
1虚拟波形发生器的界面
如图1所示,此虚拟波形发生器不仅可以产生正弦波、方波、三角波和锯齿波这4种基本波形,还可以发出公式波、任意波和扫频波这些特殊波形。点击相应的按钮就可以产生对应的波形,原来的按钮将弹起,同时这个按钮
*
基金项目:厦门大学创新团体发展计划(IRTXMU200606)资助项目
84陈永明等:基于LabVIEW的波形发生器第5期
2.2波形数据的产生
前4种基本波形数据可以用公式产生[5],例如正弦波以公式
2f(i)=Asini+DC,(i=0,1,2,,n-1)(1)
n
产生正弦波数据数组,这里数组长度即数据点数。
当选择产生公式波时,程序会弹出一个如图2所示的对话框,在这个对话框里可以输入任何能用一个公式y=f(t)来表达的波形,图2中所示的是产生一个调幅波的公式。在框图程序中应用了LabVIEW函数库中的公式波形产生模块FormulaWaveform.vi。需要注意的是FormulaWaveform.vi要求公式的自变量必须是t,它所支持的运算符和常用的函数详见参考文献[4]。
图1虚拟波形发生器的界面
布尔按钮控件。选择一个合适的布尔按钮控件,改变它的尺寸以适合程序窗口的大小;然后再复制6个这样的控件,将它们排列在一起,并将它们的名称依次更改为正弦波、方波、、扫频波。接下来将它们放在一个外观设置为透明的簇控件里(簇类似于c语言中的结构[4]
体),这样就实现了如图1中界面上波形选择按钮组的效果。
但是仅仅这样是不够的,因为按一个按钮后可以再按一下这个按钮使它弹起;并且按下这个按钮不能让上次按下的按钮弹起,这样会引起一个矛盾:有2个按钮的值为真,到底该发出哪个波形呢?
解决这个问题的方法如下:假设原先三角波按钮被按下,则这个按钮的值为T,其它按钮的值均为F,整个按钮簇的值就是FFTFFFF;现在使用者按下了正弦波按钮,那么按钮簇的值变为TFTFFFF,则簇数值改变的事件结构将被触发,程序将按钮簇原来的值按位取反,然后再和按钮簇的当前值按位与,将结果传递给按钮簇的本地变量,就可以把按钮簇的值变为TFFFFFF了;接下来将按钮簇的值转换成一个布尔数组[T,F,F,F,F,F,F],调用NI公司的GetRadioButton子VI搜索出值为T的元素的位置索引号,并将搜索到的索引号赋值给用于选择波形的数字控件Waveform的本地变量,同时GetRadioButton子VI将正弦波按钮的属性置为不可操作的状态,其它按钮的属性置为可以操作;然后程序退出内循环,但是并不退出外循环(只有按下停止按钮才能退出内循环和外循环),在下一个外循环中,波形产生子VI将产生一个周期的正弦波数据并把它们写入采集卡的输出缓冲区;最后程序进入内循环,持续发出正弦波,直到再次有控件的值改变。
图2公式波产生模块前面板
当需要采集卡发出没有任何规律的波形的时候,就需要任意波形发生器。本文设计的任意波形发生器可以采用两种办法产生任意波形:一是用鼠标抓住波形显示控件中的十字光标来拖出一个任意波形,如图3所示;二是从一个编辑好的波形文件中载入波形数据,波形文件必须是txt格式的,波形数据之间用逗号隔开,可以用Windows自带的记事本来编辑波形文件。这部分的程序流程如图4所示。
图3产生任意波的子VI前面板
当选择产生扫频波时,程序会弹出一个如图5所示的对话框,在这个对话框里可以输入扫频波的起始频率、结束频率、幅值、数据点数(点数越多,频率间隔越小,但是最大点数受到采集卡输出缓冲区大小的,PCI6221的输出缓冲区为8191个点[2])和更新频率,并选择是否要连续
85
第29卷
电子测量技术图4任意波形模块程序流程图
产生数据,设置完毕点击确定按钮就可以发出扫频波形了。产生扫频波数据的公式如下:
2(f2-f1)iyi=PeakAmplitudesin+2f
2Samples(s)
[6]
3结束语
实际使用情况表明,本文所设计的波形发生器完全可以满足学生实验的要求。而且在这一通用的PC-DAQ平台上,调用不同的虚拟仪器软件,可以实现不同的仪器功能。虚拟仪器成本低、功能全、可扩展性强,在我国大中专院校推广使用,能够有效缓解学校实验室资源难以满足学生需要的矛盾。
参考文献
[1]沈伟.基于存储扫描方式的任意波形信号发生器卡的
设计[J].北京理工大学学报,2005,25(3):216-219.[2]NationalInstruments.NI622xSpecifications.NationalInstrumentsCorp,2004.[3]薛得凤.基于图形化编程语言LabVIEW的一种虚拟仪器的实现[J].自动化与仪器仪表,2003(5):24-26.
[4]杨乐平.LabVIEW程序设计与应用[M].北京:电子工
业出版社,2005.
[5]杨乐平.LabVIEW程序设计与应用[M].北京:电子工
业出版社,2001.
1
i
(2)
式中:f1和f2为数字频率,它们的含义是每周期所含数据点的倒数,计算公式如下:
StartFrequencyf1=(3)
UpdateRateStopFrequencyf2=(4)
UpdateRate
图5扫频波产生模块前面板
[6]NI公司.LabVIEWHelp.NationalInstrumentsCorp,
2004.
86
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务