版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、01、什么是labviewLabview概述虚拟仪器(virtual instrumention)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。下面的框图反映了常见的虚拟仪器方案。虚拟仪器的主要特点有:· 尽可能采用了通用的硬件,各种仪器的差异主要是软件。
2、83; 可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。 · 用户可以根据自己的需要定义和制造各种仪器。 虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW。虚拟仪器的起源可以追朔到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。PC机出现以后,仪器级的计算机化成为可能,甚至在Microsoft公司的Windows诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0以前的版
3、本。对虚拟仪器和LabVIEW长期、系统、有效的研究开发使得该公司成为业界公认的权威。普通的PC有一些不可避免的弱点。用它构建的虚拟仪器或计算机测试系统性能不可能太高。目前作为计算机化仪器的一个重要发展方向是制定了VXI标准,这是一种插卡式的仪器。每一种仪器是一个插卡,为了保证仪器的性能,又采用了较多的硬件,但这些卡式仪器本身都没有面板,其面板仍然用虚拟的方式在计算机屏幕上出现。这些卡插入标准的VXI机箱,再与计算机相连,就组成了一个测试系统。VXI仪器价格昂贵,目前又推出了一种较为便宜的PXI标准仪器。虚拟仪器研究的另一个问题是各种标准仪器的互连及与计算机的连接。目前使用较多的是IEEE 4
4、88或GPIB协议。未来的仪器也应当是网络化的。LabVIEW(Laboratory Virtual instrument Engineering)是一种图形化的编程语言,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。LabVIEW集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用TCP/IP、ActiveX等软件标准的库函数。这是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。图形化的程序语言,又称为“”语言。使用这种语言编程时,基本上不
5、写程序代码,取而代之的是流程图或流程图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW是一个面向最终用户的工具。它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。利用LabVIEW,可产生独立运行的可执行文件,它是一个真正的位编译器。像许多重要的软件一样,LabVIEW提供了Windows、UNIX、Linux、Macintosh的多种版本。04、编辑和调试虚拟仪器编辑技术在前一章的末节,我们一起写了一个最简单的Labview程序,下面我们将仔细讨论
6、前面板和程序框图中的各种编辑技术1创建:在上一章中我们介绍了最常用的创建方法,就是用鼠标选择,然后放置到框图或前面板中,在这里我们为大家介绍另外一种常用的方法。如图:放置一个随机数函数到程序框图,位于函数编程数值随机数。然后在上面单击右键,选择创建显示控件,如图则可看到有一数值控件与其相连,前面版上也出现了一个数值控件。如图: 2选择对象:在前面板和程序框图中,使用定位工具来选择对象,它也可以用来移动和调整对象的大小,如图:当对象被选中时,就会出现环绕的虚线轮廓当要选择多个对象时,按住<shift>键并同时单击鼠标即可,如图:或者在空白处单击鼠标,并拖拽光标直到全部希望的对象均出现
7、在矩形框来选择多个对象。如图: 3移动对象:选定对象后,用鼠标拖拽,便可移动对象到指定位置。如图:4删除和复制对象:显然,选中所要进行操作的控件后,单击主菜单中的编辑,然后选择删除或者复制,粘贴是完全可以实现各项操作的。下面我向大家介绍几种用键盘来实现这些操作的方法。删除:选中控件后,按下“退格”键或<delete>即可复制:选中控件后,按<Ctrl+C>,然后<Ctrl+V>即可,或者按下<Ctrl>,然后拖拽所需要复制的控件到其他地方即可,如图:5调整对象大小:当工具选项板上选定定位工具时,把鼠标挪到各个控件的角上时,就会大小调节的句柄,直接
8、拖拽,然后释放,便可改变控件的大小,如图: 注意:某些控件横向的大小,不能改变纵向的大小,比如数字控件!6标签对象:标签分为两种自由标签和固有标签。固有标签是用户在添加控件时系统自动添加上的,不能删除和复制,只能隐藏。如图,单击右键,把标签一栏取消即可。自由标签不附加与任何对象,可独立的创建,移动或处理。使用即可实现自由创建和编辑。如图: 输入完后,在空白处单击鼠标即可。7改变字体,字形和文本大小:使用工具条上的文本设置工具,可以方便地更改标签,控件或指示器中显示的任何文本的字体,字形,大小和对齐方式。如图:选中控件后,更改大小为36 具体每一项下拉菜单的功能,大家根据字面的意思即可理解,这里
9、不再赘述。8编辑连线:如图:当连线发生错误时,就会出现断线,在有断线的时候,程序也就不能运行,运行按钮也会发生改变,如图:此时选中断线,然后按<Delete>即可删除,或者按<Ctrl+B>清除所有断线。9对象的对齐,分布和大小调节:对齐先选中所需要对齐的控件,然后选择不同的对齐方式即可对齐后的效果如图:控件之间的间距也可进行调整,如图,先选中他们,然后选择调整间距。排列后的效果如图:三个控件已呈等垂直间距排列 调试技术1发现错误:当编程错误使VI不能编译或运行时,工具条上的运行按钮便会变为不能运行,如图:单击,便会弹出程序错误列表,如图:单击显示错误,便可在程序框图中
10、找到出错的地方,如图: 2加亮执行:单击加亮执行按钮,可在程序框图中观察到数据流的流动状态,但程序的执行时间会明显增加。如图: 3单步通过VI:为了调试程序,你可以一个节点一个节点地执行框图,在运行程序的时候,不要点击运行按钮,直接点击单步运行按钮,运行一步后,程序自动暂停下来,等待用户的下一个命令,再执行下一步。如图: 两个单步按钮均可,只是暂停的位置略有区别。 4断点与探针:要更为详细的知道程序在运行时的各个参数,可以在各条连线上设置断点,然后用探针查看断电上的数据,然后按继续按钮让程序继续运行。如图: 程序运行到断电处便会自动暂停,然后单击继续,便可继续运行。如图: 快捷键键盘上的按键组
11、合功能键盘上的按键组合功能Ctrl+S保存VICtrl+B消除所有无效连线Ctrl+R运行VICtrl+W关闭活动的窗口Ctrl+E在前面板和程序框图间切换Ctrl+F查找对象和VICtrl+H打开或关闭帮助窗口05、子VI什么是子VI子VI是供其他VI使用的VI,与子程序类似。子VI是层次化和模块化VI的关键组件,它能使VI易于调试和维护。使用子VI是一种有效的编程技术,因为它允许在不同的场合重复使用相同的代码。G编程语言的分层特性就是在一个子VI中能够调用到另一个子VI。下面可用一个表格表明子VI的作用:程序代码调用子程序function average (in1,in2,out)out=
12、(in1+in2)/2.0;Mainaverage (point1,point2,pointavg);子VI框图调用子VI框图编辑图标和连接器:1图标:每个VI都有一个默认的图标,显示在前面板和框图窗口的右上角。默认图标是一个Labview徽标和一个数字构成的图片,该数字指出自从Labview启动后已打开新VI的数量。使用“编辑图标”可以定制该图标。如图:选择编辑图标后,便可打开图标编辑器。编辑器如图: 各个控件的作用如图: 一个像素一个像素地绘制和擦除绘制直线。使用限制绘制水平,垂直和对角线从图标象素选取前景色用前景色填充封闭区域使用前景色绘制矩形框。双击该工具,可以用前景色给图标加边框使用
13、前景色绘制框并用背景色填充。双击该工具,可以用前景色给图标加边框并用背景色填充。选择图标区域,用于移动,复制,删除,或执行其他操作。双击次此工具并在键盘上按键将立刻删除整个图标。在图标中输入文本。双击该工具可以选择不同字体。在图标中通常采用小字体。显示当前前景色和背景色。分别单击前景和背景将进入彩色选项板,从中可以选择新的颜色。编辑好图标以后,就可以看到自己编辑的图标,如图:连接器:连接器是与VI控件和指示器对应的一组端子。连接器是为了VI建立的输入和输出口,这样VI就可以作为子VI使用。连接器从输入端子接受数据,并在VI执行完成是将数据传送到输出端子。在前面板上,每一个端子都与一个具体的控件
14、或指示器相对应。连接器端子的作用与函数调用时子程序参数列表中的参数类似。 注意:只能从前面板查看和编辑连接器窗格。 在右上角图标上单击右键,选择显示连线板,即可看到连接器。默认情况下,Labview根据前面板上控件和指示器的数目显示端子模板。如图: 也可在模式选项中选择更多的连接器类型,如图: 注意:子VI最多可用的端子数是28! 创建子VI方法一:把前面板和程序框图编辑妥当以后,按照上面的步骤编辑子VI的图标(编辑图标可跳过),然后打开连接器,给控件和指示器指定端子,在工具选项板上选择连线工具,然后把控件和指示器上的对应位置相连接。如图:连接正确后,在指示器上的相应位置颜色就会发生改变,表明
15、该处已连接上 全部正确连接后如图: 保存,更改名称为“求平均值”,退出,即可在其他程序中调用这个子VI了。 打开一个新的VI,在前面板上放置两个数值输入控件和一个数值显示控件,如图: 打开程序框图,选择“选择VI” 在弹出的对话框中选择“求平均值”,如图: 放置到程序框图中,如图: 然后连线,运行,如图: 方法二: Labview可以在程序框图中直接将选定的部分创建为子VI,如图: 这是一个将摄氏温度转化为华氏温度的程序,中间的运算可整个设置为一个子VI,步骤如下:1. 把要设置为子VI的部分进行选择,如图: 2. 点击编辑,然后点击“创建子VI”,如图:创建完成后,如图: 双击子VI图标,便
16、可对他进行编辑,如图: 建议:我极力建议将所创建的子VI保存在目录下而不是保存在库文件中。尽管在称为VI库的单个文件中能够保存多个VI,但我们不希望这样做。将VI保存为单个文件是最有效的存储方式。因为这样在复制,重新命名和删除文件时比使用VI库时要容易些。 与其他目录一样,VI库文件可以装入,保存和打开,但不是分层的。不能在VI库内创建另一个VI库,也不能在VI库内创建新目录。VI库文件创建后,当其出现在文件对话框中时,其图标将与VI文件图标略有不同。06、循环While循环1.While循环是一种结构,它重复执行代码片段直到满足某种条件为止。它可比作传统语言中的Do Loop或RepeatU
17、ntil循环。它位于编程结构While循环。每个While循环都有一个条件端子和一个重复端子。如图:重复端子用于记录和输出已执行的循环的次数,条件端子输入的是一个布尔变量:真或假,While循环将一直执行到连接条件端子上的布尔值变成真或假为止,取决于条件端子设置为“真(T)时停止”还是“真(T)时继续”。在条件端子上单击右键即可进行更改。如图: 下面举个简单的例子:利用While循环产生随机数,当产生的随机数大于0.8时,循环停止。 步骤如下:1. 打开前面板,新建两个数值显示控件,一个为循环次数,一个显示最后产生的那个大于0.8的随机数。如图: 2 切换到程序框图,放置一个While循环,如
18、图:3. 放置随机数函数到While循环内,并连线,如图:4. 放置比较函数,将循环次数与重复端子连线,如图:5 运行,即可在前面板上看到结果,如图:在程序框图中,在数值显示控件上单击右键,可更改数值的类型,如图: 各种数值的类型都可以看见,我就不再赘述。 在While循环的边框上单击右键,可添加位移寄存器,如图: 有关位移寄存器的用法,我们将会在For循环中讲到,这里暂不做介绍。 注意:While循环的条件端子一定要有连线,否则程序无法运行!如图: For循环1 For循环位于函数编程结构For循环,如图:从图中可以看到,For循环有两个端子 计数端子:要执行循环的次数,可用于For循环内部
19、的循环计数 重复端子:已执行循环的次数,可用于For循环内部的重复计数 For循环应用举例:产生10个随机数,并把最后一个显示出来。 步骤如下:1 放置一个数值显示控件到前面板,并改名为随机数。2 放置For循环到程序框图,如图: 3放置随机数函数到程序框图,并连线4计数端子上单击右键,选择创建常量,并输入10,如图:5运行程序,便可在前面板上看到结果。6因为程序的运行的速度非常快,我们无法一个一个地看清所产生的10个随机数,我们可以在程序框图中添加时间延迟控件。它位于函数编程定时时间延迟,如图:7 放置它到程序框图上,选择延迟的时间,即两次循环之间的时间间隔。如图:8 将时间设置为1.000
20、,点击确定即可,再运行程序就可从前面板上看到所产生的随机数了。移位寄存器移位寄存器用于For循环或While循环中从一个迭代传输数据到下一个迭代,它由循环垂直边框上一对反向相反的端子组成,在边框上单击右键,选择添加移位寄存器,就可进行添加。如图:右端子(带向上箭头的矩形)在每完成一次迭代后存储数据,移位寄存器将上次迭代的存储数据在下一次迭代开始时移动到左端子(具有向下箭头的矩形)上。移位寄存器可存储任何数据类型,包括数字,布尔,字符串和数组,但连接到同一个寄存器端子上的数据必须是同一类型。移位寄存器的类型与第一个连接到其端子之一的对象数据类型相同。 下面是1234100的程序,如图: 说明:进
21、行第一次运算的是0+0,For循环中的重复端子是从0开始计数,移位即寄存器在没有初始化的情况下,默认的数值是0,所以第一次运算的是0+0,第二次运算的是寄存器的0与重复端子的1相加,所以循环要进行101次。而计数端子输出的数据始终是101。 移位寄存器的初始化:移位寄存器的初始化是非常必要的,因为只要用户不退出VI,移位寄存器便可记录上次运算完时的结果,所以上面的程序在第二次执行时输出的结果不是5050,而是10100!添加初始化即可,如图: 下面在举几个复杂一点的例子。例一:计算一组随机数的最大值和最小值1. 新建一个VI,在前面板上放置一个波形图标,它位于新式图形波形图表,用它来记录产生的
22、随机数。同时在前面板上放置两个数值显示控件“最大值”和“最小值”,用来显示随机数中的最大值和最小值。2. 在程序框图中,放置一个For循环,设置循环次数为50次。单击边框选择添加两个移位寄存器,分别初始化为0和1。3. 放置随机数函数和最大最小值函数与程序框图中,其中最大最小值函数位于编程比较最大值与最小值。然后连线。如图:运行,便可在前面板上看到结果,如图: 例二:计算1. 在前面板上放置一个数值输入控件“阶次n”和一个数值显示控件“求和结果” 2. 在程序框图上放置两个For循环嵌套结构,外层循环的计数端口与“阶次n”连接,输出是各个数的阶乘所组成的一个数组。它的重复端子加1作为内层循环的
23、循环次数,内层循环利用一个移位寄存器实现阶乘运算,移位寄存器的初始值设为1。 3. 同样在程序框图的右边在放置一个For循环结构,它的计数端子没有任何连接数据,使用的是自动索引功能。这个循环的作用是对由阶乘所组成的一个数组进行索引,对索引出的各个元素进行求和计算,最后将计算结果输出给“求和结果”。 4. 完成连线,如图: 运行结果如图: 例三:计算自然对数中底数e的近似值。 算法:步骤: 1. 新建一个VI,打开前面板,添加两个数字显示控件,分别表示“近似值e”和“临界阶次N”。 2. 切换到程序框图,放置一个While循环,将条件端子的条件改为“真时停止”。在它内部再放置一个For循环,计数
24、端子与While循环结构的重复端子加1后连接。右击For循环边框,添加移位寄存器,并初始化为1,For循环结构的功能是计算各个数的阶乘。 3. 计算各个数阶乘的倒数,添加倒数函数,它位于函数编程数值倒数。 4. 添加比较函数,将它的阶乘的倒数与10-5比较,比较结果连接到While循环结构的条件端子上,如果小于则返回“真”,停止循环,否则返回“假”继续循环。 5. 由于While循环默认的是不能够自动索引功能,而程序中需要累加保存每次计算的阶乘,这就需要在输出通道上选择“启用索引”,实现自动索引,将各个元素累加成为一维数组。 6. 在程序框图右边再添加一个For循环,它的功能是进行自动索引求和
25、,需要主机的是它的移位寄存器被初始化为1,这是由近似算法所决定的。将输出结果送给“近似值e”。 7. 完成连线,并运行程序。如图: 运行结果,如图: 例四:实现对随机数进行平滑滤波。通过对4个连续的随机数求其平均值来实现。 1. 新建一个VI,在前面板上放置两个波形图表,一个为“原始波形”,一个为“滤波后波形”。 2. 在程序框图上放置一个While循环,在边框添加一个移位寄存器,然后在左边的寄存器上单击右键,选择“添加元素”,一共添加3个。如图: 3.4. 添加随机数产生函数,并添加符合运算,将连续产生的4个随机数相加,相加的结果除以4。 5. 放置循环定时函数,定义循环时间为100ms。
26、6. 完成连线,在While循环的条件端子处添加输入控件。如图: 运行结果: 07、数组数组是由同一类型数据元素组成的大小可变的集合。同其他语言一样,Labview也提供了数组结构,数组是相同数据类型的集合,这些数据类型可以是数组型,布尔型,字符串型等。当需要频繁地对一批数据进行绘图时,使用数组将获益匪浅。下面将详细介绍数组及数组函数的各种用法。创建数组1从前面板上创建数组:打开前面板,在控件新式数组,矩阵与簇数组,如图:再在里面放置一个数值输入控件即可,如图: 如果要显示更多的数组成员,在工具选项板上选择定位工具,在数组的边框停滞,当出现网状拐角后就可以拖动增加或减少显示区域。如图: 如果要
27、增加或减少数组的维度,既可以在索引框的快捷菜单上执行,如图: 增加后如图: 对于二维数组来说,索引框中上一个为行索引,下一个为列索引。 2程序框图上创建数组:在程序框图上创建数组和在前面板上创建数组有点类似,也首先创建一个外壳,然后再放入数值型常量,枚举或环形常量,字符串型常量以及布尔型常量等。刚刚放入常量后,所有的数组成员显示为灰色,可以用操作工具依次给它们赋值,赋值范围以外的数组成员保持灰色不变。如果跳过一些数组成员给后面的成员赋值,则前面的成员自动赋一个系统默认的值。先在程序框图上放置一个数组常量,位于函数编程数组数组常量,如图: 然后再往里放入一个数值常量,完成后如图: 数组函数数组函
28、数的面板如图:设计步骤如下: 1. 创建一个For循环,循环次数定为100次 2. 在数学函数中调用Sinc函数,重复端子作为输入,输出用一个波形图表和一个数组显示。如图: 例二:创建一个二维数组 1. 程序框图如图所示: 2. 现在已经有两组一维数组了,可以使用创建数组函数就可以把他们创建为二维数组,在一个波形图中显示,如图: 3. 可以用鼠标对该函数进行拉伸操作,即可有两个输入端子了。 4. 程序框图如图: 5. 前面板运行结果如图: 例三:初始化和分离数组:利用For循环的自动索引功能从一个输入数组中依次抽取各个元素,如果是大于0的数则添加到正数数组,如果是小于0的则添加到负数数组。并分
29、别计算两个数组中各自有多少个元素。如图所示便是程序框图下图是在选择结构中为“假”时的情景 其中一共用到了三个数组函数,一个初始化函数,一个创建函数,一个数组大小函数,运行时前面板如图: 数组函数就给大家介绍这么多,大多数函数的功能看汉语意思便能明白,当大家有什么问题的时候,可上我们的网站提问,我们将尽力为大家解答。08、簇簇簇是一种类似数组的数据结构,用于分组数据。簇和数组有着重要的差别,其中一个重要差别是,簇可以包含不同的数据类型,而数组仅可以包含相同的数据类型。例如,一个数组可以包含10个数字指示器,一个簇却可以包含一个数字控件,一个开关和一个字符串控件。尽管簇和数组的元素都是有序存放的,
30、但访问簇的元素最好是通过释放的方法同时访问其中部分或全部元素,而不是通过索引一次访问一个元素。簇和数组的另一个差别是簇具有固定的大小。簇通常用于将出现在框图上的有关数据元素分组管理。因为簇在框图中仅用唯一的连线表示,所以对于减少连线混乱和子VI需要的连接器端子个数,使用簇有着积极的效果。可以将簇看做是一捆连线,线缆中每一个连线表示簇的不同元素。在框图上,只有当簇具有相同类型,相同元素数量和相同元素顺序时,才可以将簇的子端连接。多态性应用于簇时,只需要簇具有同样顺序,同样数量的元素。下面来向大家介绍簇的创建簇的创建框位于前面板中的控件新式数组,矩阵和簇簇,如图: 然后就可以往簇的框中添加各种类型
31、的控件了,例如现在要建立一个学生的记录信息,包括学生的姓名,学号,性别和年龄.这就需要在簇外壳里依次放入两个字符串输入控件,一个数字控件和一个布尔控件.如图:与数组的创建类似,簇也可以从程序框图中创建,先在程序框图上放置一个簇外壳,然后就可以在簇外壳里放置各种数据类型常数。如图: 簇内对象的大小是可以调整的,右击簇边界,在弹出的快捷菜单中可以选择各种调节操作,如图: 选择调整为匹配大小,即可缩小簇的边框,如图为调整后的结果: 簇结构中的元素排列是按照它们放置的先后来排序的,它与簇内元素的位置无关。放入簇内的第一个元素序号为0,第二个元素序号是1,依次向下排列。如果删除了一个元素,序号将重新自动
32、调整。簇的排序很重要,它直接影响着后面将要介绍的“捆绑”以及“接触捆绑”函数的端口顺序,如果你想将一个簇与另一个簇连接,这两个簇的序和类型必须相同。 如果想要改变簇内元素的排列顺序,可以右击簇结构的边框,在弹出的快捷菜单中执行“重新排序簇中控件”,如图: 这时鼠标会变成一个带“”号的手柄箭头,黑框指出新设置的排列序号,白框表示原先的排列序号,可以改变标题栏上的“单击设置”内容,然后单击簇元素即可设置新的序号。设置完毕后单击工具栏上的“”按钮确定更改,如果想恢复原先设定值,单击“”取消设置。b) 簇函数簇函数的模版如图:簇函数中最主要的就是构造打包生成簇的“捆绑”函数,还有从簇中解包提取簇中元素
33、的“解除捆绑”函数。它们是根据簇成员的顺序来进行操作的,这也说明了簇内成员顺序排列的重要性。 簇函数举例:1. 创建簇,解包簇,再打包簇 该例的目的是学习使用簇的两个基本函数,如图:首先放置一个簇外壳到前面板上,将标签内容改为“输入簇”在簇外壳中依次放入字符串控件“Name”,布尔控件“Sex”,数字输入控件“Pay”以及字符串控件“Address”,通过这些簇元素来组成某一公司内一名员工的工资记录。如图:切换到程序框图,放置一个“解除捆绑”解包簇函数,函数刚放入时,它的右侧只有2个输出端口,当输入端口与“输入簇”端子相连后,右侧端口会自动增加为簇元素的数目,端口从上向下排列的顺序与簇内元素的
34、放置顺序相对应,并且数据类型也是与簇元素数据类型相对应。如图:同样放置一个“捆绑”打包簇函数,用定位工具将输入端口的数目增加到4个,依次将它们与解包出来的4个簇元素相连,表示又把它们进行打包生成一个新的簇。在输出端口创建一个簇显示器,把标签改为“输出簇”,如图:2. 替换簇成员 该例的目的是学习使用“按名称捆绑”函数来替换簇内的某些元素。1. 新建一个VI,在前面板上创建一个簇外壳,依次向簇内添加一个数字输入控件,一个布尔控件,一个字符串输入控件,如图: 2. 打开程序框图,选择“按名称捆绑”函数,它的功能是按照名称来替换簇成员的值。在函数刚放入时,它的左侧只有一个输入端口,将函数的“输入簇”
35、端口与创建的簇端子相连之后,左侧端口会显示簇内第一个元素的名称数值,用操作工具单击它可以选择其他的簇成员。如图: 3. 在前面板上创建一个输入控件,将标签改为“输入数字”,在程序框图将它与“数值”端口相连,表示将用它来替换簇元素。如图: 4. 在“按名称捆绑”函数后面创建输出簇,完成后即可运行程序,如图: 3. 插接生成簇数组 该例的目的是学习使用“索引与捆绑簇数组”函数插接簇数组函数来生成一个簇数组。1. 新建一个VI,打开程序框图,放置一个该函数,刚放入时它只有一个输入的端口,用定位工具拖拉它为3个输入端口。 2. 在程序框图上放置三个数组外壳,然后分别添加字符串常量,数值常量和布尔常量,
36、建立三个数组,如图: 然后给他们赋如图所示的值,如图:然后连线,并创建显示控件,如图:运行,结果如图:说明:该函数从输入的3个数组中依次取值,相同索引值的数据被攒程一个簇,所有的簇构成一个一维数组。插接成的数组的长度与所有输入数组中长度最短的一个相等,多余的数据被丢弃。4. 建立“数组的数组” 该例看起来好像是不可以实现的,因为在数组的学习中,已经知道数组的成员不可以是数组。这里将学习把一维数组当成一个簇,然后通过建立簇的数组,因为簇数组的每一个成员都是一个簇(即一维数组),从而实现建立“数组的数组”的目的。1. 先新建一个VI,打开程序框图,放置一个“创建簇数组” 函数,该函数的功能是建立簇
37、的数组,簇数组的每个成员都是一个簇。刚放入程序框图时,函数只有一个输入端口,用定位工具拖动它的边框,使它具有3个输入端口。 2. 在程序框图上创建3个数值型数组,分别对它们进行赋值,第一个和第三个数组长度设定为5,第二个数组的长度设定为4。在“创建簇数组”函数的输出端口创建一个簇显示器,将簇显示器的标签内容改为“数组的数组”,如图: 3. 运行程序,即可在前面板上看到结果,如图: Error簇Error簇是一类很重要的簇,许多的控件里都有“错误输入”和“错误输出”这两个簇的端口,通常来讲,当一个VI中间出现错误而导致不能运行时,可以在出错的控件的“错误输出”端子创建一个显示控件,则可以让程序继
38、续运行,如图所示,即为Error簇:而Error簇更重要的应用在于,它可以控制控件执行的先后顺序,也可以通过Error簇来控制循环的终止。如图: 当信号的发生出现错误的时候,就可以把循环停止。10、结构的使用条件结构条件结构是执行条件语句的一种方法。这类似于文本编辑语言中常见的IfThenElse语句。它位于程序框图中,函数编程结构条件结构。如图所示:条件结构包含有两个或者更多的子框图,每一个子框图包含一段程序代码,由此对应一个程序分支。多个子框图就像一摞卡片重叠在一起,任何时候只有一个是可见的,执行哪一个取决于于选择端子外部接口相连的某个整数,布尔数,字符串或者枚举指,用户也可以直接输入所有
39、可能出现的值。 1 选择端口的输入值条件结构选择端口的输入值是由与它相连的输入控件对象决定的,数据类型可以是布尔量,整形,字符串型或者枚举型。条件结构顶部中间是各分支的选择标识,它自动调整为输入的数据类型,可以在工具模板上使用标签工具直接键入单个数值或某个数据范围。数值之间用逗号来分开,例如:“.0,2,4.10”表示选择条件为:0,2,4,5,6,7,8,9,10。 对于字符型和枚举型数值在条件标识上会自动加上双引号,当键入的选择器标识值与连接选择端口的数值类型不同时,选择器标识变为红色标识有错误。如图: 设置默认分支的方法是,选择一个分支结构,在快捷菜单中执行“本分支设置为默认分支”,它的
40、作用是当选择端口的值与选择器标识值没有一个匹配时,就执行默认分支。如图: 2条件结构的数据通道条件结构的数据通道就是数据的输入和输出端口。将结构内外的端子相连后,边框上就会出现一个小矩形框,这就是数据通道,用于传输数据。向条件结构的一个分支提供数据时,这个数据对于所有的分支都是有效的,也就是其他分支都可以使用这个输入数据。条件结构的输出通道有些不同,当在一个分支中创建输出通道后,所有分支的同一位置都会出现一个白色小方框,它要求每一个分支都必须为这个通道予以连接,通道变为实心后程序才可以运行。也可以在通道的快捷菜单中选定“未连线时使用默认”为没有连接的分支定义一个默认输出值,这时输出通道变为灰色
41、。如图: 条件结构应用举例例一:该例的目的是检查一个数是不是正数,如果是就计算该数的平方根值,如果不是则发出警告。1. 新建一个VI,在前面板上放置一个数值输入控件和一个数字显示控件。 2. 在程序框图上放置一个条件结构,调整边框为合适大小。 3. 在比较运算子模板中选取“大于等于0?”函数,如果数字大于或者等于0则返回真,否则返回假。它的输出连接条件接口的选择端口。 4. 在数值数字运算子模板中选取“平方根”函数,放置在条件结构的“真”子代码框。 5. 选择一个发声函数,放到条件结构的“假”子代码框。它位于函数编程图形与声音蜂鸣声。如图: 6. 在条件结构的假代码框的输出通道上选取创建常量,
42、创建常数-999,表示当数值输入为负数时输出-999,同时蜂鸣器发出警告。 7. 完成连线,如图: 运行结果如图:例二:该例的目的是首先要判断液面的高度是否超过零界面,如果超过零界面则执行后续操作(循环判断液面是否超位),否则停止执行程序。 因为Labview语言的While训话是先执行,然后再判断条件。而在实际应用中,经常是要求先进行判断条件,只有当条件满足时才执行,否则不执行。可以在While循环中加入条件结构来实现此功能 1. 新建一个VI,在前面板上放置一个数值输入控件,模拟容器“液面高度”同时放置一个“液面报警”指示灯,当液面超过零界面时点亮。 2. 在程序框图上放置一个While循
43、环结构并在它内部放置一个条件结构,调整结构边框位合适的大小。 3. 在比较运算子模板中选取“大于0?”函数,如果数字大于0返回真,否则返回假。它的输出连接条件的选择端口,并且连接到While循环结构的循环条件端子,表示输入数字量大于0则继续循环,并且执行真分支。 4. 在真分支代码框中,放置“大于?”函数,将“液面高度”与上限值“5”进行比较,输出送给“液面报警”指示灯。 5. 完成连线,并运行程序。程序及运行结果如图: 顺序结构顺序框图位于函数编程结构平铺式顺序结构,层叠式顺序结构。顺序结构依次执行程序,它可以包含多个代码子框图,这些代码子框图看起来就像是多帧电影胶片一样,所以把每个子框图称
44、为帧。右击顺序结构的框架,将弹出如图所示的快捷菜单。 其中添加顺序局部变量是为了在各个帧之间传递数据。顺序结构的一个典型应用就是计算程序运行的时间,将通过这个例子来说明顺序结构的用法。 1. 新建一个VI,在前面板上放置一个数值输入控件“给定数据”和两个数值显示控件“执行次数”,“所需时间”。 2. 在程序框图上放置一个层叠式顺序结构,右击结构边框,在弹出的快捷菜单中执行两次“在后面添加帧”,创建帧1和帧2。 3. 选取第0帧,记录程序运行初始时间。 右击顺序结构框图的边框,在弹出的快捷菜单中执行“添加顺序局部变量”,这时在第0帧的下边框出现一个黄色小方框,这就是顺序局部变量,它可以在同一个顺
45、序结构中的各帧之间传递数据。放置一个时间计数器到顺序结构内,它位于函数编程定时时间计数器。返回毫秒定时器的值,用与计算占用的时间。用连线工具将它与顺序局部变量相连,这时黄色小方框里会出现一个指向顺序结构外部的箭头,数值可用后续帧使用,如图:4. 选取第1帧,实现等于给定值的匹配运算。程序如图: 5. 选取第2帧,同样放置一个时间计数器函数用于返回当前时间,将它减去顺序局部变量传递过来的第一帧初始时间后就可以得到花费的时间,如图: 运行,结果如图:注意:Labview编程的主要特点是数据流形式,这便于VI大量的按照并行方式运行,优化了程序的计算性能。而顺序结构却趋向于中断数据流编程,禁止程序并行
46、操作,顺序结构还掩盖了部分代码,所以用户在编程时应尽量不用或少用顺序结构。在实际应用中,经常用人为的数据依从关系来确定程序先后执行的顺序,在前面簇的章节中,我们就提到过Error簇可以控制程序执行的先后顺序,但并不是每一个控件都有Error簇的输入和输出端口,这时还有另一种方法能实现顺序执行的功能。如图: 从第一个While循环结构中的布尔开关上连了一根线到第二个While循环结构的边框上,可以看到,第二个While循环结构中没有一个对象需要这个数据,只是起到顺序执行程序的目的。公式节点用户可以在程序框图的两个位置找到公式节点结构,一个位于函数Express算术与比较公式;另一个位于函数编程结
47、构公式节点。如图:第一种公式节点的使用比较方便,如图: 当把第一种公式节点放置到程序框图上时,系统便会自动弹出如上图所示的对话框,它的操作比较简单,当上述对话框右上方的方块显示为绿色时,则表明系统识别输入的函数,当出现非法函数时,则表明系统不识别。如图: 它的使用虽然方便,但消耗的系统资源较多,下面我们将重点介绍第二种公式节点的使用方法。 如图:创建一个公式节点到程序框图,在边框上单击右键 选择添加,然后即可在节点框中输入变量名称,如图: 公式节点中的函数和操作符与C语言中的基本相符,遇到特殊函数时查表即可。 应用举例: 例一:该例的目的事联系使用条件表达式来执行不同条件时的数据传输。下面的代
48、码表示:如果X为非负数,Y等于X的平方根;如果X为负数,Y等于-999。if(x>=0)then y=sqrt(x)else y=-999end if对这段代码可以用公式节点来计算,需要注意大小写,如图所示: 运行结果如图: 例二:该例的目的是联系使用公式节点来计算两个输出x1和x2,并在同一图表中显示。 x1t3-10*t+1x2=a*t+b其中:t共取10个点,范围是从09 1. 新建一个VI,在前面板上放置一个波形图,用于同时显示输出的两个波形。同时放置两个数值输入控件,它们分别表示x2函数的斜率和截距。 2. 在程序框图上放置一个For循环,计数端子设为10,计算自变量t分别等于
49、0到9。 3. 在For循环中添加一个公式节点,为它添加三个输入端口,分别与重复端口i,斜率a和截距b相连,并添加两个输入端口,分别表示输出x1和x2。再用文本标签工具再公式节点里添加代码。 4. 在数组函数子模板中选取“创建数组“函数将x1和x2合并为一个二维数组,并在波形图中同时显示。 5. 完成连线,如图: 运行结果如图: 全局变量和局部变量全局变量和局部变量是LabVIEW用来传递数据的工具。LabVIEW编程是一种数据流编程,它是通过连线来传递数据的。但是如果一个程序太复杂的话,有时连线会很困难甚至无法连接,这时就需要用到局部变量,就如同Protel软件画电路原理图一样,给相同的连线
50、添加网络标号,标识它们是相通的。另外用户也许会经常碰到这样一种情况,既能够对程序中一个控件对象写入数据,又要能够读出它的数据,这在数据流编程中是无法实现的,这也需要用到局部变量或者全局变量,全局变量主要是针对不同VI程序之间的通信。局部变量:谈到局部变量,其实早在介绍顺序结构时就已经接触过了,当时是添加顺序局部变量来传递程序初始时间,以便计算程序所执行的时间。目的是在不同选择分支中都能够对指示器进行赋值。建立局部变量:建立局部变量的方法有两种:一种是在程序框图中直接添加,如图:另一种方法是右击控件对象,在弹出的快捷菜单中执行“创建/局部变量”如图: 局部变量的应用 该例的目的在于使用局部变量向
51、它联系的前面板上的电流控件写数据,也可以从电流控件读取数据。程序框图如图所示: 程序的目的是检验电流量,如果电流大于5A时,则限定电流量为上限5A,这时电流局部变量时写入状态,可以向它写入数据5A,尽管电流控件是控制器;如果电流小于5A时,则将电流通过一个“电流显示器”来显示,这时就需要将电流局部变量改变为读取状态,方法是在快捷菜单上执行“转化为读取”命令。 全局变量: 全局变量与局部变量不同,它是在不同的程序之间进行通信。LabVIEW的全局变量是一个独立的VI,它是一种特殊的程序,没有程序框图只有前面板,功能是保存一个或多个全局变量,所以也把全局变量程序称为“容器”。 建立全局变量:它的建
52、立和局部变量类似,将全局变量拖拽到程序框图中,在它的快捷菜单中执行“打开前面板”,或双击全局变量图标,打开全局变量程序前面板,然后在前面板中添加所需要的全局变量控件,如图,添加了3个全局变量,并保存VI。 建立了全局变量以后就可以在其他程序里面调用它,方法是在程序框图上选中“选择VI.”,如图: 在打开的对话框窗体中为程序选择想要放置的全局变量。如果最先放置的不是想要的全局变量,可以像对局部变量那样操作,在快捷菜单上选取“选择项”子选项,在列出的所有变量对象中进行选择,或者用操作工具来选择。 使用全局变量时必须特别小心,因为它对所有的LabVIEW程序都是通用的,稍有不慎就可能互相干扰,用户必
53、须清楚的知道全局变量的读写位置。用户编辑时既可以向全局变量输入数据,也可以从它读取数据,这一点与局部变量是完全相同的。全局变量的应用较少,这里就不再举例使用全局变量和局部变量的注意事项:LabVIEW语言编程是一种数据流,全局变量和局部变量提供了一种违反严格数据流的程序设计方式。大家有必要了解竞态条件的缺陷,当两个或两个以上的事件可以按任何顺序发生时就产生了竞态条件。用户要想知道再多个并行的程序中一个全局变量什么时候被访问是比较困难的。特别是再多线程编程中,对这种共享数据变量的竞态条件问题要求更加苛刻,使用全局变量会带来意想不到的错误。如果用户的应用程序中有全局变量,那么就存在大量的数据复制的
54、危险,因为用户要想在不同的地方对数据进行处理,最终就有许多的数据备份,造成内存的巨大开销和系统资源的浪费,所以建议初学者尽量不要使用全局变量。如果程序中使用了全局变量或者是局部变量,那么在程序运行之前,必须首先要确定它的初始值是否满足执行要求,如果不满足的话,就要对它们进行初始化。11、字符串与文件I/O字符串字符串是ASCII码字符的集合,当用户与GPIB和串行设备的通信,读写文本文件以及传递文本信息时,字符串都是非常有用的。字符串中的字符有些是可显示的,有些则是不可显示的。LabVIEW在功能模板上的字符串子模板中提供了一整套的字符串处理函数,能够完成各种字符串处理功能。常用的字符串对象包
55、括字符串输入控件和字符串显示控件,它们位于控件新式字符串与路径字符串输入控件,字符串显示控件。如图:字符串的显示方式: 在前面板上放置一个字符串输入控件,右击鼠标,弹出如图所示的菜单: 从上图中可以看出字符串有4种显示方式 下图是“”分别用这4种方式显示,如图: 字符串函数打开程序框图中的字符串函数,如图:字符串函数模板除了包含一般的字符处理函数以外,还包含各种字符常量,以及字符串与数字量,路径的相互转换函数。其中最后一行包含了各种常量,可以方便的使用。 字符串应用举例: 例一:组合字符串 该例的目的是将一些字符串和数值转化成一个新的输出字符串。 1. 新建一个VI,在前面板上放置字符串输入控
56、件“命令字”和“单位”,符串显示控件“输出命令字符”,数值输入控件“数值”和数值显示控件“字符串长度”。 2. 切换到程序框图,在字符串函数模板中选择“格式化写入字符串”,如图连线: 3. 双击“格式化写入字符串”函数,弹出如图所示对话框 对它进行参数设定,将分数的长度改为4,如图: 4. 同样在程序框图中添加“字符串长度”函数计算字符串的长度,它用于返回输出的命令字符串的长度。 5. 完成连线,如图: 运行结果如图: 例二:字符串子集和数值的提取实际应用中很多情况下,必须把字符串转换成数值,例如需要将从仪器中得到的数据字符串转换成数值。该例的目的是从一个输入的字符串中,提取一个子字符串,另外扫描字符串,将子字符串转换为数据。 1. 新建一个VI,按照如图所示放置输入和输出控件。 2. 切换到程序框图,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年物流管理面试题供应链优化的策略与方法
- 2026年社区戒毒社区康复及帮扶练习题
- 2026年公共文化服务与文化产业发展政策题库
- 2026年放射科人工智能辅助诊断面试
- 2026年软件测试与质量管理实践
- 2026年工会会计制度及经费收支练习题
- 2026年社会问题研究与解决思路
- 2026年监狱系统招考申论练习题本
- 2026年违规饮酒屡禁不止原因剖析题库
- 2026年水资源保护中的农药污染问题研究
- 多器官功能障碍综合征(MODS)
- 《唐诗三百首》导读课(二稿)
- 【5套打包】兰州市小学五年级数学下期中考试单元检测试题(含答案解析)
- 重卡结构解析图
- 安踏集团零售管理培训手册定
- 职场小白快速读懂财务三张报表
- 土地机旋耕旋施工的方案设计
- 《我参与 我奉献》第4课时示范公开课教学PPT课件【道德与法治五年级下册】
- 2021-2022中国滑雪产业白皮书
- GB/T 5974.1-2006钢丝绳用普通套环
- FZ/T 52051-2018低熔点聚酯(LMPET)/聚酯(PET)复合短纤维
评论
0/150
提交评论