首页 理论教育顺序结构的转换与使用方法

顺序结构的转换与使用方法

【摘要】:图5-29 平铺式顺序结构转换为层叠式顺序结构图5-30 改变各框架的顺序由于每个帧都是可见的,所以平铺式的顺序结构不能添加局部变量,不需要借助局部变量这种机制在帧之间传输数据。图5-33 层叠式顺序结构在层叠式顺序结构中需要用到局部变量,用以在不同帧之间实现数据的传递。图5-38 计算时间的程序框图在使用LabVIEW编写程序时,应充分利用LabVIEW固有的并行机制,避免使用太多顺序结构。顺序结构虽然可以保证执行顺序但同时也阻止了并行操作。

虽然数据流编程为用户带来了很多方便,但也在某些方面存在不足。如果LabVIEW框图程序中有两个节点同时满足节点执行的条件,那么这两个节点就会同时执行。但是若编程时要求这两个节点按一定的先后顺序执行,那么数据流编程是无法满足要求的,这时就必须使用顺序结构来明确执行次序。

顺序结构分为平铺式顺序结构和层叠式顺序结构,从功能上讲两者结构完全相同。两者都可以从结构子选板中创建。

LabVIEW顺序框架的使用比较灵活,在编辑状态时可以很容易地改变层叠式顺序结构各框架的顺序。平铺式顺序结构各框架的顺序不能改变,但可以先将平铺式顺序结构转化为层叠式顺序结构,如图5-29所示。在层叠式顺序结构中改变各框架的顺序如图5-30所示,再将层叠式顺序结构转换为平铺式顺序结构,这样就可以改变平铺式顺序结构各框架的顺序。

平铺式顺序结构如图5-31所示。

顺序结构中的每个子框图都称为一个帧,刚建立顺序结构时只有一个帧,对与平铺式顺序结构,可以通过在帧边框的左右分别选择在前面添加帧和在后面添加帧来增加一个空白帧。

978-7-111-40983-0-Chapter05-31.jpg

图5-29 平铺式顺序结构转换为层叠式顺序结构

978-7-111-40983-0-Chapter05-32.jpg

图5-30 改变各框架的顺序

由于每个帧都是可见的,所以平铺式的顺序结构不能添加局部变量,不需要借助局部变量这种机制在帧之间传输数据。

图5-32所示,判断一个随机产生的数是否小于或不小于70,若小于,则产生0,若大于,则产生1。

978-7-111-40983-0-Chapter05-33.jpg

图5-31 平铺式顺序结构

978-7-111-40983-0-Chapter05-34.jpg

图5-32 使用平铺式顺序结构的程序框图

层叠的顺序结构的表现形式与条件结构十分相似,都是在框图的同一位置层叠多个子框图,每个框图都有自己的序号,执行顺序结构时,按照序号由小到大逐个执行。条件结构与层叠式顺序结构的异同:条件结构的每一个分支都可以为输出提供一个数据源,相反,在层叠式顺序结构中,输出隧道只能有一个数据源。输出可源自任何帧,但仅在执行完毕后数据才输出,而不是在个别帧执行完毕后,数据才离开层叠式顺序结构。层叠式顺序结构中的局部变量用于帧间传送数据。对输入隧道中的数据,所有的帧都可能使用。层叠结构具体程序框图如图5-33所示。

978-7-111-40983-0-Chapter05-35.jpg

图5-33 层叠式顺序结构

在层叠式顺序结构中需要用到局部变量,用以在不同帧之间实现数据的传递。例如当用层叠式顺序结构做图5-32时,就需用局部变量,具体程序框图分别见图5-34所示。(www.chuimin.cn)

978-7-111-40983-0-Chapter05-36.jpg

图5-34

例5-2:计算时间差

本实例程序具有以下功能:输入一个0~10000的整数,测量机器需要多少时间才能产生与之相同的数。由于计算多少时间需要用到前后两个时刻的差,即用到了先后次序,所以应用顺序结构解决此题。在产生了的数据中,先将其转换为整型。转换函数在数值子选板中。具体程序框图和前面板显示如图5-35~图5-37所示。

978-7-111-40983-0-Chapter05-37.jpg

图5-35 例5-2程序框图的第0帧

978-7-111-40983-0-Chapter05-38.jpg

图5-36 例5-2程序框图的第1帧

978-7-111-40983-0-Chapter05-39.jpg

图5-37 例5-2的前面板

图5-38所示的也是一个计算时间的程序框图,用于计算一个For的执行大约需要多少时间。

978-7-111-40983-0-Chapter05-40.jpg

图5-38 计算时间的程序框图

在使用LabVIEW编写程序时,应充分利用LabVIEW固有的并行机制,避免使用太多顺序结构。顺序结构虽然可以保证执行顺序但同时也阻止了并行操作。例如,如果不使用顺序结构,使用PXI、GPIB、串口、DAQ等I/O设备的异步任务就可以与其他操作并发运行。需控制执行顺序时,可以考虑建立节点间的数据依赖性。例如,数据流参数(如错误I/O)可用于控制执行顺序。

不要在顺序结构的多个帧中更新同一个显示控件。例如,某个用于测试应用程序的VI可能含有一个状态显示控件用于显示测试过程中当前测试的名称。如果每个测试都是从不同帧调用的子VI,则不能从每一帧中更新该显示控件,此时层叠式顺序结构中的连线是断开的。

由于层叠式顺序结构中的所有帧都在任何数据输出该结构之前执行,因此只能由其中某一帧将值传递给状态显示控件。条件结构中的每个分支都相当于顺序结构中的某一帧。While循环的每次循环将执行下一个分支。状态显示控件显示每个分支VI的状态,由于数据在每个分支执行完毕后才传出顺序结构,在调用相应子VI选框的前一个分支中将更新该状态显示控件。

跟顺序结构不同,在执行任何分支时,条件结构都可传递数据结束While循环。例如,在运行第一个测试时发生错误,条件结构可以将假值传递至条件接线端从而终止循环。但是对于顺序结构,即使执行过程中有错误发生,顺序结构也必须执行完所有的帧。