功能性全局变量(FGV)的LabVIEW wiki页面指出
Functional Globals的主要用途是在整个项目中横向和纵向提供数据共享。
过去,我已成功使用FGV在同一目标上运行的VI之间共享数据。
在我目前的项目中,涉及多个目标(即主机PC和cRIO),我现在想要在主机VI和RT VI之间传递配置数据,我认为FGV会派上用场
然而,它似乎不起作用:我写主机VI上的FGV好吧;但是当我从RT VI中的FGV读取数据时,我只得到默认值,好像没有任何东西写入移位寄存器。
在你建议之前:是的,我检查了我的FGV的VI属性;它的执行应该设置为不可重入。
功能全局变量是否可用于在不同目标上运行的VI之间共享数据?或者FGV的范围是否仅限于其运行的目标?
不幸的是,我在LabVIEW在线帮助或任何LabVIEW讨论板上找不到这些问题的答案......
答案 0 :(得分:3)
功能性全局变量仅在单个上下文中起作用。上下文仅存在于一个目标上(例如,我的电脑,Compact RIO,RT设备等)。
FGV实际上只是一种利用移位寄存器功能在程序中创建共享值的简洁方法 - 如果你没有在图上初始化移位寄存器那么它将被初始化为它所持有的任何值。在两个目标上运行的VI不是相同的VI - 它是它的两个副本。因此,您有两份FGV副本,这就是您要共享的数据未被共享的原因。
要在两个目标之间进行通信,建议您查看shared variables,TCP或network streams。还有很多其他选择,但这些是我最喜欢的,也是最容易在差异场景中设置的。