0

LabVIEW wiki page on Functional Global Variables ( FGV) 指出

Functional Globals 的主要用途是在整个项目中提供横向和纵向的数据共享。

过去,我成功地使用 FGV在同一目标上运行的 VI 之间共享数据。

在我目前涉及多个目标(即主机 PC 和 cRIO)的项目中,我现在想在主机 VI 和 RT VI 之间传递配置数据,我认为 FGV 会派上用场。

但是,它似乎不起作用:我在 Host VI 上写信给 FGV 好吧;但是当我在 RT VI 中从 FGV 读取数据时,我只得到默认值,就好像没有任何东西被写入移位寄存器一样。

在您建议之前:是的,我已经检查了我的 FGV 的 VI 属性;它的执行应该设置为non-reentrant

功能全局变量能否用于在不同目标上运行的 VI 之间共享数据?还是 FGV 的范围仅限于它运行的目标?

不幸的是,我在 LabVIEW 在线帮助或任何 LabVIEW 讨论板上都找不到这些问题的答案...

4

1 回答 1

3

功能全局变量仅在单个上下文中起作用。上下文仅存在于一个目标上(例如我的电脑、Compact RIO、RT 设备等)。

FGV 实际上只是使用移位寄存器的特性在程序中创建共享值的一种巧妙方法——如果您不初始化图表上的移位寄存器,那么它将使用它最后的任何值进行初始化。在两个目标上运行的 VI 不是同一个 VI——它是它的两个副本。因此,您有两个 FGV 副本,这就是您要共享的数据没有被共享的原因。

要在两个目标之间进行通信,我建议您查看共享变量TCP网络流。还有很多其他选项,但这些是我最喜欢的,并且在不同的场景中最容易设置。

于 2013-08-30T02:27:34.427 回答