使用 LabVIEW 共享变量时出现错误 -1950679035 或 -1950679027

更新 Jun 28, 2024

适用于

软件

  • LabVIEW Real-Time Module
  • LabVIEW

问题详述

在我的程序中尝试访问 LabVIEW 共享变量时出现错误 -1950679035 和 -1950679027。

在 Host VI 中打开变量连接时出现错误 -1950679035

可能的原因:

LabVIEW: (Hex 0x8BBB0005)无法在共享变量引擎(SVE)中定位共享变量。部署共享变量可能失败,共享变量引擎未启动或共享变量引擎太忙碌,没有回应请求。

解决方案

出现此错误的原因有多种,具体取决于系统和正在使用的其他软件组件。该错误可能是由于以下这些一个或多个原因。
  • 当 NI 变量引擎未运行时,可能会发生此错误。请通过打开 Windows 任务管理器 >> 服务并搜索 NI Variable Engine (NITaggerService) 来验证此服务是否正在运行。如果该服务显示为已停止,请右键单击它并单击开始。
  • 包含共享变量的库可能未正确部署。要检查此项,请右键单击托管共享变量的库并选择部署选项。如果您使用的是可执行文件,请查看下一个故障排除步骤。
  • 如果您使用可执行文件运行应用程序,请在执行时部署库,方法是选中程序生成规范>>应用程序属性 >> 共享变量部署“执行应用程序时部署共享变量库”框。有关此过程的更多详细信息,请查看以下文章: 从一个编译好的可执行文件中部署网络共享变量。如果您在未安装完整版 LabVIEW 开发环境的部署电脑上运行可执行文件,则需要在该电脑上安装 NI 变量引擎。您可以通过在安装程序属性的“附加安装程序”类别中选择“NI 变量引擎”将其包含在您的安装程序中。
  • 当托管在实时目标上时,如果实时目标上没有足够的资源来托管共享变量,则可能会发生这种情况。要解决此问题,您应该尝试降低循环速率以释放 CPU 时间,从而为共享变量引擎提供运行时间。您也可以尝试在程序开始时添加等待,让 cRIO 服务有时间在访问变量之前启动。这主要发生在实时操作系统上,因为您可以更容易地使低优先级线程(如运行共享变量引擎所需的线程)处于饥饿状态。通常,这是由于更高优先级的线程(如定时循环)占用过多 CPU 时间并阻止共享变量引擎运行的结果。有关监控实时系统性能的更多信息,请参阅以下文章: Monitoring CPU and Memory Usage on Real-Time Embedded Targets .
  • 使用别名或编程访问指定的共享变量路径不正确时将导致此错误。这可能就像定义路径中的印刷错误一样简单。使用别名时,您可以“共享变量属性”窗口中“绑定至:”部分仔细检查路径。
  • 防火墙或防病毒设置可能会阻止您的计算机访问共享变量引擎中的各个变量。可以尝试确保公共网络和专用网络防火墙都已关闭,而不是只关闭一个或另一个。如配置软件和硬件防火墙支持 NI 产品中所述,取消阻止共享变量引擎使用的特定端口将解决此问题。
  • 在某些情况下,您可能需要以管理员权限运行 LabVIEW 才能正确读取共享变量。您可以通过在“开始”菜单中找到您的 LabVIEW 版本,右键单击它并选择以管理员身份运行 LabVIEW。
  • 如果在将属性节点与 SharedVariableIO 类一起使用时出现此错误,请参阅以下文章: Error -1950679035 When Programmatically Changing Shared Variable Properties
  • 使用绑定到 OPC 标签的共享变量时,还有许多其他潜在原因,在以下文章中进行了深入介绍:Error -1950679035: Unable to Locate Variable in Shared Variable Engine
  • 使用共享变量访问扫描引擎资源时,可能会出现此错误。通过进入您的 LabVIEW 项目并浏览至目标下的机箱,手动取消部署资源。从那里展开实时扫描资源,右键单击扫描引擎资源(例如您的模块),然后按取消部署。然后再次右键单击,然后按部署 。确保 VI 从 RT 终端运行,而不是从 Windows 主机 VI 运行。
  • 当在主机 PC 上使用双网络接口卡并从实时目标引用共享变量时,打开 LabVIEW 项目文件并右键单击我的电脑 >> 属性,勾选“指定自定义地址”并在“地址”中输入备用NIC网卡地址。
  • 如果您想通过网络发布共享变量 (NSV) 在 RT 终端和 PC 之间建立数据传输,并因此在 PC 上使用 VI 而在 RT 终端上使用 exe,则可能会发生此错误。检查Error -1950679035 Is Shown in LabVIEW When Communicating an RT EXE With a PC Through Shared Variables
  • 如果您在不同的 LabVIEW 项目中使用多个共享变量库,请确保库的名称不同。

相关信息

为了帮助缩小错误原因的范围,您可以使用 LabVIEW 示例“shared variables.lvproj”,该示例位于帮助 >>查找范例

在一台 PC 上运行 Shared Variable Server VI,然后打开 Shared Variable Client - Variable API 并使用 IP 或计算机名称替换下面显示的字符串。这将帮助您使用已确认有效的代码并隔离网络/防火墙的错误原因。