《虚拟仪器labview第六讲课件》由会员分享,可在线阅读,更多相关《虚拟仪器labview第六讲课件(35页珍藏版)》请在金锄头文库上搜索。
1、第六章 结构与属性Labview采用结构化数据流图编程,能够处理循环、顺序、条件和事件等程序控制的结构框架,这是Labview编程的核心,也是区别于其他图形编程开发环境的独特与灵活之处。属性节点也是Labview为增强图形化编程功能而设置的前面板对象特征。虚拟仪器labview第六讲6.1 For循环For循环用于将某段程序执行指定次数。调用For循环节点时,不会立刻出现在流程图中,而是出现一个小的图标,而后可以修改图标的大小和位置。具体的方法是,先单击所有端子的左上方,然后按下鼠标,拖曳出一个包含所有端子的矩形。释放鼠标时就创建了一个指定大小和位置的For循环。 虚拟仪器labview第六讲
2、For循环的组成最基本的For循环由循环框架(Loop Frame)、重复端口(Loop Iteration)和计数端口(Loop Count)组成。重复端口i的初始值为0,每次循环的递增步长为1。注意:i的初始值和步长在Labview中是固定不变的,若要用到不同的初始值或步长,可对重复端口产生的数据进行一定的数据运算,也可用移位寄存器来实现。循环次数N在程序运行前必须赋值,通常情况下,N为整型数字,若为其他数据类型,For循环会自动将其转换成整型。虚拟仪器labview第六讲移位寄存器(Shift Register)移位寄存器可以将数据从一个循环周期传递到另外一个周期。在程序设计中,经常要用
3、到它创建一个移位寄存器的方法是,用鼠标右键单击循环的左边或者右边,在快捷菜单中选择 Add Shift Register。 虚拟仪器labview第六讲移位寄存器在流程图上用在循环边框上相应的一对端子来表示。右边的端子中存储了一个周期完成后的数据,这些数据在这个周期完成之后将被转移到左边的端子,赋给下一个周期。移位寄存器可以转移各种类型的数据数值、布尔数、数组、字符串等等。它会自动适应与它连接的第一个对象的数据类型。 虚拟仪器labview第六讲可以令移位寄存器记忆前面的多个周期的数值。这个功能对于计算数据均值非常有用。还可以创建其他的端子访问先前的周期的数据,方法是用鼠标右键单击左边或者右边
4、的端子,在快捷菜单中选择Add ElementAdd Element。例如,如果某个移位寄存器左边的端口含有三个元素,那么就可以访问前三个周期的数据。 虚拟仪器labview第六讲数据在移位寄存器中的流动过程虚拟仪器labview第六讲当For循环在执行第0次循环时,For循环的数据缓冲区并没有存储,所以,在使用移位寄存器时,必须根据编程需要对左侧的移位寄存器进行初始化。否则,左侧的移位寄存器在第0次循环时的输出值为默认值,数字的默认值为0,字符串的默认值为空字符,布尔数据的默认值为False。另外,连至右侧移位寄存器的数据类型用于初始化左侧移位寄存器的数据类型必须一致。虚拟仪器labview
5、第六讲框架通道(Loop Tunnel)框架通道是For循环与循环外部进行数据交换的数据通道,其功能是在For循环开始运行前,将循环外其他节点产生的数据送至循环内,供循环框架内的节点使用。还可在循环运行结束时,将循环框架内节点产生的数据送至循环外,供循环外的其他节点使用。框架通道有两种属性:有索引(Enable Indexing)和无索引(Disable Indexing),分别用于传递数组和标量。虚拟仪器labview第六讲例题:求n!虚拟仪器labview第六讲反馈节点(Feedback Node)创建反馈节点时,必须将该节点放至For循环或While循环的框架内部,一个新的反馈节点包含两
6、部分,初始化端口和反馈节点本身,初始化端口用于初始化反馈节点的初始值。虚拟仪器labview第六讲使用反馈节点实现n!虚拟仪器labview第六讲例题:求0到99之间所有偶数的和虚拟仪器labview第六讲例题:用For循环产生一个长度为5的随机数组虚拟仪器labview第六讲数组的求和For循环还有一种很有特色的功能,称之为自动索引(Auto Indexing)功能,当将一个数组连接到For循环上供For循环内的节点使用时,For循环可以自动检测该数组的长度,执行相应次数的循环,并按顺序将数组内的元素一一取出。虚拟仪器labview第六讲虚拟仪器labview第六讲For循环的特点一旦确定了
7、For循环执行的次数,并开始执行后,就必须在执行完相应次数的循环后,才能终止其运行。若确实需要根据某种逻辑条件跳出循环,可用While循环来替代For循环。虚拟仪器labview第六讲6.2 While循环While 循环可以反复执行循环体的程序,直至到达某个边界条件。 其循环次数不能预先确定。最基本的While循环由循环框架(Loop Frame),重复端口(Loop Iteration),以及条件端口(Loop Condition)组成。条件端口有两种使用状态:Stop if True和Continue if True。每一次循环结束时,条件端口会检测通过数据连线输入的布尔值,并根据输入的
8、布尔值和其使用状态决定是否继续执行循环。虚拟仪器labview第六讲While循环的使用避免出现死循环。While循环的特点虚拟仪器labview第六讲6.3 顺序结构在传统编程语言中,程序有明确的顺序执行,即程序按照程序代码从上到下的顺序执行,每个时刻只执行一步,这种执行方式称为控制流(Control Flow)。而Labview却是一种数据流(Data Flow)语言,只有当某个节点的所有输入均有效时,Labview才能执行该节点,这一点称为数据从属性(Data Dependency)。虚拟仪器labview第六讲顺序结构的说明 虚拟仪器labview第六讲数据流编程为用户带来了很多方便,
9、但也在某些方面存在不足。如果Labview框图程序中有两个节点同时满足节点执行的条件,那么这两个节点就会同时执行。但如果编程者需要这两个节点按一定的先后顺序执行,那么数据流控制是无法满足要求的,必须引入特殊的结构框架,在此框架内程序要严格按照预先确定的顺序执行,这就是Labview顺序结构(Sequence Structure)的由来。虚拟仪器labview第六讲Labview顺序结构的功能是强制程序按照一定的顺序执行。Labview提供了两种顺序结构:层叠式顺序结构(Stacked Sequence Structure)与平铺式顺序结构(Flat Sequence Structure)。顺序
10、结构共有两种:单框架顺序结构和多框架顺序结构虚拟仪器labview第六讲顺序结构的组成:1.层叠式顺序结构:顺序框架(Sequence Frame)、选择器标签(Selector Lable)和递增/递减按钮(Increment/Decrement Buttons)组成。在编程时,需要将前一个顺序框架中产生的数据传送到后续顺序框架中使用,为此Labview在顺序框架中引入了本地结果(Sequence Local)的概念,通过顺序框架本地结果,就可以在顺序框架中向后传递数据。虚拟仪器labview第六讲2.平铺式顺序结构:多框架层叠式顺序结构由多个框架组成,按照0,1,2的顺序编号层叠在一起,并
11、且按照0,1,2的顺序执行,多框架平铺式顺序结构的多个框架不是层叠在一起,而是由左自右平铺,并且按照相同的顺序执行。平铺式顺序结构的所有框架在同一个平面上,较为直观,不需要用户在框架之间切换。虚拟仪器labview第六讲顺序结构的使用1.层叠式顺序结构的使用:层叠式结构可以修改框图的顺序2.平铺式顺序结构的使用:平铺式结构各框架的顺序不能改变,但可先将平铺式顺序结构转换为层叠式顺序结构,在层叠式顺序结构中改变各框架的顺序后,将层叠式顺序结构转换为平铺式顺序结构,就可以改变平铺式顺序结构框架的顺序。虚拟仪器labview第六讲顺序结构的特点:Labview顺序框架的使用比较灵活,在编辑状态时可以
12、很容易地改变层叠式顺序结构各框架的顺序。平铺式顺序结构各框架的顺序不能直接改变。例题:创建一个 VI,计算生成等于某个给定值的随机数所需要的时间。 虚拟仪器labview第六讲6.4 选择结构选择结构(Case Structure)也是Labview最基本的结构之一,相当于C语言中的switch语句。创建选择结构:虚拟仪器labview第六讲选择结构的组成:最基本的选择结构由选择框架(Case Frame)、选择端口(Selection Terminal)、选择标签(Selector Label),以及递增/递减按钮(Increment/Decrement Buttons)组成。虚拟仪器lab
13、view第六讲Labview中的选择结构与C语言Switch语句相比比较灵活,输入选择端口中的外部控制条件的数据类型有3种可选:布尔型、数字整型和字符串型。当控制条件为布尔型时,选择结构的选择器标签的值为True和False两种,即有True和False两种选择框架。当控制条件为数字整型时,选择结构的选择标签的值为整数0,1,2选择框架的个数可根据实际需要确定。当控制条件为字符串型时,选择结构的选择器标签的值为由双引号括起来的字符串。虚拟仪器labview第六讲选择结构的使用例题:创建一个VI以检查一个数值是否为正数。如果它是正的,VI就计算它的平方根,反之则显示出错。 虚拟仪器labview
14、第六讲选择结构的特点Labview的选择结构与其他语言的选择结构相比,简洁明了,结构简单,不但相当于Switch语句,还可以实现ifelse语句的功能。为与选择框架外部交换数据,选择结构也有边框通道。选择结构的边框通道与顺序结构的框架通道类似,也没有Enable Indexing和Disable Indexing这两种属性。不过选择结构的边框通道还有其自身的特点。虚拟仪器labview第六讲当外部数据连接到选择框架上供其内部节点使用时,选择结构的每一个子框架都能从该通道中获得输入的外部数据;当选择结构内部的数据需通过框架通道送至外部时,必须在每一个框架中都连接一个同数据类型的数据到同一个框架通
15、道上。虚拟仪器labview第六讲这主要是因为选择结构执行时是根据外部控制条件从其所有的子框架中选择其一执行的,子框架的选择非此即彼,所以每一个子框架中都必须连接一个数据。对于一个框架通道,一个子框架中如果没有连接数据,那么在根据控制条件执行到这个框架时,框架通道就没有向外输出数据的来源,程序就会出现错误。虚拟仪器labview第六讲6.5 事件结构事件结构中的事件包括鼠标事件(单击、双击等)、键盘事件、选单事件、窗口事件(如关闭窗口)、对象的数值变化等。使用事件驱动可以让Labview应用程序在没有指定事件发生时处于休息状态,直到前面板窗口中有一个事件发生时为止。在这段时间内,可以将CPU交给其他的应用程序使用,这大大提高了系统资源的利用率。虚拟仪器labview第六讲