在数据采集过程中自动重新连接以太网DAQ

更新 May 10, 2022

环境

硬件

  • cDAQ-9191
  • NI-9232

软件

  • LabVIEW

程式语言

  • C# .NET

我买了cDAQ 9191和NI 9232连续运行一个数据采集任务(超过1小时)。但是,cDAQ 系统由于未知原因停止了数据采集。有没有办法自动重新连接cDAQ?

策略
  1. 在每次获取数据之前预留机箱 (cDAQ 9191)。
  2. 如果 cDAQ 机箱失去连接,程序编码只是返回错误,但不会停止数据采集。

方法 1 在 NI MAX 中预留机箱
您可以在 NI MAX 中点击“Reserve Chassis”来预留 cDAQ 9191。





方法二:在LabVIEW中预留机箱
以下组件是遇到未知问题后重新连接机箱的主要因素:
  1. 外部 While 循环
    • 即使保留设备失败,也能保持 VI 运行。
  2. DAQmx 备用网络设备
    • 储备 cDAQ 9191
  3. 条件结构
    • 错误条件
      • 必须将FALSE常量链接到外部 While 循环条件接线端
    • 无错误条件


方法 3 用 C# 编程语言预留机箱
**NI提供其他编程语言示例API,通常在驱动程序中提供(例如:NI-DAQmx驱动程序)。在本文中,选择 C# 作为示例编程语言。 C# 编程资源可以参考链接.NET Resources for NI Hardware and Software - NI
  1. 确保在发生错误时不会停止 C# 代码。
    • 不幸的是,C# 是非 NI 编程语言,我们无法提供这部分的详细信息。
  2. 预留机箱代码:
    • DaqSystem.Local.AddNetworkDevice(" IPv4地址","机箱名称",超时);
    • DaqSystem.Local.LoadDevice("机箱名称").ReserveNetworkDevice();
  3. 数据采集代码部分下增加了Reserve Chassis 代码。

方法二:在LabVIEW中预留机箱
在 Labview.png 中预留机箱


方法 3 用 C# 编程语言预留机箱

private void startButton_Click(object sender, System.EventArgs e)
{
if (runningTask == null)
{
DaqSystem.Local.AddNetworkDevice("10.10.10.3","cDAQ9191-16E500C",10);
DaqSystem.Local.LoadDevice("cDAQ9191-16E500C").ReserveNetworkDevice();