Labview:创建子VI使得框图展开

时间:2015-08-14 13:02:11

标签: labview

我在Labview中编写了一段相当复杂的代码(包含许多循环和其他序列)。因此,我想创建许多子VI以使我的代码更清晰。

当我想要在子VI中使用的代码中有一个循环时,新创建的子VI的图标显示在远离我原始代码段的位置,导致我的块图扩展。

为什么会发生这种情况,我该如何避免呢?

我想要变成子VI的代码片段: The piece of code I want to turn into a subVI

创建子VI后,我的Block Diagram的相同片段: The same fragment of my Block Diagram after I created the subVI

这是我新创建的子VI - 与第一段代码相比,向右大约1米处向下1米处: And here is my newly created subVI - approximately 1 m to the right at 1 m down in comparison with the first piece of code.

1 个答案:

答案 0 :(得分:5)

感谢您添加图片 - 这是程序框图中的一个膨胀。

我不知道LabVIEW为什么会这样,但我的猜测是控件和指标引用有所贡献。

至于防止它发生的方法,除了重构代码(无论如何可能是必要的),你可以尝试关闭自动线路路由:工具»选项»方框图»取消选中< em>'启用自动线路传输'。

避免创建包含结构中终端的子VI

但是,要将程序框图的复杂性移动到子VI中,需要进行一些重构,因为你想要包含一个基于前面板输入改变行为的while循环(比如 stop abs 2 布尔按钮)。否则,当新的子VI执行时, stop abs 2 的值不会随着它的运行而改变。

LabVIEW Help重申了这一点:“因为终端保留在原始框图中并且终端连接到新的子VI,所以子VI在每次迭代时都不会更新终端的值子VI内的循环。“

这是illustration

与正在运行的子VI进行通信

要从子VI 发送输入和接收输出,而正在执行它需要一些数据同步,如队列或通知程序。典型的设计模式包括: