在实时(Real-Time)应用程序中使用属性节点



主要软件: LabVIEW Modules>>LabVIEW Real-Time Module
主要软件版本: 2009 SP1
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Professional Development System
硬件: Compact FieldPoint>>Controllers>>cFP-2220

问题:

我在我的实时应用程序中使用了属性节点。我发现如果将程序部署为独立运行实时可执行程序,它的运行行为和在开发环境中进行部署运行时不同。为什么会有这种现象?



解答:

因为实时终端中并不会启用程序的前面板,所有引用自前面板控件的属性节点总会输出该属性数据类型的默认值。例如,使用一个布尔型控件的“值”属性节点总会输出False。这是因为属性节点的更新是异步执行的。如果程序基于这些属性节点的输出值来做出决策,便会造成程序不以预期的方式运行。

您可以使用如下图所示的程序来展现这种现象。如果您通过实时终端前面板运行这个VI,当布尔控件被设为真时,您会看到控件闪烁,同时实时终端上的USER LED也会闪烁。

如果您将该VI编译成实时可执行文件(exe)运行,USER LED则会常亮。因为此时不存在前面板,所以没有任何值被写入前面板控件。在上图的程序中,使控件闪烁的部分程序将不会进行任何操作(因为实际上没有前面板)。

而当您尝试给前面板对象的“值”属性写入新值的时候,不会发生真正的值写入。可以右键点击属性节点,选择全部转换为写入将属性节点改为写入模式。如果没有与程序框图关联的前面板,也就没有值写入也不会出现错误。当没有真正在活动的前面板时,若您想通过读写前面板对象的值属性来传递值,便会造成意料之外的VI行为。

如果您使用除“值”以外其他的属性(比如上图中的按钮控件闪烁),有一种可以真正更新前面板控件属性的方法:为您的实时可执行文件建立远程前面板并获取VI的控制权。为了获取控制权,您需要右键远程前面板并在弹出菜单中选择请求控制VI。请参考相关链接以了解更多关于为您的实时可执行文件建立远程前面板的相关信息



相关链接:

LabVIEW 2012 Help: Property Node
LabVIEW 2012 Real-Time Module Help: Unsupported LabVIEW Features
KnowledgeBase 2GD9NCZ8: Configuring Remote Front Panels on a Real-Time Target
KnowledgeBase 3MOF9IO9: What is the Difference Between a Local Variable and a Value Property Node?
KnowledgeBase 3K7COT23: Remote Front Panel Image Does Not Reflect Property Node Changes that Occur Prior to Connection

附件:

KB 53B366RY.zip




报告日期: 11/12/2009
最近更新: 08/30/2017
文档编号: 53B366RY