无法通过cRIO实时

时间:2015-07-22 21:44:56

标签: variables shared labview

我想使用编程访问来操作计算机和NI cRIO 9033上的共享变量,但无法以编程方式访问cRIO上的共享变量。

我把这种情况简化为一个非常简单的例子,试图解释我所看到的。共享变量托管在cRIO上。我使用相同的VI来执行计算机和cRIO上的访问。 在计算机上,通过共享变量节点和编程访问访问共享变量都有效。 在cRIO上,通过共享变量节点访问共享变量是有效的,但是对共享变量的编程访问不起作用。

尝试将共享变量的cRIO上的读取变量或开放变量连接时收到的错误代码为-1950678943。 错误文本在尝试打开与变量的连接时读取"超时。"

我很快就对为什么cRIO在以编程方式读取共享变量时遇到问题而感到很困惑。 我已经完成的网络搜索没有发现导致此错误的这种简单方案,所以我想知道我是否偶然发现了初学者的错误。

VI的后面板用于访问共享变量:

Block diagram

在计算机上运行VI的结果(所有共享变量访问 - 通过共享变量节点或编程访问工作):

Computer result

在cRIO上运行VI的结果(共享变量编程访问的所有尝试都不起作用):

cRIO result

编辑:我很感谢帮助排除故障,但最终我无法获得共享变量来处理我从CompactRIO进行编程访问的应用程序。我改为选择使用Network Streams,它似乎功能相当好。好处:我的客户端和服务器之间的连接细节可以更好地封装,因为不再需要为它们提供共享变量以允许通信。缺点:更多的记账以确保网络流的读写器都正确连接(我发现这个解剖at National Instrument's forum在制定逻辑时很有用。)

1 个答案:

答案 0 :(得分:0)

如果没有您的架构,我很难重现您的问题。你能尝试用这里显示的结构制作一个测试VI,让我知道会发生什么吗? (插入你的变量库路径,我有一个空的库常量)。

enter image description here

有几点需要注意:

  1. 您希望打开与变量的连接,读取或写入变量(或访问属性),并关闭串行连接。理想情况下,如果您要进行大量的读写操作,则只需打开变量一次,然后在程序的开头和结尾处关闭一次。在读/写之前,明确强制LabVIEW打开连接非常重要。
  2. 通过在For循环上连接停止条件,您可以了解哪个(如果只有一个)变量给您一个问题。 For循环将退出抛出错误的变量,而Variable Names输出将仅显示该变量的值。
  3. 您可以使用Read Variable VI而不是使用Variable Property Node访问变量名称,但我认为该名称可以帮助您找到导致问题的变量。
  4. 希望在从变量中读取之前明确地打开连接将解决问题,但请告诉我你最终会发生什么。

    修改

    经过一番讨论,我在修改VI之前在我们尝试访问共享变量引擎之前包含一个短暂的延迟。共享变量引擎需要一些时间来启动,因此在超时之前可能无法启动。您可以稍微调整延迟,看看是否能解决问题。

    以下是来自NI的一些额外troubleshooting tips。需要仔细检查的一个重要问题是,您的共享变量实际上是已部署的。如果您可以从PC访问它们,那么我会想象它们已经部署完毕。

    另外需要注意的是:如果您在RT机器的循环中使用变量,请确保循环迭代之间存在一些延迟。如果共享变量引擎没有时间让处理器处理优先级较低的任务,那么共享变量引擎可能会被RT环路匮乏。

    最后,只想在网络共享变量上建立the documentation的链接。那里有很多有用的信息,虽然我不确定它是否有助于解决这个问题。