如何动态的加载一个VI并和我的主VI并行运行

更新 Nov 6, 2023

适用于

软件

  • LabVIEW Base
  • LabVIEW Full
  • LabVIEW Professional

问题详述

我正在使用“通过引用调用”(Call By Reference)节点从我的主VI动态加载并运行一个子VI。当子VI运行的时候,主VI不会并行运行并处于阻塞状态,因为貌似主VI和“通过引用调用”节点有依赖状态,我们应该如何动态加载子VI并和我的主VI并行运行?

解决方案

当您使用“按引用调用”节点运行VI时,工程中的VI并不是在自己在独立执行。主VI和“通过引用调用”节点有依赖关系,并不会并行执行。

LabVIEW 2011及更高版本:
在LabVIEW 2011中,您可以使用“开始异步调用”(Start Asynchronous Call)和“等待异步调用”(Wait On Asynchronous Call)节点轻松地运行一个和主VI并行的子V。有关其他详细信息和示例,请参阅异步调用VI

LabVIEW 2010及更早版本:
在LabVIEW 2010及更早版本中,如果想要动态的加载并执行和主VI并行执行的VI,您需要使用调用节点中的运行方法来调用VI。必须将Wait until done选项设置为FALSE以消除此VI和主VI的依赖性,如下面链接的社区示例中所示。如果您想要显示调用VI的前面板,你还需要使用一个属性节点来打开其前面板。这样就能够让主VI再子VI运行后继续运行。

您还可以使用“ 设置控制值”(Set Control Value和“ 获取控制值”(Get Control Value方法来在两个VI之间进行数据传递。

相关链接部分中的社区示例演示了如何使用调用节点、方法和属性节点来调用和主程序并行运行的子VI并在稍后进行关闭。