我在Labview中编写了一段相当复杂的代码(包含许多循环和其他序列)。因此,我想创建许多子VI以使我的代码更清晰。
当我想要在子VI中使用的代码中有一个循环时,新创建的子VI的图标显示在远离我原始代码段的位置,导致我的块图扩展。
为什么会发生这种情况,我该如何避免呢?
答案 0 :(得分:5)
感谢您添加图片 - 这是程序框图中的一个膨胀。
我不知道LabVIEW为什么会这样,但我的猜测是控件和指标引用有所贡献。
至于防止它发生的方法,除了重构代码(无论如何可能是必要的),你可以尝试关闭自动线路路由:工具»选项»方框图»取消选中< em>'启用自动线路传输'。
但是,要将程序框图的复杂性移动到子VI中,需要进行一些重构,因为你想要包含一个基于前面板输入改变行为的while循环(比如 stop abs 2 布尔按钮)。否则,当新的子VI执行时, stop abs 2 的值不会随着它的运行而改变。
LabVIEW Help重申了这一点:“因为终端保留在原始框图中并且终端连接到新的子VI,所以子VI在每次迭代时都不会更新终端的值子VI内的循环。“
这是illustration。
要从子VI 发送输入和接收输出,而正在执行它需要一些数据同步,如队列或通知程序。典型的设计模式包括: