《虚拟仪器技术》实验指导书2014_第1页
《虚拟仪器技术》实验指导书2014_第2页
《虚拟仪器技术》实验指导书2014_第3页
《虚拟仪器技术》实验指导书2014_第4页
《虚拟仪器技术》实验指导书2014_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

虚拟仪器技术实验指导书青岛大学自动化工程学院2014.9虚拟仪器技术实验指导书说明1、注意:在实验之前,首先在计算机的F盘下面创建一个以班级+姓名+实验几命名的目录,如电子1班张三实验一,所有的实验程序都保存到该目录中。2、实验箱底板功能说明(1)本系统所用NIPCI-6221数据采集卡,含有24路双向数字I/O,16路模拟输入、2路模拟输出,2路定时计数器,底板上68针插座接口为采集卡68-pinVHDCI母头接口。采集卡用法详见NI-DAQmx帮助。(2)《压力测量》与《步进电机控制与霍尔元件位置检测》两个实验模块集成在实验箱板底上。使用NIPCI-6221数据采集卡实验时,需拔下XT1全部跳线帽,然后通过IO1和IO2将采集卡相应端子与XT2连接起来。虚拟仪器技术实验指导书目录第一篇

LabVIEW基础单元································································1实验一LabVIEW编程环境与基本操作................................................................................1实验二LabVIEW程序结构——循环结构............................................................................7实验三LabVIEW程序结构——顺序结构与条件结构......................................................11实验四LabVIEW程序结构——事件结构与状态机..........................................................14实验五LabVIEW编程的数组与簇......................................................................................18实验六LabVIEW编程的图形显示......................................................................................21实验七LabVIEW字符串和文件I/O编程..........................................................................24实验八LabVIEW信号分析与处理......................................................................................26第二篇

LabVIEW数据采集单元························································28实验九模拟信号的采集与输出...........................................................................................28实验十温度采集与控制系统设计.......................................................................................31实验十一红外数据传输系统设计.......................................................................................33实验十二湿度测量计设计...................................................................................................35实验十三电子秤设计...........................................................................................................37实验十四光强检测与控制系统设计...................................................................................39实验十五自动控制窗帘系统设计.......................................................................................40实验十六模拟电梯超重报警系统设计...............................................................................43实验十七遥控电风扇系统设计...........................................................................................45第三篇

LabVIEW信号处理单元························································46实验十八典型信号频谱分析...............................................................................................46实验十九数字FIR滤波器...................................................................................................48实验二十数字IIR滤波器....................................................................................................49第四篇

LabVIEW虚拟仪器单元························································50实验二十一虚拟信号发生器...............................................................................................500虚拟仪器技术实验指导书第一篇LabVIEW基础单元实验一LabVIEW编程环境与基本操作一、实验目的1.了解LabVIEW的编程与运行环境。2.掌握LabVIEW的基本操作方法,并编制简单的程序。3.掌握使用调试工具调试VI程序。4.掌握VI子程序的建立和调用过程。二、实验原理虚拟仪器系统的概念不仅推进了以仪器为基础的测控系统的改造,同时也影响了以数据采集为主的测控系统的传统构造方法。过去独立分散、互不相干的许多传统仪器,在虚拟仪器系统的概念之下,正在逐渐靠拢、相互影响,并形成新的技术方法和技术规范。虚拟仪器系统的概念是测控系统的抽象。不管是传统的还是虚拟的仪器,它们的功能都是相同的:采集数据,对采集来的数据进行分析处理,然后显示处理的结果。它们之间的不同主要体现在灵活性方面。虚拟仪器由用户自己定义,这意味着用户可以自由地组合计算机平台、硬件、软件以及各种完成应用系统所需要的附件。而这种灵活性在由制造商定义、功能固定、独立的传统仪器上是达不到的。常用的数字万用表、示波器、信号发生器、数据记录仪以及温度和压力监控器就是传统仪器的代表。基于计算机的虚拟仪器得益于PC技术的发展。由于直接将仪器模块插入到计算机中,我们就可以直接享用到台式或便携式计算机上出众的处理能力、显示、数据存储以及连接性能等方面的优势,使测量以最有效的方式从使用传统的仪器过渡到使用通用计算机。基于计算机的仪器不仅继承了传统仪器的标准测量能力,更增加了扩展仪器概念的灵活性,使我们能够更加直接、更加有效地面对当今测量应用的挑战。更有意义的是,利用诸如LabVIEW、LabWindows/CVI等应用开发环境,可以方便地使多台仪器的测量能力结合并同步工作,以建立功能强大的仪器系统。更进一步,我们也可以开发自己的分析程序,实现那些有别于其它仪器或系统的功能。虚拟仪器系统技术的基础是计算机系统,核心是软件技术。因此,美国国家仪器公司(NI)提出其著名的口号:TheSoftwareistheInstrument。为了使“软件就是仪器”这句口号成为现实,NI公司在软件体系结构的各个层次上,形成了完整的设备驱动程序、系统开发平台、实用支持软件、应用软件包相互支撑的格局,使虚拟仪器系统的概念不再“虚拟”。其中,LabVIEW就是美国NI公司推出的一套著名的虚拟仪器开发软件平台。1.LabVIEW与虚拟仪器(VI)程序LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench,实验室虚拟仪器集成环境)是一个高效的图形化程序设计环境,也是一个功能强大的仪器和分析软件应用开发工具。它结合了简单易用的图形式开发环境与灵活强大的G语言,提供了一个直觉式的环境,与测量紧密结合,能迅速开发出有关数据采集、测量控制、数据分析、存储及显示的解决方案。像C一样,LabVIEW也是通用的编程系统,有一个庞大的函数库,包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储等。LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其通过程序(子VI)的结果、单步执行等,便于程序的调试。1虚拟仪器技术实验指导书使用LabVIEW开发平台编制的程序称为虚拟仪器程序,简称为VI。VI包括三个部分:程序前面板、框图程序和图标/连接器。如图1-1和图1-2所示。图1-1

LabVIEW程序前面板

图1-2与前面板对应的框图程序程序前面板用于设置输入数值和观察输出量,用于模拟真实仪表的前面板,其大小、外观、功能布局均可以由用户根据自己的需要进行定制。在程序前面板上,输入量被称为控制(Controls),输出量被称为显示(Indicators)。控制和显示是以各种图标形式出现在前面板上,如旋钮、开关、按钮、图表等,这使得前面板直观易懂。2.LabVIEW的操作模板LabVIEW具有多个图形化的操作模板,用于创建和运行程序。该模板可以随意在屏幕上移动,并可以放置在屏幕的任意位置。操纵模板有三类:工具(Tools)模板、控制(Controls)模板和功能(Functions)模板。1)工具模板(ToolsPalette)工具模板提供了用于创建、修改和调试VI程序的工具。如果该模板没有出现,则可在Windows菜单下选择ShowToolsPalette命令以显示。操作工具:使用该工具来操作前面板的控制和显示。选择工具:用于选择、移动或改变对象的大小。标签工具:用于输入标签文本或创建自由标签。创建自由标签时它会变成相应形状。

图1-3工具模板连线工具:用于在框图程序上连接对象。对象弹出菜单工具:用左鼠标键可以弹出对象的弹出式菜单。漫游工具:可以不需要使用滚动条而在窗口中漫游。断点工具:使用该工具在VI的框图对象上设置断点。探针工具:在框图程序内的数据流线上设置探针,来观察该线上的数据变化状况。颜色提取工具:用来提取颜色用于编辑其他的对象。颜色工具:用来给对象定义颜色。显示前景色和背景色。2)控制模板(ControlsPalette)用控制模板可以给前面板添加输入控制和输出显示。每个图标代表一个子模板。如果控制模板不显示,可以用Windows菜单的ShowControlsPalette功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板,如图1-4所示。注:只有当打开前面板窗口时才能调用控制模板。2

图1-4控制模板图1-5功能模板虚拟仪器技术实验指导书3)函数模板(FunctionsPalette,又称功能模板)功能模板是创建框图程序的工具,其每一个顶层图标都表示一个子模板。若功能模板不出现,则可用ShowFunctionsPalette打开。如图1-5所示。注:只有激活了框图程序窗口,才能出现功能模板。3.虚拟仪器程序的创建VI程序具有三个要素:前面板、框图程序和图标/连接器。1)前面板使用输入控制和输出显示来构建前面板。控制是用户输入数据到程序的接口,显示是输出程序产生的数据接口。两种最常用的前面板对象是数字控制和数字显示。若想在数字控制中输入或修改数值,可使用操作工具点击控制部件和增减按钮,或用操作工具或标签工具双击数值栏进行数值修改。2)框图程序框图程序是由节点、端点、图框和连线四种元素构成的。节点类似于文本语言的语句、函数或子程序。LabVIEW有两种节点:函数和子VI节点。区别:函数节点是LabVIEW以编译好的机器代码供用户使用的,而子VI节点是以图形语言形式提供给用户的。用户可访问和修改任一子VI节点的代码,但无法对函数节点进行修改。端点是只有一路输入/输出,且方向固定的节点。LabVIEW有三类端点:前面板对象端点、全局与局部变量端点和常量端点。对象端点是数据在框图程序部分和前面板之间传输的接口。一般来说,一个VI前面板上的对象都在框图中有一个对象端点与之一一对应。控制对象对应的端点在框图中是用粗框框住的,如图1-6中的A和B端点,它们只能作为数据流源点。显示对象对应的端点是用细框框住的。如A+B和A-B端点。它们只能作为数据流终点。常量端点永远只能作为数据流源点。图框是LabVIEW实现程序结构控制命令的图形表示。如循环控制、条件分支控制和顺序控制等,编程人员可以使用它们控制VI程序的执行方式。代码接口节点(CIN)是框图程序与用户提供的C语言文本程序的接口。图1-6简单的程序框图和前面板连线是端口间的数据通道。类似于普通程序中的变量。数据是单向流动的,从源端口向一个或多个目的端口流动。不同的线型代表不同的数据类型,并以不同的颜色予以强调。整

蓝色浮点数逻辑量字符串文件路径

橙色绿色粉色青色

3虚拟仪器技术实验指导书当需要连接两个端点时,在第一个端点上点击连线工具,再点击第二个端点。当把连线工具放在端点上时,该端点将会闪烁,表示连线将会接通。当连线工具从一个端口接到另一个端口时,不需要按鼠标键。当连线转弯时,按空格键可以改变转角的方向。3)从框图程序窗口创建前面板对象用选择和连线工具,可以用鼠标右键点击任一节点和端点,然后从弹出菜单中选择“创建常数”,“创建控制”,或“创建显示”等命令。4)数据流编程控制VI程序的运行方式叫做“数据流”。对一个节点而言,只有当它的所有输入端口上的数据都成为有效数据时,它才能被执行。当节点程序运行完毕后,它把结果数据送给所有的输出端口,使之成为有效数据。并且数据很快从源送到目的端口。如图1-7所示,这个VI程序把两个输入相乘,再减去50.0。这个程序中,框图程序从左往右执行,这个执行次序不是由于对象的摆放位置,而是由于相减运算函数的一个输入量是相乘函数的运算结果,它只有当相乘运算完成并把结果送到减运算的输入口后才能继续下去。图1-7数据流举例

图1-8数据流举例如图1-8所示,你认为哪一个节点函数将先执行?是乘法还是除法?在这个例子中,我们无法知道哪一个节点函数首先执行,因为所有输入量几乎同时到达。4.程序调试技术程序调试是进行任何程序设计过程中所必须的过程。在程序设计中不可避免地会有各种逻辑上和语法上的错误,这些都需要通过程序调试找出来加以改正。1)找出语法错误如果一个VI程序存在语法错误,则运行按钮将会变成一个折断的箭头,表示程序不能被执行。这个按钮被称作错误列表。点击,则LabVIEW弹出错误清单窗口,点击其中任何一个所列出的错误,选用Find功能,则出错的对象或端口就会变成高亮。2)设置执行程序高亮点击“高亮执行”按钮使其变成高亮形式,再点击运行按钮,VI程序就以较慢的速度运行,没有被执行的代码灰色显示,执行后的代码高亮显示,并显示数据流线上的数据值。这样,我们就可以在根据数据的流动状态跟踪程序的执行。3)断点与单步执行使用断点工具可以在程序的某一地点中止执行,用探针或者单步方式查看数据。使用断点工具时,点击设置或者清除断点的地方。断点的显示对于节点或者图框表示为红框,对于连线表示为红点。当VI程序运行到断点被设置处,程序被暂停在将要执行的节点,以闪烁表示。按下单步执行按钮,闪烁的节点被执行,下一个将要执行的节点变为闪烁,指示它将被执行。4)探针可以用探针工具来查看当框图程序流经某一根连接线时的数据值。探针显示窗口总是被显示在前面板窗口或框图窗口的上面。4虚拟仪器技术实验指导书三、实验内容1.创建自己的第一个VI。编写程序,实现将一华氏温度(F)转换成摄氏温度(C)的功能。已知摄氏温度与华氏温度的关系C=5(F-32)/9。(1)前面板设计如图1-9,华氏温度为数值输入控件,摄氏温度作为显示控件,按要求设置标签和显示范围,同时配数字显示。图1-9

Temp前面板

图1-10

Temp程序框图(2)程序框图如图1-10所示设计程序框图,建议数值常数使用在连接端子处点击右键创建(Create)常量(Constant)的方法更好些。(3)把该VI命名为Temp.vi,保存为F:\Yourname\的文件夹中。2.自己创建一个VI,完成以下功能:将两个输入的数字相加并显示结果;将同样两个输入数字相乘并显示结果;比较两个输入数字,如果数字相等,则LED指示灯亮。最后,保存为SimpleMath.vi文件。如图1-11:A和B为数字控件输入,两个数字指示器分别显示输出结果A+B和A×B,当输入数字A和B相同时,将点亮LED。图1-11

实验2的前面板3.子VI的创建与调用1)打开练习1中Temp.vi。2)设计图标编辑器,如图1-12所示,绘制一个温度计,创建一个TEMP的文本。注意只能在前面板中编辑图标和联接器。图1-12

编辑后的图标编辑器窗口5虚拟仪器技术实验指导书3)设置联接器端子。4)调用创建的子Temp,使其实现实验1的功能。4.设计一个VI程序,计算一元二次方程的两根。四、思考题1.写一个VI比较两个数的大小,如图所示:当A>B时,指示灯亮。2.写一个温度监测器,如图所示,当温度超过报警上限,而且开启报警时,报警灯点亮。温度值可以由随机数发生器产生。五、实验报告要求1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2.理解基于数据流编程的基本编程思路。3.总结VI基本编程的快捷操作。4.简述VI程序有什么构成,其各部分的功能是什么。5.思考:在前面板和框图程序中,如何区分控制器和指示器。6.心得体会及其它。6虚拟仪器技术实验指导书实验二

LabVIEW程序结构——循环结构一、实验目的1.学习并掌握For循环和While循环以及它们的不同点。2.学习使用移位寄存器(ShiftRegister)和反馈节点(FeedbackNode)。二、实验原理While循环和For循环在函数的结构(Structures)选项板中可以找到。创建循环的具体方法是,选择该循环后,先在欲放入循环内执行的对象左上方单击,然后按下鼠标,拖曳出一个矩形框包围执行对象。释放鼠标时就创建了一个指定大小和位置的循环。While循环可以反复执行循环体的程序,直至到达某个边界条件。它类似于普通编程语言中的Do循环和Repeat-Until循环。While循环的框图是一个大小可变的方框,用于执行框中的程序,直到条件端子接收到的布尔值为FALSE。1.For循环和While循环当程序有确定的循环次数时,使用For循环。在程序框图中添加For循环,如图2-1所示。(循环次数输入端):For循环必须给定循环次数N(N>0,否则循环不执行),此项一般都要有输入。当For循环的输入数据是一个数组时,如果不给定循环次数,则数组的大小将决定For循环的循环次数。如果同时输入两个数组,循环次数以数组个数最少的决定。(循环计数):计数范围0~N-1。当具体的循环次数不可知时,我们使用While循环,如图2-2所示。While循环也有一个循环计数

,第一次循环时

的值为0。另外,While循环有一个循环条件判断端子

。请特别注意,无论如何,都要给While循环结构一个有效的停止条件,否则可能就会使循环陷入死循环的状态。While循环还提供了一个快捷方式:Functions-Express-执行过程控制-WhileLoop,程序框图如图2-3所示,与图2-2不同的时自动加了一个停止按钮。图2-1For循环

图2-2While循环

图2-3快捷While2.移位寄存器和反馈节点使用循环结构时,经常会遇到下一次循环要用到上一次循环运行结果的情况,这时就需要不断的将每次循环的结果存储下来,以传递给下一次循环。移位寄存器和反馈节点就是用来实现这样的操作的。在For循环和While循环中都可以添加移位寄存器和反馈节点,添加方法如下:1)移位寄存器(ShiftRegister)移位寄存器可以将数据从一个循环周期传递到另外一个周期。创建移位寄存器的方法是,用鼠标右键单击循环的左边或者右边,在快捷菜单中选择AddShiftRegister,如图2-4所示。移位寄存器在流程图上用在循环边框上相应的一对端子来表示。右边的端子中存储了一个周期完成后的数据,这些数据在这个周期完成之后将被转移到左边的端子,赋给下一个周期。移位寄存器可以转移各种类型的数据――数值、布尔数、数组、字符串等等。它会自动适应与它连接的第一个对象的数据类型。7虚拟仪器技术实验指导书(a)为For循环设置移位寄存器

(b)为While循环设置移位寄存器图2-4设置移位寄存器2)反馈节点(FeedbackNode)反馈节点完成的功能同移位寄存器类似。在For循环或者While循环中,只要将其中的子VI、函数的输入/输出相连接,就会自动出现反馈节点。当然,也可以通过Functions-Execution-Control-FeedbackNode来添加。在反馈节点上单击鼠标右键,从弹出的快捷菜单中选择ReplacewithShiftRegister,反馈节点将变成移位寄存器,如图2-5所示。下面通过一个例子来看一下移位寄存器和反馈节点是如何工作的。如图2-6所示。图2-5将反馈节点变为移位寄存器

图2-6反馈节点和移位寄存器在此如果不给移位寄存器和反馈节点赋初值(本例中For循环框左边的两个常数0),下次程序运行时,移位寄存器和反馈节点中的值将以上次运行完的值开始。三、实验内容1.While循环的基本结构分别创建两个关于While循环的VI,如图2-7所示,其中一个带延时,一个不带延时,都在前面板显示循环计数和停止按钮,比较这两个循环的不同。提示:不带延时的循环,占用CPU资源,不推荐;带延时的循环,节省CPU资源,常用。(a)不带延时图2-7

(b)有延时While循环前面板与程序框图8虚拟仪器技术实验指导书2.While循环中实现累加的两种方法(1)利用移位寄存器实现累加1-100,并将结果显示在前面板上;(2)利用反馈节点实现累加1-100,并将结果显示在前面板上。3.For循环的基本结构创建三个关于For循环的VI,分别设定For循环的循环次数为100、循环次数设定、输入数据为一个数组等,并在前面板上设定第二个循环的次数及显示For循环的实时次数,观察显示结果。4.统计满足条件随机数的个数统计100个随机数中大于0.5的个数,要求在前面板显示统计结果。*5.设计一个VI,实现使用循环和移位寄存器计算随机数序列的移动平均值。要求该VI产生一个随机序列Ri,序列长度N由前面板滑动条控件输入,该随机数序列的移动平均值v(i)由下列公式可计算:v(i)=

i?v(i-1)+Rii+1这里i=0,1,...,N-1,v(i)表示在第i次计算的平均值,Ri是来自随机数函数的当前随9虚拟仪器技术实验指导书机数。前面板要求显示当前用于计算移动平均值的随机数个数i+1,当前的移动平均值,前面板设计如图2.10所示,最后将该VI保存为RandomNumberAverage.vi文件。在HighlightExecution加亮执行的状态下观察数据流。图2.10RandomNumberAverage四、实验报告要求1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2.说明For循环与While循环的区别。3.理解移位寄存器的作用以及它的初始化。4.心得体会及其它。10虚拟仪器技术实验指导书实验三LabVIEW程序结构——顺序结构与条件结构一、实验目的1.掌握顺序结构(SequenceStructure)、条件结构(CaseStructure)编程。2.了解时间估计和控制函数。3.了解公式节点(FormulaNode)的使用。二、实验原理1.顺序结构(SequenceStructure)VI程序的运行是“数据流”驱动的,有时我们必须对这种数据流进行控制,这样就用到了顺序结构。在LabVIEW中有两种循序结构:平铺式和层叠式顺序结构。使用平铺式顺序结构可以看到整个程序框图,当程序框图所占空间的大小允许时,可以使用这种顺序结构。在程序框上单击鼠标右键,在弹出的快捷菜单中选择AddFrameafter或AddFrameBefore,就可以在本帧后或者前添加一帧,如图3-1所示。使用层叠式顺序结构比较省空间,但是数据在各帧中的传递必须通过SequenceLocal来实现,并且每次只能显示一帧。可以用类似的方法来添加前一帧或者后一帧,在弹出的快捷菜单中选择AddSequenceLocal,则在顺序结构中添加SequenceLocal,如图3-2所示。图3-1添加帧图

图3-2添加SequenceLocal顺序结构顺序地执行子框图,它看上去像是电影胶片。它可以按一定顺序执行多个子程序。首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去。2.时间估计和控制函数“等待”:控制VI定时执行,每次执行单元(比如循环)内部,在执行代码运行结束后,开始计时。保持此状态直到毫秒计数器的值等于预先设定的值。“等待下一个整数倍毫秒”:每次执行单元内部,在执行代码开始运行时,就开始计时,保持此状态直到毫秒计数器的值等于预先设定数的整数倍。用于同步各单元操作。“TickCount(ms)函数”:用与ExpressVI完成定时任务。3.条件结构(CaseStructure)条件结构的输入端可以连接布尔型和数字型变量。当连接的是布尔型变量时,只有True和False两种。当连接的是数字型变量时,Case框上的标识将变为0,1,…根据输入量的不同,Case结构选择运行不同的程序。程序框图如图3-3所示。在默认状态下,Case结构只有0和1两项,用右键单击Case结构的边框,从弹出的快捷菜单中选择AddCaseAfter来添加一个Case。11虚拟仪器技术实验指导书图3-3

Case结构举例框图程序前面板如图3-4所示。然后通过工具模板改变

是用来选择操作是加法、减法还是乘法。选择MemuRing,大小,鼠标右键选择Properties,在弹出的对话框中改变其属性,同时添加如图3-5所示的内容。条件端子

图3-4

Case结构举例前面板按钮子程序标识图3-6

Case结构

图3-5属性设置Case结构含有两个或者更多的子程序(Case),执行哪一个取决于与选择端子或者选择对象的外部接口相连接的某个整数、布尔数、字符串或者标识的值。必须选择一个默认的Case以处理超出范围的数值,或者直接列出所有可能的输入数值。Case结构如图3-6所示。4.公式节点(FormulaNode)公式节点是一个大小可变的方框,可直接在流程图中输入公式。从函数/结构中选择公式节点就可以把它放到流程图中。当某个等式有很多变量或者非常复杂时,这个功能就非常有用。图3-7

公式节点三、实验内容1.设计一个VI,计算产生一个与指定的数字相等的随机数所需花费的时间。12虚拟仪器技术实验指导书2.使用Case结构,创建一个VI以检查一个数值是否为正数。如果它是正的,VI就计算它的平方根,反之则显示出错。如图3-9所示,最后将该VI保存为CaseStructure.vi。提示:可以使用以下函数:OneButtonDialog函数:它可以用于显示一个对话框,内容可由字符串常量输入提供。

图3-9

CaseStructure例如:3.设计一个VI,用公式节点来计算下列方程:y1=x3-x2+5,y2=mx+b,其中x的取值为0-20,以上两个方程只许使用一个FormulaNode。4.设计一个VI能够像计算器一样进行运算。前面板上有两个数字控制器,用来输入两个数字,另有一个指示器,用来显示VI对输入数字进行运算(Add、Subtract、Divide或Multiply)的结果。用一个滑动条控制器来选择加、减、乘、除运算。*5.分别用Case结构和公式节点语句两种方法,实现下列条件分支语句:考虑计算两数比率x/y的下列代码段:if(y?0)else

z=x/y;z=+?;两VI保存为CaseDivision.vi和FormulaDivision.vi。*6.利用case结构的多分支,进行下列简单程序设计。要求:星期一显示:新的一周开始了,好好学习!星期二显示:今天是星期二,继续努力!星期三显示:今天是星期三,生活愉快!星期四显示:周四了,加油呀!星期五显示:今天是星期五,站好最后一班岗!星期六显示:周末愉快!星期日显示:好好休息,迎接新的一周!四、思考题1.数据流编程有何优点?2.LabVIEW有哪两种顺序结构?各有何特点?3.掌握Case结构的组成及设计方法。五、实验报告要求1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2.使用公式节点时,如果输入变量的名称同输出变量的名称相同时,会怎样?3.心得体会及其它。13虚拟仪器技术实验指导书实验四LabVIEW程序结构——事件结构与状态机一、实验目的1.掌握事件结构(EventStructure)编程。2.了解状态机的工作原理和设计方法。二、实验原理1.事件结构(EventNode)编程的主要目的是为了实现用户的某种功能,用户通过用鼠标、键盘、程序内部等触发某种程序动作,从而达到某种结果,这些操作都被称作为事件,LabVIEW中相应这些事件最常用的结构就是“事件结构”。事件结构内容丰富,基本上大的程序结构都需要用到事件结构。事件结构在程序不能够单独响应各种事件,必须与循环结构一同使用。以图形化方式响应和处理用户的操作;与Windows操作系统的事件处理方式相似。如图4-1所示。事件超时事件数据节点

选择器标签图4-1-13事件结构

选择器标签对应事件的子框图事件结构的组成:(1)上边框中间是事件选择标签,用于标识当前显示的子框图(第0个)所处理的事件源。其增减与层叠式顺序结构和选择结构中的增减类似。(2)事件数据节点为子框图提供所处理事件的相关数据。事件数据节点由若干个事件数据端子组成。(3)事件超时端子,隶属于整个事件结构,用于为超时事件提供超时时间参数,以ms为单位。当值为-1时,事件结构处于永远等待状态,直到指定的事件发生为止。通常情况下,应当为事件结构指定一个超时时间,否则事件结构将一直处于等待状态。LabVIEW事件编程的黄金原则:(1)不要将事件结构放置在While循环之外。(2)不要在事件结构中直接使用循环处理事件。(3)在事件结构中添加“停止”按钮的处理分支。提示:为防止前面板“死锁”,在编辑事件结构分支时,请将“锁定前面板直至事件分支完成”复选框去掉。2.状态机顺序模式是我们最先接触,也是最基本的一种编程模式,程序按照固定的顺序依次执行,结束。14虚拟仪器技术实验指导书但在很多情况下,静态的顺序模式并不能满足我们编程的要求,我们需要更有效地动态结构来实时改变程序的执行顺序。比如,一个自动的可乐贩售机,当然它可以实现简单的投币,取可乐,结束这样的顺序模式,但更多的情况下,需要经过多次投币,更或者是取消购买来结束一次操作。在这种情况下,状态机的引入就成了必然的结果。那么什么是状态机呢?简单的说,状态机是对系统的一种描述,该类系统包含了有限的状态,并且在各个状态之间可以通过一定的条件进行转换。一般可以用状态图来对一个状态机进行精确地描述。在LabVIEW中,任何一个状态机都是由三个基本部分构成的,首先外层是一个while循环(用于维持状态机的运行),同时在while循环中包含有一个条件结构(用以对各个不同的状态进行判断),第三个基本部分是移位寄存器(用以将下一个状态传递到下一次循环状态判断中)。另外在一个完整的状态机中,我们一般还会提供初始状态,每一个状态的执行步骤以及下一个状态切换代码等等。除了前面提到的三个基本部分以外,状态机的构建还有一个技巧,就是使用枚举型常量来作为状态变量,相对于其它数据类型来说,枚举常量表示了两组成对的数据,一组是字符串,一组是数值,两者一一对应,在前面板上,能直观地看到字符串,在程序面板上则简单地表示为数值型数据,整个枚举型数据的值可以是预定义的多个数据中的任何一个值。为什么要使用枚举型数据来作为状态变量呢?因为枚举型数据和条件结构配合使用时相当方便。第一,在条件结构的条件判断框中,看到的将不是单纯的数值,而是定义好的字符串,这样直观的表现形式给不同状态的管理带来了方便,另外,在条件结构上通过右键单击,选择为每个值添加分支,就能够自动地将条件结构根据枚举数据进行展开,从而保证每个状态的完整性。此外,考虑到以后对状态机修改及维护的方便,通常将该枚举常量保存为一个自定义控件,将其作为枚举常量引入状态机中,当需要对状态变量进行修改时,只需要对该自定义控件进行一次修改、更新,就能对该状态机中任何位置的状态变量进行统一的管理了。三、实验内容1.在前面板中显示一个按钮和一个数值输入控件,当在按钮上按下鼠标或数值输入控件值发生变化时,产生事件。当该事件发生时,弹出对话框,询问是否继续,点击Yes,While循环继续执行;若点击No则退出While循环;此外,设置一个超时处理子图形代码框,若5秒钟没有在前面板操作,则退出While循环。15虚拟仪器技术实验指导书2.数据采集与处理状态机设计。该状态机主要完成数据采集与数据分析功能。(1)状态变量枚举类型定义为:初始化、停止、检查VI事件、数据采集、数据分析等五项,将其设定为自定义类型。系统状态转换图如图4-5所示。数据采集“数据采集”:值改变

数据分析“数据分析”:值改变“停止”:值改变初始化

检查VI事件图4-5-16状态图转换图

停止(2)在“初始化”分支中,将向波形图、信号测量局部变量写入初始数据代码。注意数组常亮为一个空数组。(3)在“检查VI事件”分支中,设置一个VI事件结构,事件结构包含以下事件分支:l“数据采集”:值改变;l“数据分析”:值改变;l“停止”:值改变。并将每个按钮设置为“释放时触发”。(4)输出隧道设置为“取消未连线时使用默认”。(5)Case结构中不要包含默认帧。(6)前面板及部分程序框图如下:16虚拟仪器技术实验指导书*3.在前面板放置四个控件:门——布尔控件,表示一扇门(鼠标点击表示敲门);敲门次数——控件用来记录时间的次数;停止按钮——布尔控件,用来表示随时停止程序的运行;门把手——指示灯控件,要开门时门把手变绿,不开门时门把手为红色。要求用事件结构设计,运行程序后,就一直等待事件的发生,此时,如果用鼠标点击“门”一次,则会弹出对话框,显示“您找谁呀?”,如果让其进入,选择“确定”按钮,门把手变“绿”,程序终止;如果不让其进入,选择“取消”,敲门次数显示为1,程序继续等待。如果再敲门,则显示“对不起,您敲错了!”,确定后,敲门次数显示为2。如果再敲,则显示“错了,请不要再敲了!”,敲门次数显示为3。如果再敲,则显示“如果再敲,我就要报警了!”,敲门次数显示为4。如果还敲,则显示“这里是110,我们正赶往您那儿!”,确定后,程序自行终止。如果在整个过程中,点击“停止”按钮,程序随时终止。四、思考题1.什么是事件?事件结构有哪几部分组成?使用事件结构有何优点?2.什么是状态机?状态机有哪几部分组成?为什么要使用状态机?五、实验报告要求1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2.使用公式节点时,如果输入变量的名称同输出变量的名称相同时,会怎样?3.心得体会及其它。17虚拟仪器技术实验指导书实验五LabVIEW编程的数组与簇一、实验目的1.掌握如何创建、使用数组;数组函数的功能和应用,掌握它们的区别以及相应操作。2.掌握如何创建、使用簇;簇函数的功能和应用,掌握它们的区别以及相应操作。二、实验原理1.数组是一些具有相同类型的元素组成的集合。数组包含两方面的内容:元素和维数。数组中的元素可以是数字、布尔、字符、路径、波形和簇等数据类型。一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。可以通过数组索引访问其中的每个元素。数组元素不能是数组、图表或者图形。LabVIEW提供了很多用于操作数组的功能函数,位于函数Functions»数组Array中。其中包括创建数组、初始化数组、数组大小、数组子集、索引数组等。l创建数组:用于根据标量值或者其他的数组创建一个数组。l初始化数组:创建所有元素值都相等的数组。l数组大小:返回输入数组中的元素个数。l数组子集:选取数组或者矩阵的某个部分。l索引数组:用于访问数组中的某个元素。建立数组的步骤如下:1)从数组和类子模板(Controls-AllControls-Array&Cluster)上选中数组,放置在前面板中,此时为数组空壳,可以向里边添加(用拖拽的方法)数字、布尔、字符等数据类型的控制器或指示器,来建立相应的数组控制器和指示器。此时可以看到数组上有两个显示窗口:u标号显示窗:标号从0开始,每单击一次“增加”键,标号显示值顺序递增。这个标号就是数组元素的序号;对于一个含n个元素的数组,其标号为0~n-1。u元素显示窗:用来显示元素的数值。数组中的元素按序号排列。数组元素的查找按行/列标号进行。2)右键单击标号窗口,弹出一个快捷菜单,选择AddDimension来增加数组的维数。2.簇(Cluster)是另一种数据类型,它的元素可以是不同类型的数据。它类似于C语言中的structure。使用簇可以把分布在框图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度,减少子VI的连接端子的数量。簇相当于一个容器,容器中的元素可以是各种不同的数据类型。也就是说,可以在一个簇中放置控制模板上的各种控件,如数字控件、布尔控件、数组控件等,但是不能将输入控件和输出控件同时放入其中。因此,在编辑流程图时,可以减少连线数以及连线的节点数,最终简化流程图。它有多个输入,一个输出。要建立簇,可以选择控制模板中数组和类子模板上的Cluster,将其调入前面板。向类控件中放入元素,即将控制模板中的相应控件放入其中,俗称把元素“捆绑”在一起。l捆绑(Bundle)数据Bundle功能将分散的元件集合为一个新的簇,或允许你重置一个已有的簇中的元素。可以用位置工具拖曳其图标的右下角以增加输入端子的个数。最终簇的序是取决于被捆绑的输入的顺序。右图中Bundle图标中部的Cluster端子用于用新元18虚拟仪器技术实验指导书素重置原簇中的元素。l分解(Unbundle)簇Unbundle是Bundle的逆过程,它将一个簇分解为若干分离的元素。如果要对一个簇分解,就必须知道它的元素个数。LabVIEW还提供一种可以根据元素的名字来捆绑或分解簇的方法。右键单击簇控件的边缘,弹出快捷菜单,如图5-1。其中:ReorderControlsInCluster:用于设置类控件中各元素的排列顺序,这个排列顺序是输出信号顺序,如图5-2所示。在Cluster输出1和输出2两个簇控件中,元素输出的排列顺序不一样。AutoSizing:右键单击该选项后,出现如图5-3所示的菜单,选择相应的选项,可自动调节类控制的边框大小及排列方式。

图5-1簇控件快捷菜单图5-2ReorderControlsInCluster设置

图5-3AutoSizing设置Properties:用来定义类控件的一些属性,如“AutoSizing”,改变标签的名称,是否显示标签等内容及填入描述信息。属性页将前面板的属性特征集中到了一些简单的配置对话框中。数组和簇的区别如下:u簇可以包含不同的数据类型,而数组仅可以包含相同的数据类型;u簇具有固定的大小。三、实验内容1.练习数组的基本创建。利用循环的自动索引功能创建一个装有10个随机数的一维数组,并计算数组元素的平方和,同时求出该数组索引为3、长度为2的子数组。要求前面板显示该一维数组及平方和结果、输出的子数组。2.编辑下列VI,理解一维数组和二维数组的产生,存为TwoDimensionalArrayDemo.vi。5-4

TwoDimensionalArray19虚拟仪器技术实验指导书3.创建一个VI,实现将输入控件值与输入数组合并连接起来生成新的数组。该VI使用数组大小和初始化数组两函数来创建维数合适的新数组,并将新数组的所有元素初始化为1。最后,VI计算两新数组间的差,并将结果显示在前面板中。前面板和基本程序框图组成如图5-5所示,最后将该VI保存为PracticewithArrays.vi文件。图5-5PracticewithArrays前面板和程序框图4.创建由一个控件簇和一个显示簇所组成的VI。要求输入控件数值加一,开关二反相,显示簇同时进行相应的显示。前面板组成如图5-6,最后将该VI保存为Cluster.vi文件。图5-6

Cluster前面板和程序框图四、思考题1.讨论数组和簇的相同点和不同点。2.用户可以创建一个包含数组的数组。(a.真

b.假)3.将两个输入数组和一个For循环相连。自动索引在两个通道中都有效。一个数组有10个元素,另一个数组有5个元素。如图所示,计数接线端与一个值7相连。这个VI运行完之后,循环显示控件的值是多少呢?虽然For循环运行5次,但是循环计数从0开始,因此循环显示控件值显示为4。五、实验报告要求1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2.心得体会及其它。20虚拟仪器技术实验指导书实验六LabVIEW编程的图形显示一、实验目的1.学习并掌握Chart和Graph的使用,理解它们的区别。2.掌握Chart的三种显示模式。3.了解其它二维图形的绘制。二、实验原理图形显示是虚拟仪器面板设计的重要内容。图形是以曲线来显示数组中的数据,常用的二维图形控件有Chart、Graph和XYGraph,可显示多条曲线。并可以改变曲线显示的格式。在LabVIEW的图形显示中Graph和Chart是两个基本的概念。一般说来Chart是将数据源(例如采集得到的数据)在某一坐标系中,实时、逐点地显示出来,它可以反映被测物理量的变化趋势,例如显示一个实时变化的波形或曲线,传统的模拟示波器、波形记录仪就是这样。而Graph则是对已采集数据进行事后处理的结果。它先将被采集数据存放在一个数组之中,然后根据需要组织成所需的图形显示出来。它的缺点是没有实时显示,但是它的表现形式要丰富得多。例如采集了一个波形后,经处理可以显示出其频谱图。如数字示波器。LabVIEW的Graph子模板中有许多可供选用的控件,其中常用的见下表:由表中可以看出,Chart方式尽管能实时、直接地显示结果,但其表现形式有限,而Graph方式表现形式要远为丰富,但这是以牺牲实时为代价的。1.Graph控件(波形图)以Graph为例,图6-1为它的控件,这些控件都包含在图形菜单的VisibleItems选项下。标签(Label)

曲线图例说明(Caption)图形模板(Graph刻度图例(ScaleLegend)

图6-1

Graph的图形控件

Palette)光标图例(CursorLegend)曲线图例可用来设置曲线的各种属性,包括线型(实线、虚线、点划线等)、线粗细、颜色以及数据点的形状等。21ChartGraphWaveform(波形)**XY*Intensity(强度图)**Digital(数字图)*3DCurve(三维曲线)*ChartGraphWaveform(波形)**XY*Intensity(强度图)**Digital(数字图)*3DCurve(三维曲线)*虚拟仪器技术实验指导书图形模板可用来对曲线进行操作,包括移动、对感兴趣的区域放大和缩小等。光标图例用来设置光标、移动光标,帮助你用光标直接从曲线上读取感兴趣的数据。刻度图例用来设置坐标刻度的数据格式、类型(普通坐标或对数坐标),坐标轴名称以及刻度栅格的颜色等。2.Chart(波形图表)的独有控件Chart的数据并没有事先存在一个数组中,它是实时显示的,为了能够看到先前的数据,Chart控件内部含有一个显示缓冲器,其中保留了一些历史数据。这个缓冲器按照先进先出的原则管理,其最大容量是1024个数据点。l滚动条(Scrollbar)它直接对应于显示缓冲器,通过它可以前后观察缓冲器内任何位置的数据。l数据显示(DigitalDisplay)选中它,可以在图形右上角出现一个数字显示器,这样可以在画出曲线的同时显示当前最新的一个数据值。l刷新模式(UpdateMode)Chart提供了三种画面的刷新模式,分别是:???

StripChartMode(条状图):它与纸带式图表记录仪类似。曲线从左到右连续绘制,当新的数据点到达右部边界时,先前的数据点逐次左移。ScopeChartMode(示波器模式):它与示波器类似。曲线从左到右连续绘制,当新的数据点到达右部边界时,清屏刷新,从左边开始新的绘制。它的速度较快。SweepChartMode(扫描模式):与示波器模式的不同在于当新的数据点到达右部边界时,不清屏,而是在最左边出现一条垂直扫描线,以它为分界线,将原有曲线逐点向右推,同时在左边画出新的数据点。如此循环下去。l堆叠式图区(StackPlots)在相同的纵坐标下,由于各种测量信号的差异,将几条曲线显示在同一个图区有困难时,可以组织出一种纵坐标相同,而有各自横坐标的堆叠式图区。三、实验内容1.Chart(波形图表)和Graph(波形图)的比较创建一个VI,用Chart和Graph分别显示40个随机数产生的曲线,比较程序的差别。图6-2

Chart和Graph的比较显示的结果是一样的,但实现方法不同。Chart产生在循环内,每得到一个数据点,就立刻显示。而Graph在循环外,40个数都产生之后,跳出循环,然后一次显示出整个曲线。从运行过程可以看到这一点。还有For循环执行40次,产生的40个数据存储在一个数组中,这个数组创建于For循环的边界上(使用自动索引功能)。在For循环结束之后,该数组就将被传送到外面的Graph。仔细看流程图,穿过循环边界的连线在内、外两侧粗细不同,内侧表示浮点数,外侧表示数组。2.设计一个VI来测量温度,每隔250ms测一次,共测定10秒。在数据采集过程中,VI将在波形Chart上实时地显示测量结果。在采集过程结束后,在Graph上一次性画出数据波形22虚拟仪器技术实验指导书曲线,并算出温度的最大值、最小值和平均值。3.利用XYGraph构成李萨育图形波形图(WaveformGraph)有一个特征,其X是测量点序号、时间间隔等,Y是测量数据值。但是它并不适合描述一般的Y值随X值变化曲线,适合于这种情况的控件是XYGraph。我们通过一个构成李萨育图形的例子来看一下它的使用。如果控制XY方向的两个数组分别按正弦规律变化(假设其幅值、频率都相同),如果它们的相位相同,则李萨育图形是一条45度的斜线,当它们之间相位差90度时为圆,其他相位差是椭圆。图6-3

利用XYGraph构成利萨育图形4.设计一个VI,用独立的XY数组形成一个圆环。*5.设计一个简单的虚拟示波器。四、实验报告要求1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2.总结Chart和Graph的使用区别。3.Chart的三种工作模式是什么?4.心得体会及其它。23虚拟仪器技术实验指导书实验七LabVIEW字符串和文件I/O编程一、实验目的1.熟悉并掌握字符串函数的使用。2.熟悉并掌握文件I/O操作。3.了解属性节点如何作为前面板转换的方法。二、实验原理1.字符串是ASCII字符的集合,LabVIEW有很多函数来处理各种类型的字符串。StringLength函数返回字符串中字符的个数;ConcatenateString函数把所有的输入字符和字符串连接成一个输出字符串;MatchPattern函数返回匹配的子串,如果没查找到匹配字符串则返回字符串为空;字符串格式化函数FormatIntoString把数值型数据转换成ASCII字符串格式;字符串格式化函数ScanFromString把ASCII字符串数据转换成数字格式。2.文件的I/O操作是指向文件中写入数据以及从文件中读取数的操作,所有的文件I/O函数都在Functions模板的FileI/O子模板中。Open/Create/ReplaceFile函数用来打开、更换一个已存在的文件,或者创建一个新文件;ReadFile函数从指定的文件读取指定字节的数据;WriteFile函数往指定的文件中写入数据;CloseFile函数关闭指定的文件。三、实验内容1.设计一个将数字转换为字符串的VI。要求将这个字符串连接到其他字符串上并组成一个输出字符串,然后显示输出字符串长度,如图7-1所示。调试该程序,在此程序基础上,建立一个VI子程序,命名为string.vi。2.字符串1为“ABCD”四个大写字母,字符串2为“1234”四个数字;字符串常量1为“efgh”四个小写字母,字符串常量2为“3.14”。把以上字符串依照次序合并为一个字符串,字母全部变为大写字母,把字母D换为w,计算其长度,找到字符串中小数点的位置。3.设计一个温度采集监测系统。如图7-3所示,采集的温度采用随机数乘以100得到,每1秒采集一次。能够通过温度计实时显示当前采集温度。当未开启报警复选框时,报警信息显示“温度监测正在运行中”。当开启报警复选框后,如果采集温度未达到报警上限,则显示“温度监测正在运行中”;当达到报警上限,报警指示灯亮,并在报警信息中显示“温度超限!当前温度:?℃”,程序自行终止。24虚拟仪器技术实验指导书4.有一个测量程序,采集A、B两路信号(幅度范围均为0~100),每1s采集一次,要求每采集一次,就将采集结果写入文本文件尾部,即使重新运行程序,仍能保证数据添加到文件尾部,而不会覆盖原有数据。格式为a、b保留2位小数。编写该测量程序的数据存储部分。采集的两路信号可分别用随机数生成程序进行模拟。*5.设计一个VI来测量温度(温度是用一个20到40的随机整数来代替,保留两位小数),每隔1秒测一次,共测定20秒。在数据采集过程中,实时写入电子表格文件,其中第一列为采集点数;第二列为日期时间(真实的采样时间);第三列为实时测量结果。并在第一行包含每列的描述信息。如下图所示。采集过程结束后,在Graph上画出温度数据曲线。四、实验报告要求1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2.心得体会及其它。25点数时间(s)温度值(度)12014-3-1811:08:4437.11点数时间(s)温度值(度)12014-3-1811:08:4437.1122014-3-1811:08:4534.4432014-3-1811:08:4625.32虚拟仪器技术实验指导书实验八LabVIEW信号分析与处理一、实验目的1.进一步掌握LabVIEW的编程方法。2.掌握主要信号分析与处理函数的使用。二、实验原理与内容LabVIEW的AdvancedAnalysis软件库包括数值分析、信号处理、曲线拟合以及其他软件分析功能。该软件库是建立虚拟仪器系统的重要工具,除了具有数学处理功能外,还具有专为仪器工业设计的独特的信号处理与测量功能。三、实验内容设计一个信号发生器,可在其添加噪声,然后对其滤波,观察滤波后的波形及频谱图。1.创建一个基本函数发生器要求能产生正弦波、三角波、方波、锯齿波等信号,前面板上有信号类型、信号频率、幅度、采样频率、采样点数等输入控件,观察各种信号波形图。2.添加噪声要求在基本函数发生器上添加噪声,在前面板上有是否添加噪声按钮,观察添加噪声以后的波形。3.数字滤波在此基础上设计一个数字滤波器,包括滤波器类型的选择、截止频率、阶数等,观察滤波前后的波形。先介绍一下Butterworth滤波器:Filtertype:按下列值指定滤波器类型0:Lowpass低通2:Bandpass带通

1:Highpass高通3:Bandstop带阻X:需要滤波的信号序列Samplingfreqfs:产生X序列时的采样频率,必须大于0。缺省值是1.0。如果它小于等于0则输出序列FilteredX为空并返回一个错误。Highcutofffreqfh:高端截止频率。当滤波器类型为0(lowpass)或1(highpass)时忽略该参数。Lowcutofffreqfl:低端截止频率。它必须满足Nyquist准则,即:0≦fi<0.5fs如果该条件不满足则输出序列FilteredX为空并返回一个错误。fi的缺省值是0.125。Order:大于0,缺省值是2。init/cont:内部状态的初始化控制。当其为FALSE(default),初态为0,当init/cont为TRUE,滤波器初态为上一次调用该VI的最后状态。为了对一个大数据量的序列进行滤波,可以将其分割为较小的块,设置这个状态为FALSE处理第一块数据,然后改设置为TRUE继续对其余的数据块滤波。FilteredX:滤波样本的输出数组。4.频谱分析要求对产生的信号进行频谱分析,观察其频谱图。26虚拟仪器技术实验指导书四、实验报告要求1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2.心得体会及其它。27虚拟仪器技术实验指导书第二篇LabVIEW数据采集单元实验九模拟信号的采集与输出一、实验目的1.了解数据采集的基本理论、数据采集卡及其DAQ技术的应用。2.了解数据采集卡的测试与配置。3.熟练掌握采集卡AD采集功能与DA输出功能。二、实验原理1.模拟信号输入采集模拟信号是虚拟测试系统中最常见、最典型的任务。按采集数据的多少,模拟信号采集通常分为单点直流信号采集、有限波形采集和连续波形采集;按使用通道的多少,可分为单通道采集、多通道采集。单通道采集适合于对直流电压信号的采集,每次采集只需要一个采样点,因此在编程时只需要使用“DAQmx创建通道”、“DAQmx读取”“DAQmx清除任务”几个基本的数据采集函数即可实现采集任务。有限波形采集是从一个或多个通道分别采集多个点组成一段波形。由于是多点采集,就需要确定两点间采集的时间间隔(即采样频率)、采样点数等参数。要实现一个连续的波形采集,只需将读取数据及必要的数据处理程序放入循环即可,而不是将整个数据采集程序放入循环。这是因为如果这样,每次循环都将进行开始任务、采集数据、结束任务的操作。这一来没有必要,二来会降低程序执行效率和性能。把“DAQmx开始任务”和“DAQmx结束任务”置于循环之外,使“开始任务”和“结束任务”的操作只进行一次,无疑可改善程序的运行性能。对于连续采集,缓冲是必须注意的。对于一些简单的采集,用户不需设置,LabVIEW会自动分配缓冲区。对于DAQmx定时的“每通道采样”端,当采样模式为有限采样时,表示每通道需要读取或写入数据的长度;当采样模式为连续采样时,表示缓冲的大小,可以通过该端子实现缓冲区的大小。NI-DAQmx对于不同的“采样率”有一个参考的缓冲区大小,如果通过“每通道采样”所设的值小于参考值的话,系统会自动选择参考值作为缓冲区的大小。连续采样中,若DAQmx从缓存中读取数据的速度小于向缓存存放数据的速度,则会出现向缓冲区写入数据覆盖掉还没有被读取的数据而产生数据丢失,通过设置合适的“每通道采样数”可避免该错误的发生,通常设置为缓存大小的1/2~1/4。通常在使用循环中调用DAQmxRead.vi的时候,一般是选择多态VI中的多采样而不是单采样,同时,将它的每通道采样数设置为-1,表示每次调用DAQmxRead.vi的时候都是将内存中的所有数据读取进来,不会出现等待的情况,有就读,没有就返回。28采样率缓冲区大小采样率缓冲区大小未设置采样率缓冲区大小采样率缓冲区大小未设置10kS10,000–1,000,000S/s100kS0-100S/s1kS>1,000,000S/s1MS100—10,000S/s10kS虚拟仪器技术实验指导书数据采集中时间相关的问题主要是两方面,一个是每一个数据点的时间,在NI的数据采集中是通过t0和dt来确定的,t0就是开始数据采集的初始时间,是任务开始时数据采集卡读取的计算机时间,dt是两个数据点之间间隔的时间,是采样率的倒数,比如1K采样率,dt就是1/1000=0.001秒=1毫秒。在使用DAQmxRead.vi的时候要选择波形输出而不是选择DBL输出,波形输出带有时间信息,而

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论