顺序模型之数据流



顺序结构有这样那样的缺陷,那么如何实现顺序模型呢?答案就是使用数据流的思想进行编程。一个节点开始执行,那么就需要该节点获得所有必要数据。



在LabVIEW中,数据由前面的节点流向后面的节点,程序随着数据的流动而执行。这就形成了一个自然的顺序结构。



labview for循环 自动索引_数据



上图就是一个典型的由数据流控制的顺序模型。 Simulate Signal节点产生一个波形数据,然后数据沿连线流动到 Spectral Measurements节点做频谱分析,分析得到的频谱数据沿连线流动到 Write To Measurement File节点,将节点存储到数据文件。整个程序,随着数据的流动一步一步的执行,形成了一个完美的顺序模型。



如果两个节点之间没有数据联系,我们也想要他们顺序执行怎么办呢?那就要利用错误簇和条件结构。



错误簇,是LabVIEW设置的特殊的数据结构,由status(错误状态)、code(错误代码)、source(错误信息)三部分组成。它是用来在节点之间传输错误信息的。(如下图所示)



labview for循环 自动索引_labview for循环 自动索引_02



其实,错误簇除了可以传递错误信息以外,还有一个重要的功能就是 通过错误簇中数据的流动来确定程序的执行顺序。当节点含有错误簇端子时,我们就要把前一个节点的 error out端子和后一个节点的 error in端子连接起来,已确定执行的顺序,以及保证错误信息的传递。



labview for循环 自动索引_执行顺序_03



上图所示的VI由3个用户输入节点构成。三个节点之间本没有数据联系,也就是说执行顺序不确定。但是,通过错误簇的连接使它们形成了数据依赖,从而能够顺序执行。



如果在节点中没有错误簇,有该如何用数据流来确定执行顺序呢?看看下面的例子:



labview for循环 自动索引_数据_04



程序由两个用户输入节点和两个对话框节点构成。我们需要第一个用户输入节点执行完毕后,由第一个对话框节点来提示输入成功,第二组输入节点和对话框同理。由于对话框节点并没有错误簇端子,于是就使用了两个条件结构来放置两个对话框节点。错误数据从两个条件结构中穿过,来保证程序的顺序执行。



值得一提的是,条件结构的所有分支都需要连接错误信息,否则LabVIEW会报错。



labview for循环 自动索引_执行顺序_05



P.S. 由于错误簇有以上种种的用途,所以在我们写一定要 在所有的子VI中加入错误簇,即使子VI中没有错误要处理,也要加上 error in error out两个端子。



好了,利用数据流来确定执行的顺序的方法就写这么多吧。


转载于:https://blog.51cto.com/genreeze/203631