目录
1 .引 言
1.1 Labview开发平台
1.1.1 程序前面板
1.1.2 框图程序
1.1.3 图标/连接器
1.1.4 Labview中的操作模板
1.1.5 控制模板(Controls Palette)
1.1.6 功能模板(Functions Palette)
1.1.7 Labview中的框图程序
2 虚拟信号发生器的软件设计
2.1 前面板的设计
2.2 参数设置控件
2.3 输出波形选择按钮
2.4 波形显示控件
2.5 开关控件
2.6 流程图的设计
2.7 程序图标的调入
2.8 程序设计
3.虚拟函数信号发生器的硬件构成
4.虚拟函数信号发生器的实现
4.1数字波形产生模块
4.2 频率单位变化控制模块
5. 信号发生的具体实现
5.1 虚拟正弦波发生器的设计
5.1.1 功能描述
5.1.2设计步骤
5.2虚拟方波发生器的设计
5.2.1 功能描述
5.2.2设计步骤
5.3虚拟锯齿波发生器的设计
5.3.1 功能描述:
5.3.2设计步骤
5.4 虚拟三角波发生器的设计
5.4.1 功能描述:
5.4.2设计步骤
5.5虚拟正弦波.方波.锯齿波.三角波发生器的的综合设计
5.5.1 发生器的前面板
5.5.2 综合发生器流程图设计
5.5.3 综合发生器的运行结果
6. 创新与思考
结语:
致谢
参考文献:
基于Labview的信号发生器的设计
【摘 要】
本文实现了基于Labview7.0的虚拟正弦,余弦,方波,锯齿波,三角波信号发生器.可以根据需要,改变波形的频率和幅值,保存波形的分析参数到指定文件,并介绍了基于USB数据采集卡的虚拟信号输出。本论文首先简介了虚拟函数信号发生器的开发平台,及虚拟信号发生器的设计思路,并且给出了基于labview 的虚拟信号发生器的前面板和程序设计流程图,讲述了功能模块的设计步骤,提供了虚拟发生器的面板。在设计信号发生器的过程中经过深入的思考,结合Labview的具体功能作了一定创新。本仪器系统操作简便,设计灵活,具有很强的适应性。
【关键词】:虚拟函数 labview 信号发生器
The Design of Signal Generator Based on Labview
[Abstract]
This article describes the virtual Labview7.0 based on sine, cosine, square, saw tooth, triangle wave signal generator. Can change the waveform of the frequency and amplitude, the analysis of waveform parameters saved to the specified file, and introduced the USB data acquisition card based on the virtual signal output. Introduction In this paper, the first virtual function signal generator of the development platform, and virtual signal generators of design ideas, and gives the Labview-based virtual signal generator's front panel and the programming flow chart describes the design of these functional modules provides a virtual panel generator. Signal generator in the design process, after careful thought, combined with the specific function of Labview a certain innovation. The instrument system is simple, flexible design, has a strong adaptability. [Keyword] :Virtual function Labview signal generator
自从1986年美国NI(National Instrument)公司提出虚拟仪器的概念以来,随着计算机技术和测量技术的发展,虚拟仪器技术也得到很快的发展。虚拟仪器是指:利用现有的PC机,加上特殊设计的仪器硬件和专用软件,形成既有普通仪器的基本功能,又有一般仪器所没有的特殊功能的新型仪器。与传统的仪器相比其特点主要有:具有更好的测量精度和可重复性;测量速度快;系统组建时间短;由用户定义仪器功能;可扩展性强;技术更新快等。虚拟仪器以软件为核心,其软件又以美国NI公司的Labview虚拟仪器软件开发平台最为常用。Labview是一种图形化的编程语言,主要用来开发数据采集,仪器控制及数据处理分析等软件,功能强大。目前,该开发软件在国际测试、测控行业比较流行,在国内的测控领域也得到广泛应用。函数信号发生器是在科学研究和工程设计中广泛应用的一种通用仪器。下面结合一个虚拟函数信号发生器设计开发具体介绍基于图形化编程语言Labview的虚拟仪器编程方法与实现技术。
虚拟仪器技术是测量技术和计算机技术综合集成的产物,代表了现代测试技术和仪器技术发展。所谓虚拟仪器(Virtual Instrument),就是用户在计算机平台上,根据要求定义和设计仪器的测试功能,使得使用者在操作这台计算机时,就像是在操作一台他自己设计的仪器。VI是由用户利用一些基本硬件及软件编程技术组成的各种各样的仪器系统,它的功能是可由用户自己定义的。自从引进了VI的技术,这就使用户可以随心所欲地根据自己的意愿,设计自己的仪器系统,就像温度测量计、电压表、图表记录器、数字仪和信号分析计等,都可在同一基本硬件上配置不同的软件而实现。VI的另一用途是方案论证,用于在设计方案的论证过程中。对于一种设计要求,我们可能有各种不同的实现方法,如每个方法都用传统的仪器试验一遍不仅花大量的人力,还要大量的财力。而用基本硬件和基本软件组合的VI可方便地实现各种方法,以比较各个方案的优缺点。如今,计算机是开放的工业标准化结构,可以提供处理、存储和显示的能力,所以可将计算机用作电子仪器的助动器,使用户自定义各种仪器功能成为现实。 现在流行的DAQ(数据采集)卡、GPIB(通用接口总线)卡、VXI(系统控制接口卡)等可以插入计算机的槽口。VI通过改变软件的方法来适应各种不同的需求。美国NI(国家仪器)公司数字化技术的插入式DAQ卡,具有构造一系列传统测量仪器的能力。它配上该公司的Labview软件包(包含有DAQ的驱动程序)使用户方便迅速组建自己的应用系统。
传统的电子仪器是自封闭的系统,它具有信号输入、输出的能力,并有固定的用户界面,比如:输入、输出信号接插件、旋钮、按钮、显示仪表、显示面板等。一个仪器包括传感器、信号处理器、A/D转换器、微处理器、存储器和内部总线等专门化的电路。通过这些电路来转换、测量、分析实际信号,并将结果以各种方式显示。然而,有时为了构成具有一定功能的系统,配置了一套仪器,但对其中的某些仪器,只用到了其中一部分功能,而将它作其他功能使用时,却不具备或达不到所需指标。如另配置一套仪器,不断效率不高,而且价格高。要是能将原有的仪器稍加改动,就可以扩大其使用范围。但是传统的仪器功能是由制造商决定的,用户不能任意更改,用户如按自己的要求定制仪器需要昂贵的价格。虚拟仪器概念的提出是仪器发展史上的一场革命,代表着仪器发展的最新方向和潮流。以下是传统测试仪器和虚拟仪器的一个比较:
表1-1:传统仪器与虚拟仪器对照表
传统仪器 |
虚拟仪器 |
开发和维护费用高 |
基于软件体系的结构,大大节省开发和维护的费用 |
功能由仪器厂商定义 |
功能由用户自己定义 |
与其他仪器设备的连接十分有限 |
面向应用的系统结构,可以方便地与外设、网络或其他应用连接 |
数据无法编辑数 |
数据可编辑、存储、打印 |
硬件是关键部分 |
软件是关键部分 |
价格昂贵 |
价格低廉(是传统价格的五至十分之一) |
技术更新慢(5--10年) |
技术更新快(一般1--2年) |
系统封闭、功能固定、扩展性低 |
基于计算机技术开放的功能模块可构成多种仪器 |
正是因为意识到了虚拟仪器的诸多优点及传统仪器的一些弊端,所以,我们计划开发了这样一台基于Labview(美国NI公司)的多功能虚拟数字发生器。其集成了示波,,动态/静态波形分析,频谱分析,频率计,波形参数分析,信号发生,以及远程示波等功能。在示波功能上,除了对波形的精确显示外,还的波形参数进行了显示和对其时域信号、频域信号进行了分析。
Labview是Laboratory Virtual Instrument Engineering Workbench (实验室虚拟仪器集成开发环境)的简称,是有美国国家仪器公司(National instruments, IN)创立的一个功能强大而又灵活的仪器和分析应用开发工具。Labview不同于基于文本的的编程语言(如Fortran和C),他是一种图形编程语言----通常称为G语言,其编程过程就是同过图形符号描述程序的运行。NI Labview使用已获取专利的数据流编程模式,他能是用户从基于文本程序语言的循序结构中解脱出来,他的执行循序是由节点间的数据而不是由文本行的循序决定的。并且,Labview是唯一具有编译器的图形化程序环境,所生成的的优化代码的执行速率可以和C语言媲美。Labview就有开放的环境,能和第三放软件轻松连接,通过Labview,用户可以把现有的应用程序和.NET组件、ActiveX、 DLL以及广泛的网络协议相连,同样用户可以在Labview中创建能在其软件环境中调用的独立执行程序或动态连接库。在设计集成系统中,特别是做硬件数据采集,仪器控制等,有其一套快速开发组件,从而大大缩短了系统的开发周期,着是其他开发平台所没法比较的。下面对Labview基于图形化语言作简要介绍:
程序前面板用于设置输入数值和观察输出量,用于模拟真实仪表的前面板。在程序前面板上,输入量被称为控制(Controls),输出量被称为显示(Indicators)。控制和显示是以各种图标形式出现在前面板上,如旋钮、开关、按钮、图表、图形等,这使这得前面板直观易懂。
每一个程序前面板都对应着一段框图程序。框图程序用Labview图形编程语言编写,可以把它理解成传统程序的源代码。框图程序由端口、节点、图框和连线构成。其中端口被用来同程序前面板的控制和显示传递数据,节点被用来实现函数和功能调用,图框被用来实现结构化程序控制命令,而连线代表程序执行过程中的数据流,定义了框图内的数据流动方向。上述信号发生器的框图程序如下面的的图2-2:
图标/连接器是子VI被其它VI调用的接口。图标是子VI在其他程序框图中被调用的节点表现形式;而连接器则表示节点数据的输入/输出口,就象函数的参数。用户必须指定连接器端口与前面板的控制和显示一一对应。连接器一般情况下隐含不显示,除非用户选择打开观察它。
Labview具有多个图形化的操作模板,用于创建和运行程序。这些操作模板可以随意在屏幕上移动,并可以放置在屏幕的任意位置。操纵模板共有三类,为工具(Tools)模板、控制(Controls)模板和功能(Functions)模板。
工具模板(Tools Palette)
工具模板为编程者提供了各种用于创建、修改和调试VI程序的工具。如果该模板没有出现,则可以在Windows菜单下选择Show Tools Palette命令以显示该模板。当从模板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。当从Windows菜单下选择了Show Help Window功能后,把工具模板内选定的任一种工具光标放在框图程序的子程序(Sub VI)或图标上,就会显示相应的帮助信息。工具图标有如下几种:
操作工具:使用该工具来操作前面板的控制和显示。使用它向数字或字符串控制中键入值时,工具会变成标签工具的形状。
选择工具:用于选择、移动或改变对象的大小。当它用于改变对象的连框大小时,会变成相应形状。
标签工具:用于输入标签文本或者创建自由标签。当创建自由标签时它会变成相应形状。
连线工具:用于在框图程序上连接对象。如果联机帮助的窗口被打开时,把该工具放在任一条连线上,就会显示相应的数据类型。
对象弹出菜单工具:用左鼠标键可以弹出对象的弹出式菜单.
漫游工具:使用该工具就可以不需要使用滚动条而在窗口中漫游。
断点工具:使用该工具在VI的框图对象上设置断点。
探针工具:可以在框图程序内的数据流线上设置探针。程序调试员可以通过控 针窗口来观察该数据流线上的数据变化状况。
颜色提取工具:使用该工具来提取颜色用于编辑其他的对象。
颜色工具:用来给对象定义颜色。它也显示出对象的前景色和背景色。
与上述工具模板不同,控制和功能模板只显示顶层子模板的图标。在这些顶层子模板中包含许多不同的控制或功能子模板。通过这些控制或功能子模板可以找到创建程序所需的面板对象和框图对象。用鼠标点击顶层子模板图标就可以展开对应的控制或功能子模板,只需按下控制或功能子模板左上角的大头针就可以把对这个子模板变成浮动板留在屏幕上。
用控制模板可以给前面板添加输入控制和输出显示。每个图标代表一个子模板。如果控制模板不显示,可以用Windows菜单的Show Controls Palette功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板。
注:只有当打开前面板窗口时才能调用控制模板。
控制模板如左图所示,以下介绍几个常用的模板:
数值子模板:包含数值的控制和显示。
布尔值子模块:逻辑数值的控制和显示。
数组和群子模板:复合型数据类型的控制和显示。
图形子模板:显示数据结果的趋势图和曲线图。
修饰子模板:用于给前面板进行装饰的各种图形对象。
调用存储在文件中的控制和显示的接口。
功能模板是创建框图程序的工具。该模板上的每一个顶层图标都表示一个子模板。若功能模板不出现,则可以用Windows菜单下的Show Functions Palette功能打开它,也可以在框图程序窗口的空白处点击鼠标右键以弹出功能模板。
(注:只有打开了框图程序窗口,才能出现功能模板。)
功能模板如右图所示。以下介绍几个常用的模板:
结构子模板:包括程序控制结构命令,例如循环 控制等,以及全局变量和局部变量。
数值运算子模板:包括各种常用的数值运算符,如+、-等;以及各种常见的数值运算式,如+1运算;还包括数制转换、三角函数、对数、复数等运算,以及各种数值常数。
布尔逻辑子模板:包括各种逻辑运算符以及布尔常数。
群子模板:包括群的处理函数,以及群常数等。这里的群相当于C语言中的结构。
比较子模板:包括各种比较运算函数,如大于、小于、等于。
时间和对话框子模板:包括对话框窗口、时间和出错处理函数等。
信号处理子模板:包括信号发生、时域及频域分析功能模块。
“选择…VI子程序”子模板:包括一个对话框,可以选择一个VI程序作为子程序(SUB VI)插入当前程序中。
框图程序是由节点、端子、图框和连线四种元素构成的。
节点类似于文本语言程序的语句、函数或者子程序。Labview有二种节点类型----函数节点和子VI节点。两者的区别在于:函数节点是Labview以编译好了的机器代码供用户使用的,而子VI节点是以图形语言形式提供给用户的。用户可以访问和修改任一子VI节点的代码,但无法对函数节点进行修改。
端子是只有一路输入/输出,且方向固定的节点。Labview有三类端子----前面板对象端子、全局与局部变量端子和常量端子。对象端子是数据在框图程序部分和前面板之间传输的接口。一般来说,一个VI的前面板上的对象(控制或显示)都在框图中有一个对象端子与之一一对应。当在前面板创建或删除面板对象时,可以自动创建或删除相应的对象端子。控制对象对应的端子在框图中是用粗框框住的。它们只能在VI程序框图中作为数据流源点。显示对象对应的端子在框图中是用细框框住的。
图框是Labview实现程序结构控制命令的图形表示。如循环控制、条件分支控制和顺序控制等,编程人员可以使用它们控制VI程序的执行方式。代码接口节点(CIN)是框图程序与用户提供的C语言文本程序的接口。
连线是端口间的数据通道。它们类似于普通程序中的变量。数据是单向流动的,从源端口向一个或多个目的端口流动。不同的线型代表不同的数据类型。在彩显上,每种数据类型还以不同的颜色予以强调。
当需要连接两个端子时,在第一个端子上点击连线工具(从工具模板栏调用),然后移动到另一个端子,再点击第二个端子。端子的先后次序不影响数据流动的方向。当把连线工具放在端子上时,该端子区域将会闪烁,表示连线将会接通该端子。当把连线工具从一个端口接到另一个端口时,不需要按住鼠标键。当需要连线转弯时,点击一次鼠标键,即可以正交垂直方向地弯曲连线,按空格键可以改变转角的方
2.虚拟信号发生器的设计思想
虚拟仪器通过底层设备驱动软件与真实的仪器系统进行通讯,并以虚拟仪器面板的形式在计算机屏幕上显示与真实仪器面板操作元素相对应的各种控键. 虚拟信号发生器可产生正弦波、方波和三角波等信号,根据需要,可调节其中面板上的控键,改变信号的频率、幅度与相位,并可以进行数据存储,所有信号发生的结果都可以通过软件设计的虚拟面板显示..
根据传统信号发生器面板控键的功能,利用Labview 中的控制模板,分别在设计面板上放入模拟实际信号发生器控键的数据输入控键、显示器、数据输出控件、开关、选择器. 显示器用于显示输出的信号波形,数据输入控键用于输出信号的信号频率、采样频率、采样数、振幅和相位,数据输出控键则用于选择信号类型.
打开Labview 前面板编辑窗口,点击鼠标右键,显示控制模板,选择Graph > > Waveform Graph ,作为信号发生器的显示器. 在显示器模板上点击鼠标右键,对其进行属性设置,如根据被显示波形的频率与幅度值的变化,利用工具模板中的文字工具,对显示器横(时间) 、纵(幅度) 坐标的刻度重新设置. 用Graph 控键设计的显示器是完全同步的,波形稳定.
(1) 在前面板的设计窗口中,打开控制模块执行All cont roll s > > Numeric >
> Knob 操作,得到幅值等控制旋钮.
(2) 将鼠标移至旋钮单击右键选择属性( Proper2ties) 选项,在随后弹出的对话框中的外观(Appear2ance) 选项的标签中将这些旋钮分别命名为“频率调节”、“幅度调节”和“相位调节”等.
(3) 最后定义精度. 根据频率和幅度的数值范围,我们将其精度定义为双精度浮点型(DBL) . 具体操作仍然是在属性( Properties) 选项的数据范围(Data
range) 选项中的Representation 内完成.
用一个Case 结构来控制波形的产生. 可以选择输出为正弦信号或是方波信号、三角波等. 具体操作为:在前面板的设计窗口中,打开控制模块,执行Almont roll→ring&Enum →Textring ,修改名称为waveselect (波形选择) . 然后右键点击properties 选择Edit Items 项,在表格中添加和编辑sinewave 、t triangle 、square wave 等,并设置其先后顺序.
这个控件用来显示所产生的波形.执行Controls > > Graph > > Waveform Chart 操作,调入所选图标. 其横轴为时间轴,纵轴为电压轴.注意:控件参数设置应考虑到采样频率fs , 信号频率f 一个周期采样点n 与总点数N = Samples 的关系: fs = nfx ,所以fs 的最大值应该是被测信号频率f s 的最大值n ,且N ≥n.
此开关用于结束运行.执行Allcontrols > > Boolean > > StopButton操作,调入开关按钮,标记为“STOP”. 。
注意:在完成对虚拟仪器的前面板设计后,若需对其进行装饰,可以执行Allcont rols > > Decorations操作,然后根据需要在其选项框里选择相应的内容对你所设计的前面板进行必要的修饰.
对于虚拟信号发生器而言,它的主要功能就是为我们提供激励信号,所以在流程图设计中,我们首先要选择产生信号的图标以及用于产生信号的case 结构和循环控制While 循环.
(1) 在流程图设计窗口中打开( Function) 模块,执行All Functions > > structures > > While loop 调入While loop 循环,控制程序的运行.
(2) 执行structures > > case structures 调入case循环,用于控制产生不同信号的运行.
(3) 执行All Functions > > Analyze > > Signal Processing > > Signal Generation 操作, 分别调入Triangle Wave. vi (三角波) 、Sine Wave. vi (正弦波) 、Square Wave. vi (方波)等图标.
(4) 执行All Functions > > Numeric > > Multi2ple/ Add 分别调入乘法器和加法器.
(1) 频率设置. 在模拟电路范围,信号频率以Hz或周期来测量,但是在数字系统中我们使用数字频率,它是模拟频率和采样频率之比,如下所示:数字频率= 模拟频率/ 采样频率采样间隔也是信号产生的必要条件,在遵循抽样定理的基础上,我们需要给出采样频率和采样点数,用以产生信号. 数字频率由除法器的输出提供,该除法器完成了信号频率和采样频率之比的运算,将所需要的数字频率输出送给信号发生图标.
本虚拟函数信号发生器的输入输出的硬件部分为一数据采集卡和具有一定配置要求的PC机,数据的输入输出靠对数据采集卡输出输入口的定义来实现。本设计采用的PCI-1200数据采集卡是一块性价比较好的产品,具备数/模转换的功能,能将产生的数字信号转换成模拟信号且数模转换精度高,而且还具备滤波功能,从而使输出波形光滑。它支持单极和双极性模拟信号输入,信号输入范围分别为-5~+5V和0~10V。提供16路单端/8路差动模拟输入通道、2路独立的DA输出通道、24线的TTL型数字I/O、3个16位的定时计数器等多种功能。硬件接口部分用于数据输入或输出时的通道设置。
软件部分采用专业的Labview7.0图形化虚拟仪器开发工具。虚拟函数信号发生器主要由软件完成输出波形信号的产生和输出信号频率的显示。输出波形频率的变化的具体实现是将波形数据写入数据采集卡的缓冲区当中,通过设置缓冲区的更新频率(改变内部的时钟频率)来实现输出数据频率的变化。该过程主要运用了Labview中的数据采集子模块中的AO START 功能模块。从实现功能的角度来说,本次设计的虚拟函数信号发生器的功能结构主要包括两大功能模块:波形产生模块(FG模块)和频率单位变化控制(DISPLAY)模块。波形产生模块又调用FGEN模块。FGEN模块为数字波形产生模块。
4.1数字波形产生模块
波形产生模块是虚拟函数信号发生器软件的核心。利用该模块可实现正弦波、方波、锯齿波、三角波等波形。
正弦波的产生原理是通过调用sin(x)函数来实现。在本次设计,设计每一正弦波周期由1000点组成,利用类似C语言中的For循环为x 赋值,这样执行一次For循环,便可以产生生成一个周期正弦波所需的数据,然后利用While 循环,使程序反复执行,就可以连续输出正弦波.方波、锯齿波、三角波的产生原理与正弦波产生原理相近,都是通过数学运算来实现代表波形的数字序列。与模拟信号相比,利用软件的方法产生的波形数字序列虽然存在着一定的误差,但只要一个周期内选的点数足够的多,就可以使误差降到最低,对结果的影响最小。利用软件产生波形的一个最大的优点是使仪器的成本大大降低,而且使仪器小型化,智能化。
当输出频率动态范围较大时,用单个旋转按钮控制时,由于旋转一个很小的角度就会产生较大的频率变动,给频率的准确设置带来了较大困难,通过使用一个旋钮和频率倍乘相结合,可大大提高频率的输出控制精度。为了提高频率的输出控制精度,在本次的设计当中,通过使用频率单位变化控制模块,使输出控制精度可达到0.001Hz。
在前面已经对发生器的设计作了介绍,首先做的是正弦波发生器,依次是方波,锯齿波,三角波发生器。
该虚拟正弦信号发生器可产生正弦信号。指标为:
频率范围:1 Hz~10000 Hz ,可选;
初始相位:0°~ 180°,可选;
幅值:1V~510V, 可选;
生成波形的总点数: N =8~512 , 可选。
1. 正弦波发生器前面板的设计
(1)五个输入型数字控件。五个输入型数子控件提供使用者键入生成正弦波的频率、初始相位、幅值、总采样点数N与采样频率 。
执行Controls>>Numeric>>Digital Control 控件五次,得到五个输入型数子控件,分别标记为“信号频率”、“采样频率”、“采样点数”、“信号幅值”和“初始相位”。
(2)一个输出显示型图形控件。输出显示型图形控件用来显示所产生的正弦波波形。
执行Controls>>Graph>>Waveform Graph 操作,调入图形控件Graph 。其横轴为时间轴。应考虑到生成信号频率跨度大,在0.1 Hz~10K Hz范围内,其周期跨度也大,在10s~0.1ms范围内;行成信号幅值的范围应充满整个显示画面,故选用“ Graph”显示器。
(3)两个开关控件。执行Controls>>Boolean>>Vertical Switch操作,调入开关按钮控件,标记为“复位相位”。
执行Controls>>Boolean>>Labeled Round Button操作,调入开关按钮控件,标记为“OFF”。如下图:
图5.1.1虚拟正弦波发生器前面板的设计
(正弦波发生器前面板包括五个输入型数子控件:正弦波的信号频率、初始相位、信号幅值、总采样点数N与采样频率,及STOP控件,复位控件和正弦波发生器)
2.正弦波发生器流程图的设计
(1)在流程图中执行Functions>>Structures>>While Loop操作,调入 While
在这一部分,系统完成了对信号的生成和预览,但是要将信号送出去就必须将信号发送的循环结构。
执行Functions>>numeric四次,可以分别放置一个除法器,一个倒数器及两个常数0和10。
(2)在流程图中执行Functions>>Signal Processing>>signal Generation>>Sine Wave. vi操作,可调入Sine Wave. vi图标。
(3)在流程图中执行Functions>>Cluster>>Bundle操作,调入Bundle图标。
(4)在流程图中执行Functions>>Time Dialog>>Wait操作,调入时钟图标。
(5)在流程图中执行Functions>>Boolean>>Not操作,调入Not图标。
注:所需的数字频率由除法器的输出提供,该除法器完成信号频率与采样频率之比的运算,同时将采样频率取倒数转换为采样间隔,给出正弦波形的采样间隔,便于显示。如下图:
图5.1.2 虚拟正弦波发生器流程图的设计
(流程图包括:除法器,倒数器,正弦波发生器,常数0和10,正弦信号发生器,时钟图标,Not图标)
3. 正弦波运行结果
单击运行快捷按钮,检验设计的功能是否已完全实现。设置频率信号:0.4Hz 采样频率:8Hz 采样点数:100 信号幅值:3V 初始相位:0°其值都是可选的。
运行结果如下图:
图5.1.3正弦波运行结果图
虚拟方波发生器的设计和正弦波发生器的设计大体相同
在此继续使用正弦波的频率范围 初始相位 幅值 指标为:
频率范围:1Hz~10000 Hz ,可选;
初始相位:0°~ 180°,可选;
幅值:1V~510V, 可选;
生成波形的总点数: N =8~512 , 可选。
1.方波信号发生器的前面板设计
方波信号发生器的前面板设计过程和正弦信号发生器的前面板设计大体相同。
(1)五个输入型数字控件。五个输入型数子控件提供使用者键入生成方波的频率、初始相位、幅值、总采样点数N与采样频率 。
执行Controls>>Numeric>>Digital Control 控件五次,得到五个输入型数子控件,分别标记为“信号频率”、“采样频率”、“采样点数”、“信号幅值”和“初始相位”。如下图所示
(2)一个输出显示型图形控件。输出显示型图形控件用来显示所产生的方波形。
执行Controls>>Graph>>Waveform Graph 操作,调入图形控件Graph 。其横轴为时间轴。应考虑到生成信号频率跨度大,在0.1Hz~10KHz范围内,其周期跨度也大,在10s~0.1ms范围内;行成信号幅值的范围应充满整个显示画面,故选用“ Graph”显示器。
(3)两个开关控件。执行Controls>>Boolean>>Vertical Switch操作,调入开关按钮控件,标记为“复位相位”。
执行Controls>>Boolean>>Labeled Round Button操作,调入开关按钮控件,标记为“OFF”。如下图
图5.2.1虚拟方波发生器前面板的设计
(方波发生器前面板包括五个输入型数子控件:方波的信号频率 、初始相位、信号幅值、总采样点数N与采样频率,及STOP控件,复位控件和方波发生器)
2.方波信号发生器流程图设计
(1)在流程图中执行Functions>>Structures>>While Loop操作,调入 While
在这一部分,系统完成了对信号的生成和预览,但是要将信号送出去就必须将信号发送的循环结构。
执行Functions>>numeric四次,可以分别放置一个除法器,一个倒数器及两个常数0和10。
(2)在流程图中执行Functions>>Signal Processing>>signal Generation>>Sine Wave. vi操作,可调入Sine Wave. vi图标。
(3)在流程图中执行Functions>>Cluster>>Bundle操作,调入Bundle图标。
(4)在流程图中执行Functions>>Time Dialog>>Wait操作,调入时钟图标。
(5)在流程图中执行Functions>>Boolean>>Not操作,调入Not图标。
注:所需的数字频率由除法器的输出提供,该除法器完成信号频率与采样频率之比的运算,同时将采样频率取倒数转换为采样间隔,给出方波形的采样间隔,便于显示。如下图:
图5.2.2 虚拟方波发生器流程图的设计
(流程图包括:除法器,倒数器,方波发生器,常数0和10,方波信号发生器,时钟图标,Not图标)
3. 方波运行结果
单击运行快捷按钮,检验设计的功能已完全实现。设置频率信号:0.8Hz 采样频率:10Hz 采样点数:200 信号幅值:5V 初始相位:0°其值都是可选的。
运行结果如下图:
图5.2.3方波运行结果图
虚拟锯齿波发生器的设计和正弦波.方波发生器的设计大体相同。
该虚拟锯齿波信号发生器可产生锯齿波信号。指标为:
频率范围:1Hz~10000 Hz ,可选;
初始相位:0°~ 180°,可选;
幅值:1V~510V, 可选;
生成波形的总点数: N =8~512 , 可选
1. 锯齿波信号发生器的前面板设计
锯齿波信号发生器的前面板设计过程也是和正弦信号发生器.方波信号发生器的前面板设计一样,具体设计过程如下:
(1)五个输入型数字控件。五个输入型数子控件提供使用者键入生成锯齿波的频率 、初始相位、幅值、总采样点数N与采样频率 。
执行Controls>>Numeric>>Digital Control 控件五次,得到五个输入型数子控件,分别标记为“信号频率”、“采样频率”、“采样点数”、“信号幅值”和“初始相位”。
(2)一个输出显示型图形控件。输出显示型图形控件用来显示所产生的锯齿波形。执行Controls>>Graph>>Waveform Graph 操作,调入图形控件Graph 。其横轴为时间轴。应考虑到生成信号频率跨度大,在0.1Hz~10KHz范围内,其周期跨度也大,在10s~0.1ms范围内;行成信号幅值的范围应充满整个显示画面,故选用“ Graph”显示器。
(3)两个开关控件。执行Controls>>Boolean>>Vertical Switch操作,调入开关按钮控件,标记为“复位相位”。
执行Controls>>Boolean>>Labeled Round Button操作,调入开关按钮控件,标记为“OFF”。如下图
图5.3.1虚拟锯齿波发生器前面板的设计
(锯齿波发生器前面板包括五个输入型数子控件:锯齿波的信号频率 、初始相位、信号幅值、总采样点数N与采样频率,及STOP控件,复位控件和锯齿波发生器)
2.锯齿波发生器流程图设计
(1)在流程图中执行Functions>>Structures>>While Loop操作,调入 While
在这一部分,系统完成了对信号的生成和预览,但是要将信号送出去就必须将信号发送的循环结构。
执行Functions>>numeric四次,可以分别放置一个除法器,一个倒数器及两个常数0和10。
(2)在流程图中执行Functions>>Signal Processing>>signal Generation>>Sine Wave. vi操作,可调入Sine Wave. vi图标。
(3)在流程图中执行Functions>>Cluster>>Bundle操作,调入Bundle图标。
(4)在流程图中执行Functions>>Time Dialog>>Wait操作,调入时钟图标。
(5)在流程图中执行Functions>>Boolean>>Not操作,调入Not图标。
注:所需的数字频率由除法器的输出提供,该除法器完成信号频率与采样频率之比的运算,同时将采样频率取倒数转换为采样间隔,给出锯齿波形的采样间隔,便于显示。如下图:
图5.3.2 虚拟锯齿波发生器流程图的设计
(流程图包括:除法器,倒数器,锯齿波发生器,常数0和10,锯齿波信号发生器,时钟图标,Not图标)
3. 锯齿波运行结果
单击运行快捷按钮,检验设计的功能已完全实现。设置频率信号:0.7Hz 采样频率:15Hz 采样点数:150 信号幅值:6V 初始相位:0°其值都是可选的。
锯齿波发生器运行结果如下图所示:
图5.3.3锯齿波运行结果图
虚拟三角波发生器的设计和正弦波.方波. 锯齿波发生器的设计一样.
该虚拟三角波信号发生器可产生三角波信号。指标为:
频率范围:1Hz~10000 Hz ,可选;
初始相位:0°~ 180°,可选;
幅值:1V~510V, 可选;
生成波形的总点数: N =8~512 , 可选
1. 三角波信号发生器的前面板设计
三角波信号发生器的前面板设计过程也是和正弦信号发生器.方波信号发生器 锯齿波发生器的前面板设计一样,具体设计过程如下:
(1)五个输入型数字控件。五个输入型数子控件提供使用者键入生成三角波的频率 、初始相位、幅值、总采样点数N与采样频率 。
执行Controls>>Numeric>>Digital Control 控件五次,得到五个输入型数子控件,分别标记为“信号频率”、“采样频率”、“采样点数”、“信号幅值”和“初始相位”。
(2)一个输出显示型图形控件。输出显示型图形控件用来显示所产生的三角波形。执行Controls>>Graph>>Waveform Graph 操作,调入图形控件Graph 。其横轴为时间轴。应考虑到生成信号频率跨度大,在0.1Hz~10KHz范围内,其周期跨度也大,在10s~0.1ms范围内;行成信号幅值的范围应充满整个显示画面,故选用“ Graph”显示器。
(3)两个开关控件。执行Controls>>Boolean>>Vertical Switch操作,调入开关按钮控件,标记为“复位相位”。
执行Controls>>Boolean>>Labeled Round Button操作,调入开关按钮控件。如下图所示:
图5.4.1虚拟三角波发生器前面板的设计
(三角波发生器前面板包括五个输入型数子控件:三角波的信号频率 、初始相位、信号幅值、总采样点数N与采样频率,及STOP控件,复位控件和三角波发生器)
2.三角波发生器流程图设计
(1)在流程图中执行Functions>>Structures>>While Loop操作,调入 While
在这一部分,系统完成了对信号的生成和预览,但是要将信号送出去就必须将信号发送的循环结构。
执行Functions>>numeric四次,可以分别放置一个除法器,一个倒数器及两个常数0和10。
(2)在流程图中执行Functions>>Signal Processing>>signal Generation>>Sine Wave. vi操作,可调入Sine Wave. vi图标。
(3)在流程图中执行Functions>>Cluster>>Bundle操作,调入Bundle图标。
(4)在流程图中执行Functions>>Time Dialog>>Wait操作,调入时钟图标。
(5)在流程图中执行Functions>>Boolean>>Not操作,调入Not图标。
注:所需的数字频率由除法器的输出提供,该除法器完成信号频率与采样频率之比的运算,同时将采样频率取倒数转换为采样间隔,给出三角波形的采样间隔,便于显示。如下图:
图5.4.2 虚拟三角波发生器流程图的设计
(流程图包括:除法器,倒数器,三角波发生器,常数0和10,三角波信号发生器,时钟图标,Not图标)
3. 三角波运行结果
单击运行快捷按钮,检验设计的功能已完全实现。设置频率信号:1.2Hz 采样频率:14Hz 采样点数:120 信号幅值:4V 初始相位:0°其值都是可选的。
三角波发生器运行结果如下图所示:
图5.4.3三角波运行结果图
在此这四种波综合设计的功能描述,设计步骤基本上和这四种波单独设计
时一样所以不再作解说。其几种波的综合出来的前面板如下图所示:
图5.5.1虚拟综合发生器前面板的设计
其具体所需要的调入和前面几种波的调入一样,在此需要说明的是怎样把几种波组合在一起,使之能够同时产生波形,这样可以免去分别进行时的麻烦,把这几种波综合在一起也很有利于对几种波的观察,比较。此流程图的设计产生出来的波,他们共用相同的采样点数,信号频率,采样频率,信号幅值,及初始相位。如下图:
图5..2 虚拟综合发生器流程图的设计
单击运行快捷按钮,检验设计的功能已完全实现。
(1)设置信号频率:0.5Hz 采样频率:20Hz 采样点数:150 信号幅值:5V 初始相位:0°其值都是可选的。
综合发生器运行结果如下图所示:
图5.5.3综合发生器运行结果图
(2)为便于几种波的比较再设置信号频率:0.4Hz 采样频率:10Hz 采样点数:200 信号幅值:5V 初始相位:0°其值都是可选的。
其运行结果如下图所示:
图5.5.4综合发生器运行结果的比较图
鉴于一般终端服务不提供信号传输的功能,所以需要考虑其他的办法。我们可以使用FTP服务器。但是FTP服务器通常被认为是不安全的,它也可以通过Zebedee增强其安全性,方法是直接在终端服务上传输虚拟信号。首先需要做一个通信模块 ,把虚拟信号发生器产生的虚拟正弦波,方波,三角波,锯齿波等信号通过通信模块传输到另一终端计算机上,使基于labview设计出的信号发生器产生的信号可以在两个或更多的远程终端计算机上进行观察,分析及研究。
Labview作为一个图形化编程软件,是开发测试系统的一种功能强大、方便快捷的编程工具。其良好的相通性、开放性、专用性,使测试系统的开发周期短、成本低、质量高。基于Labview的虚拟函数信号发生器具有机交互性好、易于操作等特点,能够广泛的应用与于科研、生产等领域.
本论文是在陈全老师精心指导下完成的,从课题的论证,设计到最后的论文定稿,都得到了导师细心而富有启发性的指点,导师精深的学术造诣、严谨的治学态度、灵活开放的思路、平等待人的作风都深深地教育了我,在此谨表示我所能表达的最深切的感谢!
参考文献:
[1] 杨乐平 吕英军虚拟数字示波器的设计与实现 电子技术应用2000年第7期
[2] 戎舟 基于Labview的虚拟示波器及远程测控微计算机信息 2004年第20卷第5期 66-67
[3] 杨乐平 李海涛 杨磊 Labview程序设计与应用(第2版) 北京 电子工业出版社 2006
[4] 蔡建安 陈洁华 基于Labview的工程软件应用 重庆大学出版社 2006
[5] 马双宝 基于Labview7.0虚拟信号发生器的实现微计算机信息 2005年01期 89-90.
[6] 美国国家仪器公司《Labview7 Express Measurements Manual》
[7] [美] Gary W.jhonson, Richard Jennings著《Labview图形编程》 北京大学出版社
[8] 杨乐平,李海涛 等著《虚拟仪器技术概论》 电子工业出版社
[9] 刘君华,贾惠芹,丁晖阎晓艳 编著《虚拟仪器图形化编程语言LABVIEW教程》西安电子科技大学出版社
[10] 雷振山 《Labview 7 Express实用技术教程》中国铁道出版社
[11] 邓焱 王磊 等编著 Labview 7.1测试技术与仪器应用机械工业出版社 2004年8月