网络发布的共享变量疑难解答

更新 Feb 26, 2024

适用于

硬件

  • FP-2000
  • FP-2010
  • FP-2015

软件

  • LabVIEW Real-Time Module
  • LabVIEW

驱动

  • NI-RIO

问题详述

  • 我无法通过网络与网络发布的共享变量进行通信。我的共享变量可以在开发环境中工作,但在将它们构建到可执行文件中时却不起作用。
  • 我的网络发布的共享变量也没有像我期望的那样工作。写入变量的值与从中读取的值之间存在差异。
  • 我的在尝试访问代码中的共享变量时,收到错误: 错误-1950679034:共享变量没有值(Error -1950679034: The shared variable has no value.)。

解决方案

有几个方法可以防止网络发布的共享变量在其他网络机器上更新。

常用故障排除
  • 确保共享变量设置为网络发布(Network-Published) 。要检查此项,请右键单击变量,然后选择“ 属性”
  • 确保已部署包含共享变量的库。要检查此项,请右键单击托管共享变量的库,然后选择其中一个部署选项。您可以使用分布式管理系统通过导航到工具»分布式管理系统来检查是否已部署变量。如果您使用的是LabVIEW 8.5或更早版本,则可以使用变量管理器,可以通过选择工具»共享变量»变量管理器来访问它。
    • 从分布式系统管理器,您能够检查共享变量的状态。您还可以检查时间戳,以确定是否在正确的时间写入变量。这可以帮助您确定写入是否失败,或者写入是否比预期更频繁。
  • 确保在任一计算机上都没有启用个人防火墙阻止NI-PSP数据包。您可以通过转到“控制面板”中的“ 安全中心”来检查防火墙的状态。有关潜在防火墙问题的详细信息,请参阅Configuring Software and Hardware Firewalls to Support National Instruments Products(配置软件和硬件防火墙以支持NI产品) 。防火墙问题将导致Error -1950679034: The shared variable has no value.(错误-1950679034:共享变量没有值)。
  • 如果您的防病毒软件有防火墙,请务必禁用它或在其中包含例外。
  • 检查共享变量是否托管在同一IP子网上的计算机上。如果不是,您可以通过工具»共享变量»注册计算机,注册远程计算机...
  • 如果PC上有多个网卡试图访问共享变量,请尝试禁用未使用的网卡。另外,请参阅How do I Connect to Ethernet Targets with Multiple Network Cards in the Host?(如何在主机中连接多个网卡的以太网目标) ,检查相应的网卡是否设置为主网络。
  • 确保共享变量引擎正在运行。导航到Windows服务并检查NI变量引擎进程是否存在并正在运行。如果不存在,请安装LabVIEW运行环境。如果它存在且未运行,请右键单击该进程并启动它。要确保它自动启动,请输入服务的属性,并确保将“ 启动类型”设置为“ 自动” 。在服务属性的“ 恢复”选项卡上,如果启动共享变量引擎失败,还可以将变量引擎设置为在第一次,第二次以及所有后续尝试时重试。
  • 重启NI服务。

实时(RT)系统的故障排除
  1. 确认在您的RT终端上正确设置了指拨开关。如果共享变量在从开发环境运行时起作用,但在设置启动可执行文件时不起作用,请确保关闭No Startup App的指拨开关。
  2. 检查RT终端上的DNS IP。如果此IP设置为非有效DNS服务器,则由于发生DNS超时,共享变量将缓慢更新。通过将此端口更改为0.0.0.0 ,共享变量会以适当的速率更新。
  3. 调整时间或添加等待写入共享变量的定时循环。如果定时循环以高频率运行并且使其他进程匮乏,则该变量会非常缓慢地更新或根本不更新。
  4. 如果将共享变量与RT可执行文件一起使用,请确保没有前面板对象绑定到共享变量。构建RT可执行文件时,将删除前面板对象,从而导致共享变量不更新。如果您打算将应用程序部署为可执行文件,请使用程序框图中的共享变量节点。
  5. 如果您尝试从RT终端读取共享变量,请确保已在终端上安装变量客户端支持 。可以在Measurement&Automation Explorer中通过展开远程系统(Remote Systems)下实时目标旁边的[+]并展开软件(Software)旁边的[+]来检查。如果共享变量由RT终端托管,请确保使用相同的方法安装网络变量引擎网络变量引擎无法在FieldPoint 2000,2010和2015控制器上正常工作,因为它们没有足够的内存。