LabVIEW 信号发生器设计Word文件下载.docx
《LabVIEW 信号发生器设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《LabVIEW 信号发生器设计Word文件下载.docx(25页珍藏版)》请在冰点文库上搜索。
5.3.1功能描述:
18
5.3.2设计步骤...18
5.4虚拟三角波发生器的设计...21
5.4.1功能描述:
21
5.4.2设计步骤...21
5.5虚拟正弦波.方波.锯齿波.三角波发生器的的综合设计...24
5.5.1发生器的前面板...24
5.5.2综合发生器流程图设计...25
5.5.3综合发生器的运行结果...25
6.创新与思考...27
结语:
...27
致谢...27
参考文献:
...28
基于Labview的信号发生器的设计
【摘要】
本文实现了基于Labview7.0的虚拟正弦,余弦,方波,锯齿波,三角波信号发生器.可以根据需要,改变波形的频率和幅值,保存波形的分析参数到指定文件,并介绍了基于USB数据采集卡的虚拟信号输出。
本论文首先简介了虚拟函数信号发生器的开发平台,及虚拟信号发生器的设计思路,并且给出了基于labview的虚拟信号发生器的前面板和程序设计流程图,讲述了功能模块的设计步骤,提供了虚拟发生器的面板。
在设计信号发生器的过程中经过深入的思考,结合Labview的具体功能作了一定创新。
本仪器系统操作简便,设计灵活,具有很强的适应性。
【关键词】:
虚拟函数labview信号发生器
TheDesignofSignalGeneratorBasedonLabview
[Abstract]
ThisarticledescribesthevirtualLabview7.0basedonsine,cosine,square,sawtooth,trianglewavesignalgenerator.Canchangethewaveformofthefrequencyandamplitude,theanalysisofwaveformparameterssavedtothespecifiedfile,andintroducedtheUSBdataacquisitioncardbasedonthevirtualsignaloutput.IntroductionInthispaper,thefirstvirtualfunctionsignalgeneratorofthedevelopmentplatform,andvirtualsignalgeneratorsofdesignideas,andgivestheLabview-basedvirtualsignalgenerator'
sfrontpanelandtheprogrammingflowchartdescribesthedesignofthesefunctionalmodulesprovidesavirtualpanelgenerator.Signalgeneratorinthedesignprocess,aftercarefulthought,combinedwiththespecificfunctionofLabviewacertaininnovation.Theinstrumentsystemissimple,flexibledesign,hasastrongadaptability.[Keyword]:
VirtualfunctionLabviewsignalgenerator
1.引言
自从1986年美国NI(NationalInstrument)公司提出虚拟仪器的概念以来,随着计算机技术和测量技术的发展,虚拟仪器技术也得到很快的发展。
虚拟仪器是指:
利用现有的PC机,加上特殊设计的仪器硬件和专用软件,形成既有普通仪器的基本功能,又有一般仪器所没有的特殊功能的新型仪器。
与传统的仪器相比其特点主要有:
具有更好的测量精度和可重复性;
测量速度快;
系统组建时间短;
由用户定义仪器功能;
可扩展性强;
技术更新快等。
虚拟仪器以软件为核心,其软件又以美国NI公司的Labview虚拟仪器软件开发平台最为常用。
Labview是一种图形化的编程语言,主要用来开发数据采集,仪器控制及数据处理分析等软件,功能强大。
目前,该开发软件在国际测试、测控行业比较流行,在国内的测控领域也得到广泛应用。
函数信号发生器是在科学研究和工程设计中广泛应用的一种通用仪器。
下面结合一个虚拟函数信号发生器设计开发具体介绍基于图形化编程语言Labview的虚拟仪器编程方法与实现技术。
虚拟仪器技术是测量技术和计算机技术综合集成的产物,代表了现代测试技术和仪器技术发展。
所谓虚拟仪器(VirtualInstrument),就是用户在计算机平台上,根据要求定义和设计仪器的测试功能,使得使用者在操作这台计算机时,就像是在操作一台他自己设计的仪器。
VI是由用户利用一些基本硬件及软件编程技术组成的各种各样的仪器系统,它的功能是可由用户自己定义的。
自从引进了VI的技术,这就使用户可以随心所欲地根据自己的意愿,设计自己的仪器系统,就像温度测量计、电压表、图表记录器、数字仪和信号分析计等,都可在同一基本硬件上配置不同的软件而实现。
VI的另一用途是方案论证,用于在设计方案的论证过程中。
对于一种设计要求,我们可能有各种不同的实现方法,如每个方法都用传统的仪器试验一遍不仅花大量的人力,还要大量的财力。
而用基本硬件和基本软件组合的VI可方便地实现各种方法,以比较各个方案的优缺点。
如今,计算机是开放的工业标准化结构,可以提供处理、存储和显示的能力,所以可将计算机用作电子仪器的助动器,使用户自定义各种仪器功能成为现实。
现在流行的DAQ(数据采集)卡、GPIB(通用接口总线)卡、VXI(系统控制接口卡)等可以插入计算机的槽口。
VI通过改变软件的方法来适应各种不同的需求。
美国NI(国家仪器)公司数字化技术的插入式DAQ卡,具有构造一系列传统测量仪器的能力。
它配上该公司的Labview软件包(包含有DAQ的驱动程序)使用户方便迅速组建自己的应用系统。
传统的电子仪器是自封闭的系统,它具有信号输入、输出的能力,并有固定的用户界面,比如:
输入、输出信号接插件、旋钮、按钮、显示仪表、显示面板等。
一个仪器包括传感器、信号处理器、A/D转换器、微处理器、存储器和内部总线等专门化的电路。
通过这些电路来转换、测量、分析实际信号,并将结果以各种方式显示。
然而,有时为了构成具有一定功能的系统,配置了一套仪器,但对其中的某些仪器,只用到了其中一部分功能,而将它作其他功能使用时,却不具备或达不到所需指标。
如另配置一套仪器,不断效率不高,而且价格高。
要是能将原有的仪器稍加改动,就可以扩大其使用范围。
但是传统的仪器功能是由制造商决定的,用户不能任意更改,用户如按自己的要求定制仪器需要昂贵的价格。
虚拟仪器概念的提出是仪器发展史上的一场革命,代表着仪器发展的最新方向和潮流。
以下是传统测试仪器和虚拟仪器的一个比较:
表1-1:
传统仪器与虚拟仪器对照表
传统仪器
虚拟仪器
开发和维护费用高
基于软件体系的结构,大大节省开发和维护的费用
功能由仪器厂商定义
功能由用户自己定义
与其他仪器设备的连接十分有限
面向应用的系统结构,可以方便地与外设、网络或其他应用连接
数据无法编辑数
数据可编辑、存储、打印
硬件是关键部分
软件是关键部分
价格昂贵
价格低廉(是传统价格的五至十分之一)
技术更新慢(5--10年)
技术更新快(一般1--2年)
系统封闭、功能固定、扩展性低
基于计算机技术开放的功能模块可构成多种仪器
正是因为意识到了虚拟仪器的诸多优点及传统仪器的一些弊端,所以,我们计划开发了这样一台基于Labview(美国NI公司)的多功能虚拟数字发生器。
其集成了示波,,动态/静态波形分析,频谱分析,频率计,波形参数分析,信号发生,以及远程示波等功能。
在示波功能上,除了对波形的精确显示外,还的波形参数进行了显示和对其时域信号、频域信号进行了分析。
1.1Labview开发平台
Labview是LaboratoryVirtualInstrumentEngineeringWorkbench(实验室虚拟仪器集成开发环境)的简称,是有美国国家仪器公司(Nationalinstruments,IN)创立的一个功能强大而又灵活的仪器和分析应用开发工具。
Labview不同于基于文本的的编程语言(如Fortran和C),他是一种图形编程语言----通常称为G语言,其编程过程就是同过图形符号描述程序的运行。
NILabview使用已获取专利的数据流编程模式,他能是用户从基于文本程序语言的循序结构中解脱出来,他的执行循序是由节点间的数据而不是由文本行的循序决定的。
并且,Labview是唯一具有编译器的图形化程序环境,所生成的的优化代码的执行速率可以和C语言媲美。
Labview就有开放的环境,能和第三放软件轻松连接,通过Labview,用户可以把现有的应用程序和.NET组件、ActiveX、DLL以及广泛的网络协议相连,同样用户可以在Labview中创建能在其软件环境中调用的独立执行程序或动态连接库。
在设计集成系统中,特别是做硬件数据采集,仪器控制等,有其一套快速开发组件,从而大大缩短了系统的开发周期,着是其他开发平台所没法比较的。
下面对Labview基于图形化语言作简要介绍:
1.1.1程序前面板
程序前面板用于设置输入数值和观察输出量,用于模拟真实仪表的前面板。
在程序前面板上,输入量被称为控制(Controls),输出量被称为显示(Indicators)。
控制和显示是以各种图标形式出现在前面板上,如旋钮、开关、按钮、图表、图形等,这使这得前面板直观易懂。
1.1.2框图程序
每一个程序前面板都对应着一段框图程序。
框图程序用Labview图形编程语言编写,可以把它理解成传统程序的源代码。
框图程序由端口、节点、图框和连线构成。
其中端口被用来同程序前面板的控制和显示传递数据,节点被用来实现函数和功能调用,图框被用来实现结构化程序控制命令,而连线代表程序执行过程中的数据流,定义了框图内的数据流动方向。
上述信号发生器的框图程序如下面的的图2-2:
1.1.3图标/连接器
图标/连接器是子VI被其它VI调用的接口。
图标是子VI在其他程序框图中被调用的节点表现形式;
而连接器则表示节点数据的输入/输出口,就象函数的参数。
用户必须指定连接器端口与前面板的控制和显示一一对应。
连接器一般情况下隐含不显示,除非用户选择打开观察它。
1.1.4Labview中的操作模板
Labview具有多个图形化的操作模板,用于创建和运行程序。
这些操作模板可以随意在屏幕上移动,并可以放置在屏幕的任意位置。
操纵模板共有三类,为工具(Tools)模板、控制(Controls)模板和功能(Functions)模板。
工具模板(ToolsPalette)
工具模板为编程者提供了各种用于创建、修改和调试VI程序的工具。
如果该模板没有出现,则可以在Windows菜单下选择ShowToolsPalette命令以显示该模板。
当从模板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。
当从Windows菜单下选择了ShowHelpWindow功能后,把工具模板内选定的任一种工具光标放在框图程序的子程序(SubVI)或图标上,就会显示相应的帮助信息。
工具图标有如下几种:
操作工具:
使用该工具来操作前面板的控制和显示。
使用它向数字或字符串控制中键入值时,工具会变成标签工具的形状。
选择工具:
用于选择、移动或改变对象的大小。
当它用于改变对象的连框大小时,会变成相应形状。
标签工具:
用于输入标签文本或者创建自由标签。
当创建自由标签时它会变成相应形状。
连线工具:
用于在框图程序上连接对象。
如果联机帮助的窗口被打开时,把该工具放在任一条连线上,就会显示相应的数据类型。
对象弹出菜单工具:
用左鼠标键可以弹出对象的弹出式菜单.
漫游工具:
使用该工具就可以不需要使用滚动条而在窗口中漫游。
断点工具:
使用该工具在VI的框图对象上设置断点。
探针工具:
可以在框图程序内的数据流线上设置探针。
程序调试员可以通过控针窗口来观察该数据流线上的数据变化状况。
颜色提取工具:
使用该工具来提取颜色用于编辑其他的对象。
颜色工具:
用来给对象定义颜色。
它也显示出对象的前景色和背景色。
与上述工具模板不同,控制和功能模板只显示顶层子模板的图标。
在这些顶层子模板中包含许多不同的控制或功能子模板。
通过这些控制或功能子模板可以找到创建程序所需的面板对象和框图对象。
用鼠标点击顶层子模板图标就可以展开对应的控制或功能子模板,只需按下控制或功能子模板左上角的大头针就可以把对这个子模板变成浮动板留在屏幕上。
1.1.5控制模板(ControlsPalette)
用控制模板可以给前面板添加输入控制和输出显示。
每个图标代表一个子模板。
如果控制模板不显示,可以用Windows菜单的ShowControlsPalette功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板。
注:
只有当打开前面板窗口时才能调用控制模板。
控制模板如左图所示,以下介绍几个常用的模板:
数值子模板:
包含数值的控制和显示。
布尔值子模块:
逻辑数值的控制和显示。
数组和群子模板:
复合型数据类型的控制和显示。
图形子模板:
显示数据结果的趋势图和曲线图。
修饰子模板:
用于给前面板进行装饰的各种图形对象。
调用存储在文件中的控制和显示的接口。
1.1.6功能模板(FunctionsPalette)
功能模板是创建框图程序的工具。
该模板上的每一个顶层图标都表示一个子模板。
若功能模板不出现,则可以用Windows菜单下的ShowFunctionsPalette功能打开它,也可以在框图程序窗口的空白处点击鼠标右键以弹出功能模板。
(注:
只有打开了框图程序窗口,才能出现功能模板。
)
功能模板如右图所示。
以下介绍几个常用的模板:
结构子模板:
包括程序控制结构命令,例如循环控制等,以及全局变量和局部变量。
数值运算子模板:
包括各种常用的数值运算符,如+、-等;
以及各种常见的数值运算式,如+1运算;
还包括数制转换、三角函数、对数、复数等运算,以及各种数值常数。
布尔逻辑子模板:
包括各种逻辑运算符以及布尔常数。
群子模板:
包括群的处理函数,以及群常数等。
这里的群相当于C语言中的结构。
比较子模板:
包括各种比较运算函数,如大于、小于、等于。
时间和对话框子模板:
包括对话框窗口、时间和出错处理函数等。
信号处理子模板:
包括信号发生、时域及频域分析功能模块。
“选择…VI子程序”子模板:
包括一个对话框,可以选择一个VI程序作为子程序(SUBVI)插入当前程序中。
1.1.7Labview中的框图程序
框图程序是由节点、端子、图框和连线四种元素构成的。
节点类似于文本语言程序的语句、函数或者子程序。
Labview有二种节点类型----函数节点和子VI节点。
两者的区别在于:
函数节点是Labview以编译好了的机器代码供用户使用的,而子VI节点是以图形语言形式提供给用户的。
用户可以访问和修改任一子VI节点的代码,但无法对函数节点进行修改。
端子是只有一路输入/输出,且方向固定的节点。
Labview有三类端子----前面板对象端子、全局与局部变量端子和常量端子。
对象端子是数据在框图程序部分和前面板之间传输的接口。
一般来说,一个VI的前面板上的对象(控制或显示)都在框图中有一个对象端子与之一一对应。
当在前面板创建或删除面板对象时,可以自动创建或删除相应的对象端子。
控制对象对应的端子在框图中是用粗框框住的。
它们只能在VI程序框图中作为数据流源点。
显示对象对应的端子在框图中是用细框框住的。
图框是Labview实现程序结构控制命令的图形表示。
如循环控制、条件分支控制和顺序控制等,编程人员可以使用它们控制VI程序的执行方式。
代码接口节点(CIN)是框图程序与用户提供的C语言文本程序的接口。
连线是端口间的数据通道。
它们类似于普通程序中的变量。
数据是单向流动的,从源端口向一个或多个目的端口流动。
不同的线型代表不同的数据类型。
在彩显上,每种数据类型还以不同的颜色予以强调。
当需要连接两个端子时,在第一个端子上点击连线工具(从工具模板栏调用),然后移动到另一个端子,再点击第二个端子。
端子的先后次序不影响数据流动的方向。
当把连线工具放在端子上时,该端子区域将会闪烁,表示连线将会接通该端子。
当把连线工具从一个端口接到另一个端口时,不需要按住鼠标键。
当需要连线转弯时,点击一次鼠标键,即可以正交垂直方向地弯曲连线,按空格键可以改变转角的方
2.虚拟信号发生器的设计思想
虚拟仪器通过底层设备驱动软件与真实的仪器系统进行通讯,并以虚拟仪器面板的形式在计算机屏幕上显示与真实仪器面板操作元素相对应的各种控键.虚拟信号发生器可产生正弦波、方波和三角波等信号,根据需要,可调节其中面板上的控键,改变信号的频率、幅度与相位,并可以进行数据存储,所有信号发生的结果都可以通过软件设计的虚拟面板显示..
2虚拟信号发生器的软件设计
2.1 前面板的设计
根据传统信号发生器面板控键的功能,利用Labview中的控制模板,分别在设计面板上放入模拟实际信号发生器控键的数据输入控键、显示器、数据输出控件、开关、选择器.显示器用于显示输出的信号波形,数据输入控键用于输出信号的信号频率、采样频率、采样数、振幅和相位,数据输出控键则用于选择信号类型.
打开Labview前面板编辑窗口,点击鼠标右键,显示控制模板,选择Graph>
>
WaveformGraph,作为信号发生器的显示器.在显示器模板上点击鼠标右键,对其进行属性设置,如根据被显示波形的频率与幅度值的变化,利用工具模板中的文字工具,对显示器横(时间)、纵(幅度)坐标的刻度重新设置.用Graph控键设计的显示器是完全同步的,波形稳定.
2.2 参数设置控件
(1)在前面板的设计窗口中,打开控制模块执行Allcontrolls>
Numeric>
>
Knob操作,得到幅值等控制旋钮.
(2)将鼠标移至旋钮单击右键选择属性(Proper2ties)选项,在随后弹出的对话框中的外观(Appear2ance)选项的标签中将这些旋钮分别命名为“频率调节”、“幅度调节”和“相位调节”等.
(3)最后定义精度.根据频率和幅度的数值范围,我们将其精度定义为双精度浮点型(DBL).具体操作仍然是在属性(Properties)选项的数据范围(Data
range)选项中的Representation内完成.
2.3 输出波形选择按钮
用一个Case结构来控制波形的产生.可以选择输出为正弦信号或是方波信号、三角波等.具体操作为:
在前面板的设计窗口中,打开控制模块,执行Almontroll→ring&
Enum→Textring,修改名称为waveselect(波形选择).然后右键点击properties选择EditItems项,在表格中添加和编辑sinewave、ttriangle、squarewave等,并设置其先后顺序.
2.4 波形显示控件
这个控件用来显示所产生的波形.执行Controls>
Graph>
WaveformChart操作,调入所选图标.其横轴为时间轴,纵轴为电压轴.注意:
控件参数设置应考虑到采样频率fs,信号频率f一个周期采样点n与总点数N=Samples的关系:
fs=nfx,所以fs的最大值应该是被测信号频率fs的最大值n,且N≥n.
2.5 开关控件
此开关用于结束运行.执行Allcontrols>
Boolean>
StopButton操作,调入开关按钮,标记为“STOP”.。
注意:
在完成对虚拟仪器的前面板设计后,若需对其进行装饰,可以执行Allcontrols>
Decorations操作,然后根据需要在其选项框里选择相应的内容对你所设计的前面板进行必要的修饰.
2.6流程图的设计
对于虚拟信号发生器而言,它的主要功能就是为我们提供激励信号,所以在流程图设计中,我们首先要选择产生信号的图标以及用于产生信号的case结构和循环控制While循环.
2.7 程序图标的调入
(1)在流程图设计窗口中打开(Function)模块,执行AllFunctions>
structures>
Whileloop调入Whileloop循环,控制程序的运行.
(2)执行structures>
casestructures调入case循环,用于控制产生不同信号的运行.
(3)执行AllFunctions>
Analyze>
SignalProcessing>
SignalGeneration操作,分别调入TriangleWave.vi(三角波)、SineWave.vi(正弦波)、SquareWave.vi(方波)等图标.
(4)执行AllFunctions>
Multi2ple/Add分别调入乘法器和加法器.
2.8 程序设计
(1)频率设置.在模拟电路范围,信号频率以Hz或周期来测量,但是在数字系统中我们使用数字频率,它是模拟频率和采样频率之比,如下所示:
数字频率=模拟频率/采样频率采样间隔也是信号产生的必要条件,在遵循抽样定理的基础上,我们需要给出采样频率和采样点数,用以产生信号.数字频率由除法器的输出提供,该除法器完成了信号频率和采样频率之比的运算,将所需要的数字频率输出送给信号发生图标.
3.虚拟函数信号发生器的硬件构成