创建一个安全的关闭进程是实时应用程序的基本组成部分。例如,应用程序一个部分控制设备的某个部分,应用程序另一部分监视预警状态,则可能希望发生预警状态时停止设备。此时,可使用网络发布的共享变量将多个循环的停止和错误函数合并为一个函数。

创建共享变量

网络发布的共享变量十分适用于广播关闭事件,因为网络发布的共享变量可与多个VI通信且其读写操作不会互相干扰。

按照下列步骤,配置网络发布的共享变量:

  1. 项目浏览器窗口右键单击RT终端,从快捷菜单中选择新建»变量,显示共享变量属性对话框。
  2. 按照下列步骤配置变量:
    1. 共享变量属性对话框变量页的名称文本框中,输入Active?
    2. 变量类型下拉菜单中选择网络发布
    3. 数据类型下拉菜单中选择布尔
    4. 共享变量属性对话框的RT FIFO页中,勾选启用RT FIFO复选框。
    5. 单击确定
  3. 项目浏览器窗口中,右键单击包含Active?变量的库,并从快捷菜单中选择保存»保存
  4. 将库命名为Variables
  5. 单击确定
  6. 单击Active?变量并将其从项目浏览器窗口拖曳到“RT主程序”的程序框图上,并将其放置在RT FIFO创建函数的左侧。
  7. 右键单击Active?变量,从快捷菜单中选择访问模式»写入
  8. 将真常量连线至Active?变量的活动?输入端。

初始化变量

启动应用程序时,代码的许多片段会并行加载。这意味着应用程序的某些部分可能会在其他部分准备就绪之前加载。为防止应用程序因网络发布的共享变量初始化时间不足而停止,最佳实践是使用While循环检查初始化是否正确。

按照以下步骤初始化Active?变量:

  1. Active?变量和RT FIFO创建函数之间添加一个While循环。
  2. 创建Active?变量的副本并将其放置于While循环中。
  3. 右键单击While循环中的Active?变量,从快捷菜单中选择访问模式»读取
  4. 在While循环中添加按名称解除捆绑函数。
  5. 将按名称解除捆绑函数的输入端连线至Active?变量的错误输出输出端。
  6. 右键单击按名称解除捆绑函数,从快捷菜单中选择选择项»代码
  7. 在While循环中添加一个不等于?函数。
  8. 将按名称解除捆绑函数的代码输出端连线至不等于?函数的x输入端。
  9. 右键单击不等于?函数的y输入端,从快捷菜单中选择创建»常量
  10. 输入-1950679034作为常量。这是共享变量无值时LabVIEW返回的错误代码。
  11. 将不等于?函数的x!=y?输出端连线至While循环的停止条件。
  12. 在While循环中添加一个等待(ms)函数。
  13. 右键单击等待(ms)函数的等待时间(毫秒)输入端,然后从快捷菜单中选择创建»常量
  14. 输入10作为常量,以检查变量是否每10毫秒初始化一次。

创建关闭条件

关闭条件可确保在应用程序的某个部分出现严重错误或用户停止应用程序时,每个进程都会停止。

按照以下步骤,使用共享变量创建安全的关闭条件:

  1. Active?变量的错误输出输出端连线至While循环中Active?变量的错误输入输入端。
  2. 将While循环中Active?变量的错误输出输出端连线至RT FIFO创建函数的错误输入输入端。
  3. 删除RT FIFO写入函数与定时循环右数据节点之间的错误连线。
  4. 删除定时循环输出节点与合并错误函数之间的错误连线。
  5. 复制Active?变量,并将副本粘贴到定时循环内、RT FIFO写入函数的右侧。
  6. 将RT FIFO写入函数的错误输出输出端连线至定时循环中Active?变量的错误输入输入端。
  7. 右键单击定时循环中的Active?变量,从快捷菜单中选择访问模式»读取
  8. 在定时循环中的Active?变量右侧放置一个非函数。
  9. Active?变量的活动?输出端连线至非函数的x输入端。
  10. 在非函数的右侧放置一个或函数。
  11. 将非函数的非x?输出端连线至或函数的x输入端。
  12. 将定时循环中Active?变量的错误输出输出端连线至或函数的y输入端。
  13. 在定时循环的外部右侧放置一个条件结构。
  14. 将定时循环中Active?变量的错误连线连接到定时循环右数据节点的错误输入端。
  15. 将定时循环输出节点的错误输出端连线至条件结构的条件分支选择器。
  16. 选中选择器标签中的Error,在条件结构中放置Active?变量的副本。
  17. 右键单击Active?变量,从快捷菜单中选择访问模式»写入
  18. 将假常量连线至Active?变量的活动?输入端。
  19. 穿过条件结构连接错误连线,但不要将其连线至Active?变量。
    注: 确保选中选择器标签中的No Error,然后再次完成此步骤。
  20. 将离开条件结构的错误连线连接到合并错误函数的错误输入输入端。
  21. 删除定时循环循环条件中的“停止”按钮。
  22. 将或函数的x或y?输出端连线至定时循环的循环条件。
  23. 重复步骤3至22设置消费者循环,以与图像一致。
    注: 确保从RT FIFO读取函数到Active?变量的错误连线穿过条件结构。
  24. 保存该VI。

终止VI

在教程的这一部分,VI将持续运行,因为无法通过前面板将Active?变量更改为False。要停止VI,可以使用NI分布式系统管理器更改Active?变量的值。NI分布式系统管理器是一款非常有用的工具,可以在代码执行时监控网络发布的共享变量。

按照以下步骤关闭VI,无需使用“中止执行”按钮。

  1. 打开NI分布式系统管理器。
  2. 展开名称列中的网络项文件夹。
  3. 找到并展开RT终端根目录。
  4. 展开变量文件夹。
  5. 选择Active?变量。
  6. 自动视图窗口中,将新值设置为False
  7. 单击设置
  8. 关闭分布式系统管理器。

结果

运行VI时,如果Active?变量为False或LabVIEW检测到错误,循环将同步停止。