首页 理论教育LabVIEW中的顺序结构:平铺式与层叠式

LabVIEW中的顺序结构:平铺式与层叠式

【摘要】:在顺序结构中,每一个子框架称为帧。LabVIEW有平铺式顺序结构和层叠式顺序结构两种形式,这两种循序结构功能完全相同。4)层叠顺序结构的局部变量可能导致程序的可读性进一步下降甚至发生错误。这里面包含了以下两个意思:①顺序结构使用强制数据流运行机制,破坏了数据流编程的并行性。

基于文本的语言程序是依据控制流来运行的,控制流基本上是依据文本语言的书写顺序来实现程序的执行流程。而图形化语言则不同,它的运行机制是基于数据流的。节点必须在所有的数据输入都有效时才会执行(也称为数据的相关性)。算术表达式依赖于节点间的连线,实现与数据相关的数据流控制作用。可是,有时候数据相关性并不存在(或者不需要这种数据相关性存在),我们期待程序是一步一步地按顺序执行(定序执行),而不是按数据流关系执行。为了应对这种特殊的需要,LabVIEW还具备一些图形化语言所特有的程序流程控制结构,比如顺序结构、带有移位寄存器的循环等。

当程序运行到顺序结构时,会按照一个框架接着一个框架的顺序执行。每个框架中的代码全部执行结束,才会再开始执行下一个框架,把代码放在不同的框架中就可以保证它们的执行顺序。在顺序结构中,每一个子框架称为帧。

LabVIEW有平铺式顺序结构(见图2-29)和层叠式顺序结构(见图2-30)两种形式,这两种循序结构功能完全相同。平铺式顺序结构把所有框架按照从左到右的顺序展开在VI框图上;而层叠式顺序结构每个框架是重叠的,只有一个框架可以直接在VI框图上显示出来。

978-7-111-49442-3-Chapter02-48.jpg

图2-29 平铺式顺序结构

978-7-111-49442-3-Chapter02-49.jpg

图2-30 层叠式顺序结构

将平铺式顺序结构叠放起来就是层叠式顺序结构。这种转换可以直接进行,具体操作是:鼠标右键单击平铺式顺序结构的边框,在弹出的快捷菜单中选择“替换为层叠式顺序”即可。

平铺式顺序结构只需要通过数据线连接就可以在不同的顺序帧间传递数据,如图2-31所示。

978-7-111-49442-3-Chapter02-50.jpg

图2-31 平铺式顺序结构的数据传递

由于平铺式顺序结构的所有帧都显示在程序框图窗口中,平铺式顺序结构帧之间的数据可以通过数据线传递,并不需要局部变量,所以在平铺式顺序结构中系统没有设置局部变量。数据线在穿过帧程序框时,在框上会有一个小方块,表示数据通道。

而在层叠式顺序结构的不同帧之间传递数据,就需要使用顺序局部变量,如图2-32所示。

如图2-33所示,顺序结构的输出通道仅能有一个数据源,数据源能被后续所有帧使用,但在源帧前面的帧中不能使用。

层叠顺序结构的优点是程序结构简单、清晰(程序内容并不清晰)、占用屏幕空间小。但是层叠顺序结构的缺点也不少,下面具体介绍:

1)它隐藏了程序的某些部分,因为是层叠顺序结构,所以通常我们只能看到一帧的程序框图内容,从而降低了程序的直观性和可读性。然而平铺式顺序结构没有这个问题(注意分支结构也存在相同的隐藏问题)。

978-7-111-49442-3-Chapter02-51.jpg

图2-32 添加顺序局部变量

978-7-111-49442-3-Chapter02-52.jpg

图2-33 层叠顺序结构的数据传递

2)影响从左到右的可视流习惯。因为是层叠顺序结构,所以不得不来回查找程序框图中的对应关系。平铺式顺序结构没有这个问题。

3)数据流中断,破坏了数据流所倡导的并行性。LabVIEW天生就具备并行的特点,使用层叠顺序结构禁止了并行操作,因为只有当程序全部执行完后,数据才能输出。

4)层叠顺序结构的局部变量可能导致程序的可读性进一步下降甚至发生错误。层叠式顺序结构局部变量用来传递帧之间的数据,而且是有的帧使用,有的帧不使用,使得程序可读性下降。平铺式顺序结构没有这个问题。

上面列举了层叠式顺序结构的一些缺点,正是因为这些缺点以至于好多有关LabVIEW的书籍都发出了这样的警句“慎用顺序结构”。这里面包含了以下两个意思:

①顺序结构使用强制数据流运行机制,破坏了数据流编程的并行性。

②层叠式顺序局部变量会导致错误发生或程序的可读性下降。