从循环输出创建 subvi

Create subvi from output of loop

以前用过 C/Java 的 Labview 让我很沮丧。

我有一个简单的问题,我不知道如何解决。

我的程序循环执行一些操作并更新循环内的指标。我想将这个循环(及其所需的输入)制作成一个 VI,但我不知道如何使指标成为 VI 的输出。

我希望能够重用这个 VI,将一个指标连接到它,让它自动更新而不在 VI 之外创建任何循环。

在 C 中,我可以通过返回指针或通过引用传递函数来完成此操作。

您也可以引用 labview 指示器,但您需要将其设为全局变量或从调用 vi 中传入引用。

至于你的挫败感,你应该知道你在 Labview 中几乎可以做任何你在 C 中可以做的事情。

使用队列在框图中的循环之间移动数据。

producer/consumer pattern uses a queue to move the data between two loops on the same diagram, but a queue is global to a VI hierarchy and by naming it when you create it,第二个 VI 可以通过使用相同的名称获得对它的引用。

注意: 队列 1:1 且无损;如果您需要 1:N 数据传输,请改用 notifier(最新值有损)。

在 LabVIEW 中,while 循环具有简单的条件。只有当我们满足条件时,该值才能跳出循环。循环的右下角有一个条件终端。

一般:

1) 当 true 标志将在那里设置时(如果为 true 则停止)然后该值将传递到循环外。

2) 当 false 标志将在那里设置时(如果为 true 则继续),则该值将在循环外传递。

3) 您始终可以在循环内使用带有条件终端的错误连线,当出现错误时,循环将停止。

你的情况: 由于优化原因,请始终尝试使用最少量的 while 循环。

1) 您可以在主 VI 中使用 while 循环,而所有子 VI 都将在这个循环中并且所有值(指示器)都将被更新。

2) 您可以尝试在子 VI 中使用 while 循环,但是您必须提供将值传输到循环外的机制,例如 queues or local variables

A) 下图显示了如何执行此操作。 B) 这种编程风格适用于小型应用程序,但随着应用程序变大,我鼓励您探索一种实际架构,用于在一个层次结构中生成数据并在另一个层次结构中使用它(正如该问题的其他答案所暗示的)。特别是,执行文件 >> 创建项目并选择 Producer/Consumer 模板来探索此类架构的良好起点。还有更复杂的,但这是一个很好的开始。