第4章 Labview的程序结构教学课件.pptx

上传人:春哥&#****71; 文档编号:12131914 上传时间:2022-04-23 格式:PPTX 页数:75 大小:4.85MB
返回 下载 相关 举报
第4章 Labview的程序结构教学课件.pptx_第1页
第1页 / 共75页
第4章 Labview的程序结构教学课件.pptx_第2页
第2页 / 共75页
点击查看更多>>
资源描述

《第4章 Labview的程序结构教学课件.pptx》由会员分享,可在线阅读,更多相关《第4章 Labview的程序结构教学课件.pptx(75页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1LabVIEW虚拟仪器程序设计教程1第4章 Labview的程序结构请输入您的标题CLICK HERE TO ADD TITLELabVIEW的程序结构程序结构对任何一种计算机编程语言来说都是十分重要的,它控制整个程序语言的执行过程,一个好的程序结构,可以大大提高程序的执行效率。LabVIEW作为一种图形化的高级程序开发语言,执行的是数据流驱动机制,在程序结构方面除支持循环、顺序、条件等通用编程语言支持的结构外,还包含一些特殊的程序结构,如事件结构、使能结构、公式节点等等。由于LabVIEW是图形化编程语言,它的代码以图形形式表现,因此各种结构的实现也是图形化的。每种结构都含有一个可调整大小

2、的清晰边框,用于包围根据结构规则执行的程序框图部分。结构边框中的程序框图部分被称为子程序框图,从结构外接收数据和将数据输出结构的接线端称为隧道,隧道是结构边框上的连接点。 2LabVIEW的程序结构的程序结构顺序结构顺序结构LabVIEW程序数据流编程顺序结构的组成顺序结构中数据传递顺序结构应用举例请输入您的标题CLICK HERE TO ADD TITLELabVIEW程序数据流编程Result=(A+B)/C的控制流编程和数据流编程的流程图 LabVIEW作为一种图形化的编程语言,有其独特的程序执行顺序数据流执行方式()。节点在执行时产生输出数据并将该数据传送给数据流路径中的下一个节点。数

3、据流经节点的动作决定了程序框图上VI和函数的执行顺序。 请输入您的标题CLICK HERE TO ADD TITLELabVIEW程序数据流编程请输入您的标题CLICK HERE TO ADD TITLE顺序结构的组成1层叠式顺序结构 在LabVIEW中,顺序结构一般有多个框架组成,从框架0到框架n,首先执行框架0中的程序,然后执行框架1中的程序,这样依次执行下去。LabVIEW的顺序结构看起来就像放映机中的电影胶片按照顺序一副图像接一副图像的放映,而LabVIEW顺序结构是按照顺序一帧(框架)接一帧顺序执行的。请输入您的标题CLICK HERE TO ADD TITLE顺序结构的组成2平铺式

4、顺序结构 层叠式顺序结构的优点是节省程序框图窗口空间,但用户在某一时刻只能看到一帧代码,这会给程序代码的阅读和理解带来一定的难度。平铺式顺序结构比较直观,方便代码的阅读,但当它占用的窗口空间较大。两种顺序结构可以通过 “替换为平铺式/层叠式顺序”菜单选项可以相互转换, 请输入您的标题CLICK HERE TO ADD TITLE顺序结构中的数据传递1层叠式顺序结构中的数据传递 层叠式顺序结构通过局部变量的机制来实现不同帧之间的数据传递的。在层叠式顺序结构的边框上单击右键弹出快捷菜单,选择“添加顺序局部变量”选项,在顺序结构边框上出现一个小方块(所有帧程序框的同一位置都有),表示添加了一个局部变

5、量。小方块可以沿框四周移动,颜色随传输数据类型的系统颜色发生变化。 在顺序结构的编程过程中,在不同的帧之间可能需要传递数据,顺序结构外部和内部也可能存在数据传递。顺序结构有层叠式和平铺式两种结构,这两种结构中不同帧之间的数据传递方式是不同的,但这两种结构内部与外部之间的数据传递方式是相同的。 请输入您的标题CLICK HERE TO ADD TITLE顺序结构中的数据传递2平铺式顺序结构中的数据传递 3顺序结构外部与内部的数据交换顺序结构外部与内部之间的数据传递是通过在结构边框上建立隧道来实现的。隧道有输入隧道和输出隧道,输入隧道用于从外部向内部传递数据,输出隧道用于从内部向外部传递数据。请输

6、入您的标题CLICK HERE TO ADD TITLE顺序结构中的数据传递在顺序结构执行前,输入隧道上得到输入值,在执行结构的过程中,这个值保持不变,且每帧都能读取该值。只能在某一帧中向输出隧道写入数据,如在超过一个帧中对同一输出隧道赋值,则会引起多个数据源错误,输出隧道上的值只能在整个顺序结构执行完后才会输出。 请输入您的标题CLICK HERE TO ADD TITLE顺序结构应用举例实例实例4-5 4-5 一个典型的顺序结构应用实例:计算程序运行时间的例程。 程序具有以下功能:输入一个010000之间的整数,测量计算机利用随机数产生器需要多长时间才能产生与之相等的数。在给定一个整数后,

7、程序开始运行,记下开始运行时间并开始产生随机数,产生的随机数与给定的数值相比较,当两者相等时,程序停止运行并记下程序停止运行时间,最后计算时间差便得到题目需要计算的时间。由于需要用到前后两个时刻的差,即用到了先后次序,故可用顺序结构来解决此题。2循环结构For循环While循环循环结构外部与内部数据交换移位寄存器及反馈节点LabVIEW的程序结构请输入您的标题CLICK HERE TO ADD TITLEFor循环1For循环的构成 for(i=0;iN;i+) 循环体 最基本的For循环由组成。请输入您的标题CLICK HERE TO ADD TITLEFor循环2For循环的执行过程 Fo

8、r循环的执行流程:在开始执行前,从循环总数接线端子读入循环执行次数,然后循环计数接线端子输出当前已经执行循环次数的数值(从0开始),接下执行循环框架中的程序代码,循环框架中的程序执行完后,如果执行循环次数未达到设定次数,则继续执行,否则退出循环。 请输入您的标题CLICK HERE TO ADD TITLEFor循环在一些文本编程语言中,可以使用goto或exit语句使程序从循环体内跳转到循环体外,从而中止循环的执行。而在LabVIEW早期版本,对For循环不提供中止循环的机制,如果要实现这个功能,必须采用While循环。从 LabVIEW 8.5 开始,For 循环增加了条件接线端,同Whi

9、le循环一样可在满足条件时停止循环。在For循环结构边框单击右键弹出快捷菜单,从快捷菜单中选择“”。将停止循环的布尔数据(如布尔控件或比较函数的输出值)连至条件接线端,则可以通过条件接线端的输入中止循环的执行。在For循环中使用条件接线端时,必须连接布尔数据或错误簇至条件接线端;连接数值到总数接线端或对输入数组建立自动索引。请输入您的标题CLICK HERE TO ADD TITLEFor循环4并行For循环并行For循环为一个For循环分配多个线程以实现并发执行一个For循环,通过并行For循环利用多个处理器可以提高For循环的执行速度,特别是对于处理大量计算,能大大提高执行效率。右键单击F

10、or循环外框,在快捷菜单中选择“配置循环并行”,打开For循环并行迭代对话框,启用并行循环。请输入您的标题CLICK HERE TO ADD TITLEFor循环请输入您的标题CLICK HERE TO ADD TITLEWhile循环基本的While循环由、和组成。条件接线端是一个布尔变量,接入布尔值用于控制循环执行。条件接线端有两种使用状态:默认状态接线端图标为一个绿色方框包围的红色实心圆点,其含义为“”,表示当接入的布尔值为“真(True)”时,循环停止,否则循环继续执行;在条件接线端的右键快捷菜单中选择“”,则切换到另外一种使用状态,接线端图标变为一个绿色方框包围的带箭头的圆弧,表示当

11、接入的布尔值为“真(True)”时,循环继续执行,否则循环停止。真(True)时停止真(True)时继续请输入您的标题CLICK HERE TO ADD TITLEWhile循环(1)“循环计数”接线端输出当前执行的循环的次数;(2)开始执行循环框架内的程序,程序执行完成后,循环计数器的值加1;(3)根据流入“条件接线端”的布尔型数据判断是否继续执行循环;(4)在While循环中,循环框架中的代码至少执行一次。 请输入您的标题CLICK HERE TO ADD TITLE循环结构外部与内部数据交换与自动索引1循环结构外部与内部数据交换循环结构(包括For循环和While循环)外部和内部之间的数

12、据交换是通过来进行的。直接将循环结构外部对象与内部对象用连线连接起来,这时,连线在循环结构边框上将出现一个小方格,这就是实现结构内外数据交换的隧道,小方格的颜色代表了流过其中的数据类型。 输入数值通过输入隧道传入循环中,在每次循环时,这个数值与循环计数端子输出循环计数值进行求和,并在循环内部显示每次求和结果,当求和结果等于输入数值的2倍时,循环停止,同时通过边框上的输出隧道将最后结果传递到循环结构外进行输出显示。循环的所有输入端子(输入隧道)都是在进入循环之前读取完毕的,循环开始之后就不再读取输入端子值,通过输出隧道输出数据只有在循环完全退出后才输出。 请输入您的标题CLICK HERE TO

13、 ADD TITLE循环结构外部与内部数据交换与自动索引2自动索引 For循环和While循环均具有一种特殊的。当把一个数组连接到循环结构的边框上生成隧道后,可以选择是否打开自动索引功能。如果自动索引功能被打开,则数组将在每次循环中按顺序取出一个值,该值在原数组中的索引与当次循环的重复端子值相同,就是说数组在循环内部将会降低一维,比如二维数组变为一维数组,一维数组变为标量元素等。 自动索引默认打开,此时用户不需要为循环总数接线端N赋值来指定循环执行的次数,而会自动根据数组的大小决定循环执行的次数。如果用户硬要给N指定一个值,则循环按照N和数组确定的最小的执行次数执行。即如果数组有5个元素,指定

14、的N为10,则之后循环次数为5次。当循环结构输入隧道禁用自动索引功能后,循环执行次数由循环总数端子接入数据决定。请输入您的标题CLICK HERE TO ADD TITLE循环结构外部与内部数据交换与自动索引自动索引打开循环总数接线端子N没有接入数据,循环次数根据输入隧道接入的数组元素个数确定,循环次数为输入数组长度5,每次循环取出该数组的一个元素与循环计数值做求和运算,求和结果在输出隧道上累积生成数组,当循环结束后,在输出隧道上的累积生成的数组一次传递到输出数组中显示。 标量数据线请输入您的标题CLICK HERE TO ADD TITLE循环结构外部与内部数据交换与自动索引执行1次循环,数

15、组一次性完整输入循环框架内,各元素分别与循环计数值(循环一次为0)求和,执行完后一次性输出。 执行2次循环,循环执行前,数组一次性完整输入循环内,每次循环,输入数组中的各元素与循环计数值求和,循环执行完后,将最后一次循环执行结果输出。 数组数据线请输入您的标题CLICK HERE TO ADD TITLE循环结构外部与内部数据交换与自动索引请输入您的标题CLICK HERE TO ADD TITLE循环结构外部与内部数据交换与自动索引请输入您的标题CLICK HERE TO ADD TITLE循环结构外部与内部数据交换与自动索引自动索引默认关闭。循环的执行次数受“条件接线端”的输入决定,与是否

16、启用自动索引无关。禁用自动索引:数组一次性整体输入循环内,每次循环数组与循环体其他数据整体进行运算,循环停止后输出。启用自动索引:数组按元素依次输入循环内,每次循环顺序取出一个元素,当数组元素取完而循环还没有停止时,接入数组的连线取“0”作为数组元素,每次循环结果在输出隧道上累积生成数组,当循环停止后,在输出隧道上的累积生成的数组一次传递到输出数组中显示。 请输入您的标题CLICK HERE TO ADD TITLE移位寄存器及反馈节点1移位寄存器 为了实现将前几次循环完成时的某个数据传递到下一次循环的开始, LabVIEW在循环结构中引入了称为移位寄存器的附加对象。移位寄存器的功能是将i-1

17、、i-2、i-3次循环的计算结果保存在循环的缓冲区中,并在第i次循环时将这些数据从循环框架左侧的移位寄存器中送出,供循环框架内的节点使用。 在循环结构框架边框上单击右键,在弹出的快捷菜单中选择“添加移位寄存器”选项,可以为循环结构创建一个移位寄存器,如果需要,可以为循环结构添加多个移位寄存器。 请输入您的标题CLICK HERE TO ADD TITLE移位寄存器及反馈节点。其中带向上箭头的右端子在每一次循环结束时传入数据,然后将这一数据在下一次循环开始前传给带向下箭头的左端子,这样就可以从左端子得到前一次循环结束时保存在右端子中的值。可以为移位寄存器的左端子指定初始值,其初始化值将在循环开始

18、前读入一次,循环执行后就不再读取该初始值,一般情况下,为了避免错误建议为移位寄存器左端子明确提供一个初始值。移位寄存器的值也可以通过右端子输出到循环结构外,输出发生在循环结束后,因此,输出的值是移位寄存器右端子的最终值。 请输入您的标题CLICK HERE TO ADD TITLE移位寄存器及反馈节点请输入您的标题CLICK HERE TO ADD TITLE移位寄存器及反馈节点2反馈节点在循环结构中,反馈节点和只有一个左端子的移位寄存器的功能相同,用于将数据从一次循环传递到下一次循环。和移位寄存器相比,反馈节点是一种在两次循环之间传递数据更简洁的表示形式。在程序框图合适位置放置一个“反馈节点

19、”函数节点并根据数据流建立连线。 在需要建立反馈节点输出和输入端利用连线工具直接将输出和输入相连,自动建立一个反馈节点。 反馈节点由两部分组成,分别为反馈节点和初始化接线端,反馈节点在没有连线的时是黑色的,连线后其颜色由接入的数据的数据类型决定。请输入您的标题CLICK HERE TO ADD TITLE移位寄存器及反馈节点反馈节点在循环框架内初始化反馈节点在循环框架外初始化 请输入您的标题CLICK HERE TO ADD TITLE移位寄存器及反馈节点在移位寄存器中,我们可以通过创建多个左端子来获取前面多次循环的值,如i-1、i-2、i-3次循环的值,在反馈节点中,要实现该功能,可以通过设

20、定反馈节点的“延迟”属性来实现。 2条件结构条件结构的组成条件结构的配置及操作条件结构内部与外部的数据交换条件结构应用举例LabVIEW的程序结构请输入您的标题CLICK HERE TO ADD TITLE条件结构的组成条件结构也是LabVIEW的基本结构之一,它相当与C语言中的ifelse语句或Switch语句,用来控制在不同条件下执行不同程序块的功能。基本条件结构由组成。默认分支选择器为布尔数据类型,同时自动生成两个选择器标签分别为“真”和“假”的子框图。请输入您的标题CLICK HERE TO ADD TITLE条件结构的配置及操作条件结构根据不同的使用情况有一个或者多个子框图,每个子框

21、图都是一个执行分支,每一个执行分支都有自己的选择器标签。分支选择器的值可以是布尔型、字符串型、整型或者枚举类型,其颜色会随连接的数据类型而改变,同时根据分支选择接入的数据类型不同,选择器标签的设置也有差异, 1布尔型如选择器接线端的数据类型是布尔值型,其选择器标签只能设置为“真”和“假”,该结构只包含“真”和“假”分支。请输入您的标题CLICK HERE TO ADD TITLE条件结构的配置及操作2整型 如果分支选择器接线端是一个整数,则该结构可以包括任意个分支。对于每个分支,可使用标签工具在条件结构上部的条件选择器标签中输入值、值列表或值范围。如使用列表,数值之间用逗号隔开。 如使用数值范

22、围,指定一个类似1020的范围可用于表示10到20之间的所有数字(包括10和20)。也可以使用开集范围,例如,.100表示所有小于等于100的数,100.表示所有大于等于100的数。 请输入您的标题CLICK HERE TO ADD TITLE条件结构的配置及操作3字符串型如果分支选择器接线端是一个字符串,则该结构同样包括任意个分支。对于每个分支,也可使用标签工具在条件结构上部的条件选择器标签中输入值、值列表或值范围。对于字符串,.a和a.都是开集范围,表示以小于a(不包括a和以a开头的字符串)和大于a(包含以a开头的字符串)开头的字符串;a.c表示范围,包括所有以a或b而不包括以c开头的字符

23、串;a仅表示单个字符a,不表示以a开头的字符串,如要表示以a开头的字符串,需定义标签为a.b,abc和bcd均仅表示字符串abc和bcd。字符串范围区分大小写,A.c和a.c表示不同的范围, 在设置“不区分大小写选项”情况下,所有小写字母转换为大写后在进行范围比较。如果分支接线端是字符串,在选择器标签中输入的值将自动加上双引号。请输入您的标题CLICK HERE TO ADD TITLE条件结构的配置及操作4枚举型 对于分支选择器接线端接入枚举型数据,选择器标签应根据枚举型数据选项列表中的选项值进行设定。当接入枚举型数据时,如枚举型数据选项列表中的某些选项值没有与其对应分支子框图的话,则在选择

24、结构框架右键快捷菜单中将出现“为每个值添加分支”选项,选择该选项,将自动根据枚举数据的选项列表中的值创建对应的分支子框图,和接入字符串类型一样,接入枚举型数据时,选择器标签中输入的值自动加上双引号 。请输入您的标题CLICK HERE TO ADD TITLE条件结构的配置及操作 在后面添加分支:在当前分支后面增加一个空白分支并自动生成合适的标签; 在前面添加分支:在当前分支前面增加一个空白分支; 复制分支:复制当前框图分支并且把新生成的分支置于当前分支的后面; 删除本分支:删除当前分支; 删除空分支:删除所有不包含代码的空白分支; 显示分支:列出所有分支的标签,可以实现分支之间的快速跳转;

25、交换分支的程序框图:把当前分支内容和目标分支内容对换,其他分支不受影响; 将程序框图移位至分支:把当前分支内容移动到目标分支之后,两者之间的所有分支顺序移动; 删除默认:去除当前分支的默认标记,对非默认标记分支,命令为“本分支设置为默认分支”; 重排分支:打开的“重排分支”对话框对所有分支进行重排序。请输入您的标题CLICK HERE TO ADD TITLE条件结构内部与外部的数据交换条件结构内部与外部之间的数据也是通过隧道来交换传递的。向条件结构边框内输入数据时,各个子程序框图连接或不连接这个数据的隧道都可以。从条件结构边框向外输出数据时,各个子程序框图都必须为这个隧道连接数据,否则隧道图

26、标是空的,程序“运行”按钮也是断开的。当各个子程序框图都为这个隧道连接好数据以后,隧道图标才成为实心的,程序才可以运行。如果允许没有连线的子程序框图输出默认值,可以在数据隧道上右击,在弹出的快捷菜单中选择“未连线时使用默认”命令,在这种情况下,程序执行到没有为输出隧道连线的子程序框图时,就输出相应数据类型的默认值。请输入您的标题CLICK HERE TO ADD TITLE条件结构应用举例条件结构内部与外部之间的数据也是通过隧道来交换传递的。向条件结构边框内输入数据时,各个子程序框图连接或不连接这个数据的隧道都可以。从条件结构边框向外输出数据时,各个子程序框图都必须为这个隧道连接数据,否则隧道

27、图标是空的,程序“运行”按钮也是断开的。当各个子程序框图都为这个隧道连接好数据以后,隧道图标才成为实心的,程序才可以运行。如果允许没有连线的子程序框图输出默认值,可以在数据隧道上右击,在弹出的快捷菜单中选择“未连线时使用默认”命令,在这种情况下,程序执行到没有为输出隧道连线的子程序框图时,就输出相应数据类型的默认值。2事件结构事件驱动概念事件结构的组成事件结构的配置与操作事件结构的应用举例LabVIEW的程序结构请输入您的标题CLICK HERE TO ADD TITLE事件驱动概念实现方法:利用前面介绍的知识来实现该功能的唯一办法就是通过While循环和条件结构不断地去查询这个按钮是否被单击

28、,如果被单击的话,计数器加1,否则计数器值不变。问题:程序在没有用户点击的情况下处于循环“空转”,浪费了大量的CPU资源,当“单击事件”发生太快时可能会被忽略。因此Labview提供了事件结构来解决这个问题,即仅当“事件”发生时,程序才做相应的响应。 事件是对活动发生的异步通知。事件可以来自于用户界面、外部I/O或程序的其他部分。用户界面事件包括鼠标点击、键盘按键等动作。外部I/O事件则是诸如数据采集完毕或发生错误时硬件定时器或触发器发出信号。其他类型的事件可通过编程生成并与程序的不同部分通信。LabVIEW支持用户界面事件和通过编程生成的事件,但不支持外部I/O事件。请输入您的标题CLICK

29、 HERE TO ADD TITLE事件结构的组成隶属于整个事件结构,用于设定事件结构在等待指定事件发生时的超时时间,以毫秒为单位。当值为-1时,事件结构处于永远等待状态,直到指定的事件发生为止。当值为一个大于0的整数时,时间结构会等待相应的时间,当事件在指定的时间内发生时,事件接受并响应该事件,若超过指定的时间,事件没发生,则事件会停止执行,并返回一个超时事件。通常情况下,应当为事件结构指定一个超时时间,否则事件结构将一直处于等待状态。 为子框图提供所处理事件的相关数据,事件数据节点由若干个事件数据端子组成,使用操作值工具单击事件数据节点的某个端子将打开数据列表,可以在其中选择所要访问的数据

30、。使用定位工具拖曳事件数据节点的上下边沿,可以增减数据端子。用于标识当前显示的子框图所处理事件的事件源,其增减与层叠式顺序结构和选择结构中的增减类似。请输入您的标题CLICK HERE TO ADD TITLE事件结构的配置与操作 删除事件结构:删除事件结构,仅仅保留当前事件分支的代码; 编辑本分支所处理的事件:编辑当前事件分支的事件源和事件类型; 添加事件分支:在当前事件分支后面增加新的事件分支; 复制事件分支:复制当前事件分支,并且把复制结果放置在当前分支后面; 删除本事件分支:删除当前分支; 显示动态事件接线端:用于显示动态事件端子。 请输入您的标题CLICK HERE TO ADD T

31、ITLE事件结构的配置与操作事件结构在执行编辑、添加还是复制等操作时,都会打开“编辑事件”对话框。每个事件分支都可以配置为处理多个事件,当这些事件中的任何一个发生时,对应事件分支的代码都会得到执行。 “事件分支”列出所有事件分支的序号和名称。 “事件说明符” 列出“事件分支”中当前事件配置的所有事件。每一行是一个配置好的事件事件详细信息:左边列出事件源(应用程序、本VI、动态、窗格、分隔栏和控件这6个可能值之一),右边给出该事件源产生的事件名称。“添加事件”按钮可以为当前事件分支添加事件,添加后需要在“事件源”列表框选择合适的事件源,并在“事件”列表框选择所需要的事件,即完成事件添加操作。“删

32、除”按钮,删除事件。请输入您的标题CLICK HERE TO ADD TITLE事件结构的配置与操作通知事件过滤事件通知事件用于通知程序代码某个用户界面事件发生了,并且LabVIEW已经进行了最基本的处理。例如修改一个数值控件的数值时,LabVIEW会先进行默认的处理,即把新数值显示在数值控件中。此后,如果已经为这个控件注册了“值改变”事件,该事件的代码将得到执行。过滤器事件用于告诉程序代码某个事件发生了,LabVIEW还未对其进行任何处理,从而便于用户就程序如何与用户界面的交互作出自己相应的定制。使用过滤事件参与事件处理可能会覆盖事件的默认行为。在过滤事件的事件结构分支中,可在LabVIEW

33、结束处理该事件之前验证或改变事件数据,或完全放弃该事件以防止数据的改变影响到VI。例如,将一个事件结构配置为放弃前面板关闭事件可防止用户关闭VI的前面板。过滤事件的名称以问号结束,如“前面板关闭?”,以便与通知事件区分。请输入您的标题CLICK HERE TO ADD TITLE事件结构的配置与操作处理过滤事件的事件结构分支有一个事件过滤节点,可将新的数据值连接至这些接线端以改变事件数据。如果不对某一数据项连线,那么该数据项将保持不变。可将真值连接至“放弃?”接线端以完全放弃某个事件。请输入您的标题CLICK HERE TO ADD TITLE事件结构的应用举例分支0:响应“按钮1”控件上“鼠

34、标按下”的通知事件,当用鼠标点击按钮1时,计数器1将加1,实现对单击操作进行计数。分支1:同时响应“按钮1”和“按钮2”控件的“值改变”通知事件,即分支1同时处理了两个事件,当用鼠标点击这两个按钮中的任何一个以改变按钮的取值,则计数器2将加1以实现计数。分支2,响应“停止”按钮控件的“鼠标按下?”过滤事件,该分支放置了一个双按钮对话框,并将对话框的输出取反接入事件过滤节点中的“放弃?”。分支3:响应“停止”按钮控件的“鼠标按下”通知事件,该分支放入了一个真常量,并将其连接至While循环条件接线端。当程序运行时,按下“停止”按钮,则弹出对话框,如果选择“是”,“鼠标按下”事件得以发生,分支3中

35、的程序得以执行,循环结束,vi停止运行;若选择“否”,“鼠标按下”事件被屏蔽,分支3中的程序不运行,vi继续执行。 2变量局部变量全局变量局部变量和全局变量使用注意事项LabVIEW的程序结构请输入您的标题CLICK HERE TO ADD TITLE局部变量当无法访问某前面板对象或需要在程序框图节点之间传递数据时,可创建局部变量。局部变量仅仅出现在程序框图上,而不在前面板上。通过局部变量可对前面板上的输入控件或显示控件进行数据读写。将“函数”选板上的局部变量节点放置在程序框图上,通过建立局部变量与输入控件或显示控件相关联建立局部变量。请输入您的标题CLICK HERE TO ADD TITL

36、E局部变量创建了一个局部变量后,就可从变量读写数据了。默认状态下,新变量将接收数据,变量就像一个显示控件,是一个写入局部变量。将新数据写入该局部变量,与之相关联的前面板输入控件或显示控件将由于新数据的写入而更新。写入局部变量读取局部变量变量可配置为数据源、读取局部变量。右键单击变量,从快捷菜单中选择“转换为读取”,便可将该变量配置为一个输入控件。节点执行时,VI将读取相关前面板输入控件或显示控件中的数据。如需使变量从程序框图接收数据而不是提供数据,可右键单击该变量并从快捷菜单中选择“转换为写入”。请输入您的标题CLICK HERE TO ADD TITLE局部变量该实例通过典型的并行循环结构,

37、使用布尔开关局部变量读取开关的值,可同时停止两个循环。由于布尔控件的“单击时触发”机械动作与局部变量不兼容,因此通过另一个局部写入变量将开关值重置为“开”,仿真“单击时触发”机械动作。 利用局部变量实现一个布尔开关同时控制两个While循环请输入您的标题CLICK HERE TO ADD TITLE全局变量全局变量可在同时运行的多个VI之间访问和传递数据。全局变量是内置的LabVIEW对象。创建全局变量时,LabVIEW将自动创建一个有前面板但无程序框图的特殊全局VI。向该全局VI的前面板添加控件可定义其中所含全局变量的数据类型及变量数目。该前面板实际便成为一个可供多个VI进行数据访问的容器。

38、 。请输入您的标题CLICK HERE TO ADD TITLE全局变量在程序框图“函数选板”中点击“选择VI”选项,在弹出的“选择需打开的VI”对话框中选择打开保存全局变量的VI,则在鼠标指针将浮着一个全局变量节点,将其放置到程序框图中即实现副本的创建。放置到程序框图上的全局变量节点默认和全局变量前面板中的一个自带标签对象关联,可以通过重新建立关联关系改变节点与对象之间的关系。请输入您的标题CLICK HERE TO ADD TITLE全局变量全局变量前面板对象 第一个VI的程序框图 第二个VI的程序框图及前面板 1. 将第一个VI连续产生的随机数传递到第二个VI中并在波形图表中显示2. 第

39、二个VI的停止按钮同时控制两个VI的运行请输入您的标题CLICK HERE TO ADD TITLE局部变量和全局变量实用主义事项如需对一个局部或全局变量进行初始化,应在VI运行前确认变量包含的是已知的数据值,否则变量可能含有导致VI发生错误行为的数据。如变量的初始值基于一个计算结果,则应确保LabVIEW在读取该变量前先将初始值写入变量。两段或两段以上代码并行改变一个共享资源的值时,就发生了竞争状态。发生竞争时VI的运行结果取决于共享变量先执行哪个动作,竞争状态会引起不可预见性。当有多于一个操作对同样数据的值进行更新时可能导致竞争状态,因此在使用局部变量和全局变量时应避免竞争状态。 使用局部

40、变量和全局变量通常会使用更多的内存,最终导致执行速度更慢,因此需要考虑该问题。2使能结构程序框图禁用结构条件禁用结构LabVIEW的程序结构请输入您的标题CLICK HERE TO ADD TITLE禁用结构禁用结构是自LabVIEW 8后增加的功能,主要用来控制程序是否被执行,有两种禁用结构。(1)程序框图禁用结构,其功能类似于C语言中的注释语句/*.*/,用于大段地注释程序。 (2)条件禁用结构,用于通过外部环境变量来控制代码是否执行,类似于在C语言中通过宏定义来实现条件编译。在禁用结构中,其注释屏蔽掉的代码不仅不执行,而且不编译,这对程序调试很有用。请输入您的标题CLICK HERE T

41、O ADD TITLE程序框图禁用结构程序框图禁用结构从形式上看与条件结构有些相似,但它的每一个子程序框图执行与否,是由选择器标签中的文本(禁用/启用)来决定的。程序框图禁用结构最初放置在程序框图中时只有一个子程序框图,默认为禁用状态。此时程序框图禁用结构边框内的代码都是灰色的,但可以编辑。运行这个程序时,边框内的代码不编译,也不执行,有数据输出隧道时输出默认值。可以通过快捷菜单“启用本程序子框图”命令启用禁用的子程序框图,还可以通过“禁用本程序子框图”再禁用。再次禁用以后则必须设置一个处于启用状态的子程序框图,程序才能运行。请输入您的标题CLICK HERE TO ADD TITLE程序框图

42、禁用结构条件禁用结构通过定义外部环境变量为真或假来控制代码是否执行,还可以通过判断当前操作系统的类型来选择执行哪段代码,其选择其标签列出了执行该子程序框图代码的条件。2公式节点LabVIEW的程序结构请输入您的标题CLICK HERE TO ADD TITLE公式结构公式节点也是一种程序结构,是便于在程序框图上执行数学运算的文本节点。适用于含有多个变量或较为复杂的方程。通过边框上右键快捷菜单中选择添加输入或添加输出并键入相应的变量名即可添加输入、输出变量,变量的数目可以根据具体情况而定,变量名称大小写敏感。使用标签工具或操作工具,输入要在公式节点中计算的方程。每个赋值中赋值运算符(=)的左侧仅

43、可有一个变量。每个赋值必须以分号(;)结束。注释内容可通过/*/封闭起来。在公式节点中输入公式时,必须确保使用正确的公式节点语法。 LabVIEW公式节点主要有以下几种语句:变量声明语句、赋值语句、条件语句、循环语句、Switch语句、控制语句。 2定时结构定时循环定时顺序LabVIEW的程序结构请输入您的标题CLICK HERE TO ADD TITLE定时结构定时结构的用法要相对复杂一些,其位于函数选板的“编程”/“结构”/“定时结构”子面板中,如图所示。定时结构主要有定时循环和定时顺序两种。请输入您的标题CLICK HERE TO ADD TITLE定时循环定时循环根据指定的循环周期顺序

44、执行一个或多个子程序框图或帧。在以下情况中可以使用定时循环结构:开发支持多种定时功能的VI、精确定时、循环执行时返回计算值、动态改变定时功能或者多种执行优先级。用鼠标右键单击结构边框可添加、删除、插人及合并帧。在“编程”1“结构”1“定时结构”子面板中选择“定时循环”对象,在程序框图上拖动鼠标即可建立定时循环,如图所示。请输入您的标题CLICK HERE TO ADD TITLE定时循环定时循环根据指定的循环周期顺序执行一个或多个子程序框图或帧。在以下情况中可以使用定时循环结构:开发支持多种定时功能的VI、精确定时、循环执行时返回计算值、动态改变定时功能或者多种执行优先级。用鼠标右键单击结构边

45、框可添加、删除、插人及合并帧。在“编程”1“结构”1“定时结构”子面板中选择“定时循环”对象,在程序框图上拖动鼠标即可建立定时循环,如图所示。请输入您的标题CLICK HERE TO ADD TITLE定时循环定时循环结构主要包含五部分内容,分别为输入节点、左数据节点、右数据节点、输出节点和循环体。下面对这五部分功能进行具体介绍。(1)输入节点:用于设置定时循环的初始化参数,确定定时循环的循环时序,循环优先级和循环名称等参数(2)左数据节点:用于返回配置信息以及运行状态信息等,提供上一次循环的时间和状态信息,例如上一次循环是否延迟执行、上一次循环的实际执行时间等(3)右数据节点:用于配置下一轮

46、及以后循环的时间参数,从而实现循环参数的动态改变。(4)输出节点:返回时间状态信息以及错误信息,参数含义与左端数据节点的同名参数一致。(5)循环体:与While循环类似,定时循环的循环体包括循环计数端口和循环条件输入端口。前者用于指示当前的循环次数:后者连接个布尔型变量,指示循环退出或者继续的条件。请输入您的标题CLICK HERE TO ADD TITLE定时循环定时循环结构是在While循环的基础上发展起来的,其循环体的使用规则与While循环一样,包括“自动索引”功能和移位寄存器。不同之处在于4个对循环时间和状态进行设定和输出的节点,While循环中的循环时间间隔在这里不再适用。下面对定

47、时循环中循环时间和状态的设定进行重点介绍。在定时循环结构的输人节点上双击,或者单击鼠标右键,在弹出的快捷菜单中选择“配置输入节点”选项,即可打开如图4-78所示的“配置定时循环”对话框。请输入您的标题CLICK HERE TO ADD TITLE定时循环实例4-32一个简单的定时循环实例该实例设置定时循环的初始周期为0ms,每循环一次周期时间增加100ms,共循环5次结束,因此整个循环结束共耗时0+100+200+300+400=1000ms。程序的程序框图和运行效果如图4-79所示。请输入您的标题CLICK HERE TO ADD TITLE定时顺序定时顺序结构由一个或多个子程序框图(也称帧

48、)组成,在内部或外部定时源控制下按顺序执行。与定时循环不同,定时顺序结构的每个帧只执行一次,不重复执行。定时顺序结构适于开发只执行一次的精确定时、执行反馈、定时特征等动态改变或有多层执行优先级的VI。用鼠标右键单击定时顺序结构的边框可添加、删除、插入及合并帧。定时顺序框图如图4-80所示。请输入您的标题CLICK HERE TO ADD TITLE定时循环定时顺序结构也包括输入节点、左数据节点、右数据节点、输出节点。它们的作用与定时循环中的节点一样,设定方法和功能也与其类似。While循环结构、顺序结构、定时结构、条件结构之间可以互相转换,具体方法是在结构体的代码框上单击鼠标右键,从菜单中选择相应的结构进行替换,替换后要注意更改各个结构运行的参数。8谢谢关注!Thanks感谢您的聆听!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com