通过共享变量使 PC 与 RT EXE 通信时,LabVIEW 中显示错误 -1950679035

更新 Sep 4, 2023

适用于

硬件

  • PXI-8840
  • CompactRIO Controller
  • myRIO-1900

软件

  • LabVIEW

问题详述

我想在我的 RT(实时)目标上通过网络发布共享变量 (NSV) 与我的 PC 之间建立数据传输。因此,我创建了一个已部署在我的 PC 上的 VI 或 LabVIEW 可执行文件,以及一个在我的 RT 目标上运行的 RT EXE。
当我在目标上启动 RT EXE 并在 PC 上启动 VI 时,我没有通过 NSV 传输数据。我可以在 RT 目标下的NI 分布式系统管理器中看到 NSV,但数据未传输。我还看到在LabVIEW 中显示错误代码 -1950679035。
 
Host VI 中的打开变量连接时发生错误 -1950679035
 
可能的原因:
 
LabVIEW: (Hex 0x8BBB0005) 无法在共享变量引擎(SVE)中定位共享变量。此共享变量的部署可能已失败、SVE 尚未启动或 SVE 太忙而无法响应此请求。
该错误显示在以下对话框中:
错误1950679035.png

解决方案

此错误可能是由多种因素引起的,具体取决于您的系统配置。为了确保您了解可能影响 PC 与 RT 目标之间通过共享变量进行通信的最常见因素,请查看以下方面:
  • 查看有关 Error -1950679035 or -1950679027 When Using LabVIEW Shared Variables 的文章。此资源概述了您需要在目标 PC 上查看的一些设置,以确保可以通过共享变量进行通信。
  • 确保 RT EXE(启动应用程序)在 RT 目标上正常运行。请查看文章 Startup Executable Does Not Launch on Real-Time (RT) Target 以了解更多详细信息。
  • 在实时目标上托管时,如果实时目标上没有足够的资源来托管共享变量,则可能会发生此错误。要解决此问题,您应该尝试降低循环速率以释放 CPU 时间,从而为共享变量引擎提供运行时间。您还可以尝试在程序请求时添加等待,以便在访问变量之前给 cRIO 服务启动时间。这种情况主要发生在实时操作系统上,因为您可以更容易地使较低级别的线程(例如操作共享变量引擎所需的线程)处于饥饿状态。通常,这是由于较高优先级线程(例如定时循环)占用过多 CPU 时间并阻止共享变量引擎运行的结果。有关监控实时系统性能的更多信息,请参阅以下文章: Monitoring CPU and Memory Usage on Real-Time Embedded Targets。另外,请查看以下示例代码,该代码展示了如何在代码开头添加等待时间。
注意:该图像是一个 LabVIEW VI 片段,其中包含可在项目中重复使用的 LabVIEW 代码。
要使用代码片段,请右键单击图像,将其保存到计算机,然后将文件拖到 LabVIEW 程序框图中。
  • In case you are trying to communicate a LabVIEW executable (running on a target PC that does not have the development environment installed) with shared variables hosted on a myRIO controller while having this device connected through the USB cable, make sure that you have already installed the CompactRIO Runtime on the target PC as this software is required to allow the target computer to recognize the myRIO and create a virtual network connection. For more information, please review the following article:
  • 如果您尝试使用USB电缆连接设备时在 LabVIEW 可执行文件(在未安装开发环境的目标 PC 上运行)与托管在myRIO控制器的贡献变量通信时,请确保您已安装目标 PC 上的 CompactRIO Runtime,因为需要该软件才能允许目标计算机识别 myRIO 并创建虚拟网络连接。有关更多信息,请查看以下文章: 使用myRIO需要安装RIO驱动吗