版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LabVIEW实验指导书虚拟仪器技术实验指导书董介春青岛大学自动化工程学院2014.9说明1、注意:在实验之前,首先在计算机的F盘下面创建一个以班级+姓名+实验几命名的目录,如电子1班张三实验一,所有的实验程序都保存到该目录中。2、实验箱底板功能说明(1)本系统所用NI PCI-6221数据采集卡,含有24路双向数字I/O,16路模拟输入、2路模拟输出,2路定时计数器,底板上68针插座接口为采集卡68-pin VHDCI母头接口。采集卡用法详见NI-DAQmx帮助。(2)压力测量与步进电机控制与霍尔元件位置检测两个实验模块集成在实验箱板底上。使用NI PCI-6221数据采集卡实验时,需拔下X
2、T1全部跳线帽,然后通过IO1和IO2将采集卡相应端子与XT2连接起来。 目 录第一篇 LabVIEW基础单元1实验一 LabVIEW编程环境与基本操作1实验二 LabVIEW程序结构循环结构7实验三 LabVIEW程序结构顺序结构与条件结构11实验四 LabVIEW程序结构事件结构与状态机14实验五 LabVIEW编程的数组与簇18实验六 LabVIEW编程的图形显示21实验七 LabVIEW字符串和文件I/O编程24实验八 LabVIEW信号分析与处理27第二篇 LabVIEW数据采集单元29实验九 模拟信号的采集与输出29实验十 温度采集与控制系统设计32实验十一 红外数据传输系统设计3
3、5实验十二 湿度测量计设计37实验十三 电子秤设计39实验十四 光强检测与控制系统设计41实验十五 自动控制窗帘系统设计42实验十六 模拟电梯超重报警系统设计45实验十七 遥控电风扇系统设计48第三篇 LabVIEW信号处理单元50实验十八 典型信号频谱分析50实验十九 信号的采样与恢复52实验二十 数字FIR滤波器54实验二十一 数字IIR滤波器56实验二十二 信号的分解与合成58第四篇 LabVIEW虚拟仪器单元62实验二十三 虚拟信号发生器62 第一篇 LabVIEW基础单元实验一 LabVIEW编程环境与基本操作一、实验目的1了解LabVIEW的编程与运行环境。2掌握LabVIEW的基
4、本操作方法,并编制简单的程序。3掌握使用调试工具调试VI程序。4掌握VI子程序的建立和调用过程。二、实验原理虚拟仪器系统的概念不仅推进了以仪器为基础的测控系统的改造,同时也影响了以数据采集为主的测控系统的传统构造方法。过去独立分散、互不相干的许多传统仪器,在虚拟仪器系统的概念之下,正在逐渐靠拢、相互影响,并形成新的技术方法和技术规范。虚拟仪器系统的概念是测控系统的抽象。不管是传统的还是虚拟的仪器,它们的功能都是相同的:采集数据,对采集来的数据进行分析处理,然后显示处理的结果。它们之间的不同主要体现在灵活性方面。虚拟仪器由用户自己定义,这意味着用户可以自由地组合计算机平台、硬件、软件以及各种完成
5、应用系统所需要的附件。而这种灵活性在由制造商定义、功能固定、独立的传统仪器上是达不到的。常用的数字万用表、示波器、信号发生器、数据记录仪以及温度和压力监控器就是传统仪器的代表。基于计算机的虚拟仪器得益于PC技术的发展。由于直接将仪器模块插入到计算机中,我们就可以直接享用到台式或便携式计算机上出众的处理能力、显示、数据存储以及连接性能等方面的优势,使测量以最有效的方式从使用传统的仪器过渡到使用通用计算机。基于计算机的仪器不仅继承了传统仪器的标准测量能力,更增加了扩展仪器概念的灵活性,使我们能够更加直接、更加有效地面对当今测量应用的挑战。更有意义的是,利用诸如LabVIEW、LabWindows/
6、CVI等应用开发环境,可以方便地使多台仪器的测量能力结合并同步工作,以建立功能强大的仪器系统。更进一步,我们也可以开发自己的分析程序,实现那些有别于其它仪器或系统的功能。虚拟仪器系统技术的基础是计算机系统,核心是软件技术。因此,美国国家仪器公司(NI)提出其著名的口号:The Software is the Instrument。为了使“软件就是仪器”这句口号成为现实,NI公司在软件体系结构的各个层次上,形成了完整的设备驱动程序、系统开发平台、实用支持软件、应用软件包相互支撑的格局,使虚拟仪器系统的概念不再“虚拟”。其中,LabVIEW就是美国NI公司推出的一套著名的虚拟仪器开发软件平台。1L
7、abVIEW与虚拟仪器(VI)程序LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器集成环境)是一个高效的图形化程序设计环境,也是一个功能强大的仪器和分析软件应用开发工具。它结合了简单易用的图形式开发环境与灵活强大的G语言,提供了一个直觉式的环境,与测量紧密结合,能迅速开发出有关数据采集、测量控制、数据分析、存储及显示的解决方案。像C一样,LabVIEW也是通用的编程系统,有一个庞大的函数库,包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储等。LabVIEW也有传统的程序调试工具,如设置断点、以动
8、画方式显示数据及其通过程序(子VI)的结果、单步执行等,便于程序的调试。使用LabVIEW开发平台编制的程序称为虚拟仪器程序,简称为VI。VI包括三个部分:程序前面板、框图程序和图标/连接器。如图1-1和图1-2所示。 图1-1 LabVIEW程序前面板 图1-2 与前面板对应的框图程序图1-3 工具模板程序前面板用于设置输入数值和观察输出量,用于模拟真实仪表的前面板,其大小、外观、功能布局均可以由用户根据自己的需要进行定制。在程序前面板上,输入量被称为控制(Controls),输出量被称为显示(Indicators)。控制和显示是以各种图标形式出现在前面板上,如旋钮、开关、按钮、图表等,这使
9、得前面板直观易懂。2LabVIEW的操作模板图1-4 控制模板LabVIEW具有多个图形化的操作模板,用于创建和运行程序。该模板可以随意在屏幕上移动,并可以放置在屏幕的任意位置。操纵模板有三类:工具(Tools)模板、控制(Controls)模板和功能(Functions)模板。1)工具模板(Tools Palette)工具模板提供了用于创建、修改和调试VI程序的工具。如果该模板没有出现,则可在Windows菜单下选择Show Tools Palette命令以显示。操作工具:使用该工具来操作前面板的控制和显示。选择工具:用于选择、移动或改变对象的大小。标签工具:用于输入标签文本或创建自由标签。
10、创建自由标签时它会变成相应形状。连线工具:用于在框图程序上连接对象。图1-5 功能模板对象弹出菜单工具:用左鼠标键可以弹出对象的弹出式菜单。漫游工具:可以不需要使用滚动条而在窗口中漫游。断点工具:使用该工具在VI的框图对象上设置断点。探针工具:在框图程序内的数据流线上设置探针,来观察该线上的数据变化状况。颜色提取工具:用来提取颜色用于编辑其他的对象。颜色工具:用来给对象定义颜色。显示前景色和背景色。2)控制模板(Controls Palette)用控制模板可以给前面板添加输入控制和输出显示。每个图标代表一个子模板。如果控制模板不显示,可以用Windows菜单的Show Controls Pal
11、ette功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板,如图1-4所示。注:只有当打开前面板窗口时才能调用控制模板。3)函数模板(Functions Palette,又称功能模板)功能模板是创建框图程序的工具,其每一个顶层图标都表示一个子模板。若功能模板不出现,则可用Show Functions Palette打开。如图1-5所示。注:只有激活了框图程序窗口,才能出现功能模板。3虚拟仪器程序的创建VI程序具有三个要素:前面板、框图程序和图标/连接器。1)前面板使用输入控制和输出显示来构建前面板。控制是用户输入数据到程序的接口,显示是输出程序产生的数据接口。两种最常用的前面板对
12、象是数字控制和数字显示。若想在数字控制中输入或修改数值,可使用操作工具点击控制部件和增减按钮,或用操作工具或标签工具双击数值栏进行数值修改。2)框图程序框图程序是由节点、端点、图框和连线四种元素构成的。节点类似于文本语言的语句、函数或子程序。LabVIEW有两种节点:函数和子VI节点。区别:函数节点是LabVIEW以编译好的机器代码供用户使用的,而子VI节点是以图形语言形式提供给用户的。用户可访问和修改任一子VI节点的代码,但无法对函数节点进行修改。端点是只有一路输入/输出,且方向固定的节点。LabVIEW有三类端点:前面板对象端点、全局与局部变量端点和常量端点。对象端点是数据在框图程序部分和
13、前面板之间传输的接口。一般来说,一个VI前面板上的对象都在框图中有一个对象端点与之一一对应。控制对象对应的端点在框图中是用粗框框住的,如图1-6中的A和B端点,它们只能作为数据流源点。显示对象对应的端点是用细框框住的。如A+B和A-B端点。它们只能作为数据流终点。常量端点永远只能作为数据流源点。图框是LabVIEW实现程序结构控制命令的图形表示。如循环控制、条件分支控制和顺序控制等,编程人员可以使用它们控制VI程序的执行方式。代码接口节点(CIN)是框图程序与用户提供的C语言文本程序的接口。图1-6 简单的程序框图和前面板连线是端口间的数据通道。类似于普通程序中的变量。数据是单向流动的,从源端
14、口向一个或多个目的端口流动。不同的线型代表不同的数据类型,并以不同的颜色予以强调。整 型 蓝色浮点数 橙色逻辑量 绿色字符串 粉色文件路径 青色当需要连接两个端点时,在第一个端点上点击连线工具,再点击第二个端点。当把连线工具放在端点上时,该端点将会闪烁,表示连线将会接通。当连线工具从一个端口接到另一个端口时,不需要按鼠标键。当连线转弯时,按空格键可以改变转角的方向。3)从框图程序窗口创建前面板对象用选择和连线工具,可以用鼠标右键点击任一节点和端点,然后从弹出菜单中选择“创建常数”,“创建控制”,或“创建显示”等命令。4)数据流编程控制VI程序的运行方式叫做“数据流”。对一个节点而言,只有当它的
15、所有输入端口上的数据都成为有效数据时,它才能被执行。当节点程序运行完毕后,它把结果数据送给所有的输出端口,使之成为有效数据。并且数据很快从源送到目的端口。如图1-7所示,这个VI程序把两个输入相乘,再减去50.0。这个程序中,框图程序从左往右执行,这个执行次序不是由于对象的摆放位置,而是由于相减运算函数的一个输入量是相乘函数的运算结果,它只有当相乘运算完成并把结果送到减运算的输入口后才能继续下去。 图1-7 数据流举例 图1-8数据流举例如图1-8所示,你认为哪一个节点函数将先执行?是乘法还是除法?在这个例子中,我们无法知道哪一个节点函数首先执行,因为所有输入量几乎同时到达。4程序调试技术程序
16、调试是进行任何程序设计过程中所必须的过程。在程序设计中不可避免地会有各种逻辑上和语法上的错误,这些都需要通过程序调试找出来加以改正。1)找出语法错误如果一个VI程序存在语法错误,则运行按钮将会变成一个折断的箭头,表示程序不能被执行。这个按钮被称作错误列表。点击,则LabVIEW弹出错误清单窗口,点击其中任何一个所列出的错误,选用Find功能,则出错的对象或端口就会变成高亮。2)设置执行程序高亮点击“高亮执行”按钮使其变成高亮形式,再点击运行按钮,VI程序就以较慢的速度运行,没有被执行的代码灰色显示,执行后的代码高亮显示,并显示数据流线上的数据值。这样,我们就可以在根据数据的流动状态跟踪程序的执
17、行。3)断点与单步执行使用断点工具可以在程序的某一地点中止执行,用探针或者单步方式查看数据。使用断点工具时,点击设置或者清除断点的地方。断点的显示对于节点或者图框表示为红框,对于连线表示为红点。当VI程序运行到断点被设置处,程序被暂停在将要执行的节点,以闪烁表示。按下单步执行按钮,闪烁的节点被执行,下一个将要执行的节点变为闪烁,指示它将被执行。4)探针可以用探针工具来查看当框图程序流经某一根连接线时的数据值。探针显示窗口总是被显示在前面板窗口或框图窗口的上面。三、实验内容1创建自己的第一个VI。编写程序,实现将一华氏温度(F)转换成摄氏温度(C)的功能。已知摄氏温度与华氏温度的关系C5(F32
18、)/9。(1)前面板设计如图1-9,华氏温度为数值输入控件,摄氏温度作为显示控件,按要求设置标签和显示范围,同时配数字显示。 图1-9 Temp前面板 图1-10 Temp程序框图(2)程序框图如图1-10所示设计程序框图,建议数值常数使用在连接端子处点击右键创建(Create)常量(Constant)的方法更好些。(3)把该VI命名为Temp.vi,保存为 D:Yourname的文件夹中。2自己创建一个VI,完成以下功能:将两个输入的数字相加并显示结果;将同样两个输入数字相乘并显示结果;比较两个输入数字,如果数字相等,则LED指示灯亮。最后,保存为Simple Math.vi文件。如图1-1
19、1:A和B为数字控件输入,两个数字指示器分别显示输出结果A+B和AB,当输入数字A和B相同时,将点亮LED。 图1-11 实验2的前面板3子VI的创建与调用)打开练习1中Temp.vi。)设计图标编辑器,如图1-12所示,绘制一个温度计,创建一个TEMP的文本。注意只能在前面板中编辑图标和联接器。图1-12编辑后的图标编辑器窗口3)设置联接器端子。4)调用创建的子Temp,使其实现实验1的功能。4设计一个VI程序,计算一元二次方程的两根。 四、思考题1. 写一个VI比较两个数的大小,如图所示:当AB时,指示灯亮。2. 写一个温度监测器,如图所示,当温度超过报警上限,而且开启报警时,报警灯点亮。
20、温度值可以由随机数发生器产生。五、实验报告要求1调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2理解基于数据流编程的基本编程思路。3总结VI基本编程的快捷操作。4简述VI程序有什么构成,其各部分的功能是什么。5思考:在前面板和框图程序中,如何区分控制器和指示器。6心得体会及其它。实验二 LabVIEW程序结构循环结构一、实验目的1学习并掌握For循环和While循环以及它们的不同点。2学习使用移位寄存器(Shift Register)和反馈节点(Feedback Node)。二、实验原理While循环和For循环在函数的结构(St
21、ructures)选项板中可以找到。创建循环的具体方法是,选择该循环后,先在欲放入循环内执行的对象左上方单击,然后按下鼠标,拖曳出一个矩形框包围执行对象。释放鼠标时就创建了一个指定大小和位置的循环。While循环可以反复执行循环体的程序,直至到达某个边界条件。它类似于普通编程语言中的Do循环和Repeat-Until循环。While循环的框图是一个大小可变的方框,用于执行框中的程序,直到条件端子接收到的布尔值为FALSE。1For循环和While循环当程序有确定的循环次数时,使用For循环。在程序框图中添加For循环,如图2-1所示。(循环次数输入端):For循环必须给定循环次数N(N0,否则
22、循环不执行),此项一般都要有输入。当For循环的输入数据是一个数组时,如果不给定循环次数,则数组的大小将决定For循环的循环次数。如果同时输入两个数组,循环次数以数组个数最少的决定。(循环计数):计数范围0N1。当具体的循环次数不可知时,我们使用While循环,如图2-2所示。While循环也有一个循环计数,第一次循环时的值为0。另外,While循环有一个循环条件判断端子。请特别注意,无论如何,都要给While循环结构一个有效的停止条件,否则可能就会使循环陷入死循环的状态。While循环还提供了一个快捷方式:Functions-Express-执行过程控制-While Loop,程序框图如图2
23、-3所示,与图2-2不同的时自动加了一个停止按钮。 图2-1 For循环 图2-2 While循环 图2-3 快捷While2. 移位寄存器和反馈节点使用循环结构时,经常会遇到下一次循环要用到上一次循环运行结果的情况,这时就需要不断的将每次循环的结果存储下来,以传递给下一次循环。移位寄存器(Shift Register)和反馈节点(Feedback Node)就是用来实现这样的操作的。在For循环和While循环中都可以添加移位寄存器和反馈节点,添加方法如下:1)移位寄存器(Shift Register)移位寄存器可以将数据从一个循环周期传递到另外一个周期。创建移位寄存器的方法是,用鼠标右键单
24、击循环的左边或者右边,在快捷菜单中选择 Add Shift Register,如图2-4所示。移位寄存器在流程图上用在循环边框上相应的一对端子来表示。右边的端子中存储了一个周期完成后的数据,这些数据在这个周期完成之后将被转移到左边的端子,赋给下一个周期。移位寄存器可以转移各种类型的数据数值、布尔数、数组、字符串等等。它会自动适应与它连接的第一个对象的数据类型。 (a)为For循环设置移位寄存器 (b)为While循环设置移位寄存器图2-4 设置移位寄存器2)反馈节点(Feedback Node)反馈节点完成的功能同移位寄存器类似。在For循环或者While循环中,只要将其中的子VI、函数的输入
25、/输出相连接,就会自动出现反馈节点。当然,也可以通过Functions-Execution-Control-Feedback Node来添加。在反馈节点上单击鼠标右键,从弹出的快捷菜单中选择Replace with Shift Register,反馈节点将变成移位寄存器,如图2-5所示。下面通过一个例子来看一下移位寄存器和反馈节点是如何工作的。如图2-6所示。 图2-5 将反馈节点变为移位寄存器 图2-6 反馈节点和移位寄存器在此如果不给移位寄存器和反馈节点赋初值(本例中For循环框左边的两个常数0),下次程序运行时,移位寄存器和反馈节点中的值将以上次运行完的值开始。三、实验内容1While循
26、环的基本结构创建两个关于While循环的VI,如图2-7所示,其中一个带延时,一个不带延时,都在前面板显示循环计数和停止按钮,比较这两个循环的不同。提示:不带延时的循环,占用CPU资源,不推荐;带延时的循环,节省CPU资源,常用。 (a) 不带延时 (b)有延时图2-7 While循环前面板与程序框图2While循环中实现累加的两种方法(1)利用移位寄存器实现累加1-100,并将结果显示在前面板上;(2)利用反馈节点实现累加1-100,并将结果显示在前面板上。 3For循环的基本结构创建三个关于For循环的VI,分别设定For循环的循环次数为100、循环次数设定、输入数据为一个数组等,并在前面
27、板上设定第二个循环的次数及显示For循环的实时次数,观察显示结果。 4统计满足条件随机数的个数统计100个随机数中大于0.5的个数,要求在前面板显示统计结果。*5设计一个VI,实现使用循环和移位寄存器计算随机数序列的移动平均值。要求该VI产生一个随机序列,序列长度N由前面板滑动条控件输入,该随机数序列的移动平均值由下列公式可计算:这里,表示在第i次计算的平均值,是来自随机数函数的当前随机数。前面板要求显示当前用于计算移动平均值的随机数个数i+1,当前的移动平均值,前面板设计如图2.10所示,最后将该VI保存为Random Number Average.vi文件。在Highlight Execu
28、tion加亮执行的状态下观察数据流。图 2.10Random Number Average四、实验报告要求1调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2说明For循环与While循环的区别。3理解移位寄存器的作用以及它的初始化。4心得体会及其它。实验三 LabVIEW程序结构顺序结构与条件结构一、实验目的1掌握顺序结构(Sequence Structure)、条件结构(Case Structure)编程。2了解时间估计和控制函数。3了解公式节点(Formula Node)的使用。二、实验原理1顺序结构(Sequence Str
29、ucture)VI程序的运行是“数据流”驱动的,有时我们必须对这种数据流进行控制,这样就用到了顺序结构。在LabVIEW中有两种循序结构:平铺式和层叠式顺序结构。使用平铺式顺序结构可以看到整个程序框图,当程序框图所占空间的大小允许时,可以使用这种顺序结构。在程序框上单击鼠标右键,在弹出的快捷菜单中选择Add Frame after或Add Frame Before,就可以在本帧后或者前添加一帧,如图3-1所示。使用层叠式顺序结构比较省空间,但是数据在各帧中的传递必须通过Sequence Local来实现,并且每次只能显示一帧。可以用类似的方法来添加前一帧或者后一帧,在弹出的快捷菜单中选择Add
30、 Sequence Local,则在顺序结构中添加Sequence Local,如图3-2所示。 图3-1 添加帧图 图3-2 添加Sequence Local顺序结构顺序地执行子框图,它看上去像是电影胶片。它可以按一定顺序执行多个子程序。首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去。2. 时间估计和控制函数 “等待”:控制VI定时执行,每次执行单元(比如循环)内部,在执行代码运行结束后,开始计时。保持此状态直到毫秒计数器的值等于预先设定的值。 “等待下一个整数倍毫秒”:每次执行单元内部,在执行代码开始运行时,就开始计时,保持此状态直到毫秒计数器的值等于预先设定数的整数倍。用于同步
31、各单元操作。“Tick Count (ms) 函数”:用与Express VI完成定时任务。3条件结构(Case Structure)条件结构的输入端可以连接布尔型和数字型变量。当连接的是布尔型变量时,只有True和False两种。当连接的是数字型变量时,Case框上的标识将变为0,1,根据输入量的不同,Case结构选择运行不同的程序。程序框图如图3-3所示。在默认状态下,Case结构只有0和1两项,用右键单击Case结构的边框,从弹出的快捷菜单中选择Add Case After来添加一个Case。 图3-3 Case结构举例框图程序图3-5 属性设置前面板如图3-4所示。是用来选择操作是加法
32、、减法还是乘法。选择Memu Ring,然后通过工具模板改变大小,鼠标右键选择Properties,在弹出的对话框中改变其属性,同时添加如图3-5所示的内容。图3-4 Case结构举例前面板子程序标识按钮条件端子图3-6 Case结构Case结构含有两个或者更多的子程序(Case),执行哪一个取决于与选择端子或者选择对象的外部接口相连接的某个整数、布尔数、字符串或者标识的值。必须选择一个默认的Case以处理超出范围的数值,或者直接列出所有可能的输入数值。Case结构如图3-6所示。4公式节点(Formula Node)公式节点是一个大小可变的方框,可直接在流程图中输入公式。从函数/结构中选择公
33、式节点就可以把它放到流程图中。当某个等式有很多变量或者非常复杂时,这个功能就非常有用。图3-7 公式节点三、实验内容1设计一个VI,计算产生一个与指定的数字相等的随机数所需花费的时间。2使用Case结构,创建一个VI以检查一个数值是否为正数。如果它是正的,VI就计算它的平方根,反之则显示出错。如图3-9所示,最后将该VI保存为Case Structure.vi。图3-9 Case Structure提示:可以使用以下函数:One Button Dialog函数:它可以用于显示一个对话框,内容可由字符串常量输入提供。例如: 3设计一个VI,用公式节点来计算下列方程:y1=x3-x2+5,y2=m
34、x+b,其中x的取值为0-20,以上两个方程只许使用一个Formula Node。4设计一个VI能够像计算器一样进行运算。前面板上有两个数字控制器,用来输入两个数字,另有一个指示器,用来显示VI对输入数字进行运算(Add、Subtract、Divide或Multiply)的结果。用一个滑动条控制器来选择加、减、乘、除运算。*5分别用Case结构和公式节点语句两种方法,实现下列条件分支语句:考虑计算两数比率x/y的下列代码段:if (y0) z=x/y;else z=+;两VI保存为Case Division.vi和Formula Division.vi。*6利用case结构的多分支,进行下列简
35、单程序设计。要求:星期一显示:新的一周开始了,好好学习! 星期二显示:今天是星期二,继续努力! 星期三显示:今天是星期三,生活愉快! 星期四显示:周四了,加油呀!星期五显示:今天是星期五,站好最后一班岗!星期六显示:周末愉快!星期日显示:好好休息,迎接新的一周!四、思考题1数据流编程有何有点?2. LabVIEW有哪两种顺序结构?各有何特点?3. 掌握Case结构的组成及设计方法。五、实验报告要求1调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2使用公式节点时,如果输入变量的名称同输出变量的名称相同时,会怎样?3心得体会及其它。实
36、验四 LabVIEW程序结构事件结构与状态机一、实验目的1掌握事件结构(Event Structure)编程。2了解状态机的工作原理和设计方法。二、实验原理1事件结构(Event Node)编程的主要目的是为了实现用户的某种功能,用户通过用鼠标、键盘、程序内部等触发某种程序动作,从而达到某种结果,这些操作都被称作为事件,LabVIEW中相应这些事件最常用的结构就是“事件结构”。事件结构内容丰富,基本上大的程序结构都需要用到事件结构。事件结构在程序不能够单独响应各种事件,必须与循环结构一同使用。以图形化方式响应和处理用户的操作;与Windows操作系统的事件处理方式相似。如图4-1所示。 图4-
37、1 事件结构 事件结构的组成:(1)上边框中间是事件选择标签,用于标识当前显示的子框图(第0个)所处理的事件源。其增减与层叠式顺序结构和选择结构中的增减类似。(2)事件数据节点为子框图提供所处理事件的相关数据。事件数据节点由若干个事件数据端子组成。(3)事件超时端子,隶属于整个事件结构,用于为超时事件提供超时时间参数,以ms为单位。当值为-1时,事件结构处于永远等待状态,直到指定的事件发生为止。通常情况下,应当为事件结构指定一个超时时间,否则事件结构将一直处于等待状态。 LabVIEW事件编程的黄金原则:(1)不要将事件结构放置在While循环之外。(2)不要在事件结构中直接使用循环处理事件。
38、(3)在事件结构中添加“停止”按钮的处理分支。提示:为防止前面板“死锁”,在编辑事件结构分支时,请将“锁定前面板直至事件分支完成”复选框去掉。2状态机顺序模式是我们最先接触,也是最基本的一种编程模式,程序按照固定的顺序依次执行,结束。但在很多情况下,静态的顺序模式并不能满足我们编程的要求,我们需要更有效地动态结构来实时改变程序的执行顺序。比如,一个自动的可乐贩售机,当然它可以实现简单的投币,取可乐,结束这样的顺序模式,但更多的情况下,需要经过多次投币,更或者是取消购买来结束一次操作。在这种情况下,状态机的引入就成了必然的结果。 那么什么是状态机呢?简单的说,状态机是对系统的一种描述,该类系统包
39、含了有限的状态,并且在各个状态之间可以通过一定的条件进行转换。一般可以用状态图来对一个状态机进行精确地描述。在LabVIEW中,任何一个状态机都是由三个基本部分构成的,首先外层是一个while 循环(用于维持状态机的运行),同时在while循环中包含有一个条件结构(用以对各个不同的状态进行判断),第三个基本部分是移位寄存器(用以将下一个状态传递到下一次循环状态判断中)。另外在一个完整的状态机中,我们一般还会提供初始状态,每一个状态的执行步骤以及下一个状态切换代码等等。 除了前面提到的三个基本部分以外,状态机的构建还有一个技巧,就是使用枚举型常量来作为状态变量,相对于其它数据类型来说,枚举常量表
40、示了两组成对的数据,一组是字符串,一组是数值,两者一一对应,在前面板上,能直观地看到字符串,在程序面板上则简单地表示为数值型数据,整个枚举型数据的值可以是预定义的多个数据中的任何一个值。 为什么要使用枚举型数据来作为状态变量呢?因为枚举型数据和条件结构配合使用时相当方便。第一,在条件结构的条件判断框中,看到的将不是单纯的数值,而是定义好的字符串,这样直观的表现形式给不同状态的管理带来了方便,另外,在条件结构上通过右键单击,选择为每个值添加分支,就能够自动地将条件结构根据枚举数据进行展开,从而保证每个状态的完整性。此外,考虑到以后对状态机修改及维护的方便,通常将该枚举常量保存为一个自定义控件,将
41、其作为枚举常量引入状态机中,当需要对状态变量进行修改时,只需要对该自定义控件进行一次修改、更新,就能对该状态机中任何位置的状态变量进行统一的管理了。三、实验内容1. 在前面板中显示一个按钮和一个数值输入控件,当在按钮上按下鼠标或数值输入控件值发生变化时,产生事件。当该事件发生时,弹出对话框,询问是否继续,点击Yes,While循环继续执行;若点击No则退出While循环;此外,设置一个超时处理子图形代码框,若5秒钟没有在前面板操作,则退出While循环。 2. 数据采集与处理状态机设计。该状态机主要完成数据采集与数据分析功能。初始化检查VI事件数据采集数据分析停止图4-5 状态图转换图“数据采
42、集”:值改变“数据分析”:值改变“停止”:值改变(1)状态变量枚举类型定义为:初始化、停止、检查VI事件、数据采集、数据分析等五项,将其设定为自定义类型。系统状态转换图如图4-5所示。(2)在“初始化”分支中,将向波形图、信号测量局部变量写入初始数据代码。注意数组常亮为一个空数组。(3)在“检查VI事件”分支中,设置一个VI事件结构,事件结构包含以下事件分支:l “数据采集”:值改变;l “数据分析”:值改变;l “停止”:值改变。并将每个按钮设置为“释放时触发”。(4)输出隧道设置为“取消未连线时使用默认”。(5)Case结构中不要包含默认帧。 (6)前面板及部分程序框图如下: *3. 在前
43、面板放置四个控件:门布尔控件,表示一扇门(鼠标点击表示敲门);敲门次数控件用来记录时间的次数;停止按钮布尔控件,用来表示随时停止程序的运行;门把手指示灯控件,要开门时门把手变绿,不开门时门把手为红色。要求用事件结构设计,运行程序后,就一直等待事件的发生,此时,如果用鼠标点击“门”一次,则会弹出对话框,显示“您找谁呀?”,如果让其进入,选择“确定”按钮,门把手变“绿”,程序终止;如果不让其进入,选择“取消”,敲门次数显示为1,程序继续等待。如果再敲门,则显示“对不起,您敲错了!”,确定后,敲门次数显示为2。如果再敲,则显示“错了,请不要再敲了!”,敲门次数显示为3。如果再敲,则显示“如果再敲,我
44、就要报警了!”,敲门次数显示为4。如果还敲,则显示“这里是110,我们正赶往您那儿!”,确定后,程序自行终止。如果在整个过程中,点击“停止”按钮,程序随时终止。 四、思考题1什么是事件?事件结构有哪几部分组成?使用事件结构有何优点?2什么是状态机?状态机有哪几部分组成?为什么要使用状态机? 五、实验报告要求1调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。2使用公式节点时,如果输入变量的名称同输出变量的名称相同时,会怎样?3心得体会及其它。实验五 LabVIEW编程的数组与簇一、实验目的1掌握如何创建、使用数组;数组函数的功能和应用
45、,掌握它们的区别以及相应操作。2掌握如何创建、使用簇;簇函数的功能和应用,掌握它们的区别以及相应操作。二、实验原理1数组是一些具有相同类型的元素组成的集合。数组包含两方面的内容:元素和维数。数组中的元素可以是数字、布尔、字符、路径、波形和簇等数据类型。一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。可以通过数组索引访问其中的每个元素。数组元素不能是数组、图表或者图形。LabVIEW提供了很多用于操作数组的功能函数,位于函数Functions数组Array中。其中包括创建数组、初始化数组、数组大小、数组子集、索引数组等。l 创建数组:用于根据标量值或者其他的数组创建一个数组。
46、l 初始化数组:创建所有元素值都相等的数组。l 数组大小:返回输入数组中的元素个数。l 数组子集:选取数组或者矩阵的某个部分。l 索引数组:用于访问数组中的某个元素。建立数组的步骤如下:1)从数组和类子模板(Controls-All Controls-Array & Cluster)上选中数组,放置在前面板中,此时为数组空壳,可以向里边添加(用拖拽的方法)数字、布尔、字符等数据类型的控制器或指示器,来建立相应的数组控制器和指示器。此时可以看到数组上有两个显示窗口:u 标号显示窗:标号从0开始,每单击一次“增加”键,标号显示值顺序递增。这个标号就是数组元素的序号;对于一个含n个元素的数组,其标号
47、为0n-1。u 元素显示窗:用来显示元素的数值。数组中的元素按序号排列。数组元素的查找按行/列标号进行。2)右键单击标号窗口,弹出一个快捷菜单,选择Add Dimension来增加数组的维数。2簇(Cluster)是另一种数据类型,它的元素可以是不同类型的数据。它类似于C语言中的structure。使用簇可以把分布在框图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度,减少子VI的连接端子的数量。簇相当于一个容器,容器中的元素可以是各种不同的数据类型。也就是说,可以在一个簇中放置控制模板上的各种控件,如数字控件、布尔控件、数组控件等,但是不能将输入控件和输出控件同时放入其中。因此,在编
48、辑流程图时,可以减少连线数以及连线的节点数,最终简化流程图。它有多个输入,一个输出。要建立簇,可以选择控制模板中数组和类子模板上的Cluster,将其调入前面板。向类控件中放入元素,即将控制模板中的相应控件放入其中,俗称把元素“捆绑”在一起。l 捆绑(Bundle)数据Bundle功能将分散的元件集合为一个新的簇,或允许你重置一个已有的簇中的元素。可以用位置工具拖曳其图标的右下角以增加输入端子的个数。最终簇的序是取决于被捆绑的输入的顺序。右图中Bundle图标中部的Cluster端子用于用新元素重置原簇中的元素。图5-1 簇控件快捷菜单l 分解(Unbundle)簇 Unbundle是Bund
49、le的逆过程,它将一个簇分解为若干分离的元素。如果要对一个簇分解,就必须知道它的元素个数。LabVIEW还提供一种可以根据元素的名字来捆绑或分解簇的方法。右键单击簇控件的边缘,弹出快捷菜单,如图5-1。其中:Reorder Controls In Cluster:用于设置类控件中各元素的排列顺序,这个排列顺序是输出信号顺序,如图5-2所示。在Cluster输出1和输出2两个簇控件中,元素输出的排列顺序不一样。AutoSizing:右键单击该选项后,出现如图5-3所示的菜单,选择相应的选项,可自动调节类控制的边框大小及排列方式。图5-2 Reorder Controls In Cluster设置
50、图5-3 AutoSizing设置Properties:用来定义类控件的一些属性,如“AutoSizing”,改变标签的名称,是否显示标签等内容及填入描述信息。属性页将前面板的属性特征集中到了一些简单的配置对话框中。数组和簇的区别如下:u 簇可以包含不同的数据类型,而数组仅可以包含相同的数据类型;u 簇具有固定的大小。三、实验内容1练习数组的基本创建。利用循环的自动索引功能创建一个装有10个随机数的一维数组,并计算数组元素的平方和,同时求出该数组索引为3、长度为2的子数组。要求前面板显示该一维数组及平方和结果、输出的子数组。2编辑下列VI,理解一维数组和二维数组的产生,存为Two Dimens
51、ional Array Demo.vi。 5-4 Two Dimensional Array3创建一个VI,实现将输入控件值与输入数组合并连接起来生成新的数组。该VI使用数组大小和初始化数组两函数来创建维数合适的新数组,并将新数组的所有元素初始化为1。最后,VI计算两新数组间的差,并将结果显示在前面板中。前面板和基本程序框图组成如图5-5所示,最后将该VI保存为Practice with Arrays .vi文件。 图5-5 Practice with Arrays前面板和程序框图4创建由一个控件簇和一个显示簇所组成的VI。要求输入控件数值加一,开关二反相,显示簇同时进行相应的显示。前面板组成
52、如图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心得体
53、会及其它。实验六 LabVIEW编程的图形显示一、实验目的1学习并掌握Chart和Graph的使用,理解它们的区别。2掌握Chart的三种显示模式。3了解其它二维图形的绘制。二、实验原理图形显示是虚拟仪器面板设计的重要内容。图形是以曲线来显示数组中的数据,常用的二维图形控件有Chart、Graph和XY Graph,可显示多条曲线。并可以改变曲线显示的格式。在LabVIEW的图形显示中Graph和Chart是两个基本的概念。一般说来Chart是将数据源(例如采集得到的数据)在某一坐标系中,实时、逐点地显示出来,它可以反映被测物理量的变化趋势,例如显示一个实时变化的波形或曲线,传统的模拟示波器、
54、波形记录仪就是这样。而Graph则是对已采集数据进行事后处理的结果。它先将被采集数据存放在一个数组之中,然后根据需要组织成所需的图形显示出来。它的缺点是没有实时显示,但是它的表现形式要丰富得多。例如采集了一个波形后,经处理可以显示出其频谱图。如数字示波器。LabVIEW的Graph子模板中有许多可供选用的控件,其中常用的见下表:ChartGraphWaveform(波形)*XY*Intensity(强度图)*Digital(数字图)*3D Curve(三维曲线)*由表中可以看出,Chart方式尽管能实时、直接地显示结果,但其表现形式有限,而Graph方式表现形式要远为丰富,但这是以牺牲实时为代
55、价的。1Graph控件(波形图)曲线图例刻度图例(Scale Legend)图形模板(Graph Palette)光标图例(Cursor Legend)标签(Label)说明(Caption)以Graph为例,图6-1为它的控件,这些控件都包含在图形菜单的Visible Items选项下。图6-1 Graph的图形控件曲线图例可用来设置曲线的各种属性,包括线型(实线、虚线、点划线等)、线粗细、颜色以及数据点的形状等。图形模板可用来对曲线进行操作,包括移动、对感兴趣的区域放大和缩小等。光标图例用来设置光标、移动光标,帮助你用光标直接从曲线上读取感兴趣的数据。刻度图例用来设置坐标刻度的数据格式、类型(普通坐标或对数坐标),坐标轴名称以及刻度栅格的颜色等。2Chart(波形图表)的独有控件Chart的数据并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年工业厂区建设单价合同
- 2024年合作共赢:合伙人联盟合同范本
- 2024年ktv品牌转让及经营权协议
- 2024年原材料存货抵押合同
- 2024年东南亚渔业合作开发协议
- 2024年农业用地承包合同
- 2024年土地交易协议书
- 2024年假期管理协议
- 2024年大额长期借款协议书
- 2024年产品包装设计协议「精装版」
- 防防呆法防错法-课件
- 2023年医疗事故案例
- 工务劳安培训课件
- 大学生劳动实践清单(本科收藏版)
- 2023年全球及中国柴油机行业销售量、市场规模、下游细分市场竞争战略及重点企业市场占有率分析
- 保卫科基础台账范本
- 《匆匆》特级教师教学实录
- 正确使用网络流行语+课件-2022-2023学年主题班会
- 国网基建各专业考试题库大全-计划专业(考题汇总)
- 关于小学科学大单元教学设计的思考
- 2022-2023学年江苏省徐州市睢宁县七年级(上)期中数学试卷(含解析)
评论
0/150
提交评论