DAQmxデバイスのリセットまたはセルフテストをプログラム的に実行する

更新しました Oct 17, 2019

使用製品

Software

  • LabVIEW Full
  • LabVIEW Base
  • LabVIEW Professional
  • LabVIEW NXG
  • LabWindows/CVI Full
  • LabWindows/CVI Base

Programming Language

  • C# .NET
  • Visual Basic .NET

問題

Measurement&Automation Explorer(MAX)で使用可能なデバイスのセルフテストまたはリセットをプログラム的に実行したいのですが、対応する関数が見つかりません。これらの関数はどこで見つけることができますか?自分のプログラムでリセットまたはセルフテストを実装するどうすれば良いですか?

解決策

関数の場所

NI-DAQmx 8.9以降では、LabVIEWでDAQmxデバイスをセルフテスト関数またはDAQmxデバイスをリセット関数を使用できます。また、LabWindows/CVI、ANSI C、C#またはVisual Basic .NETでも同様にサポートされているため、DAQmx ResetおよびSelf-test関数を呼び出すことができます。

 

LabVIEW NXG:

DAQmxリセットVIおよびDAQmxセルフテストVIは、ダイアグラム上のハードウェアインタフェース>>NI-DAQmx>>デバイス構成パレットにあります。

 

LabVIEW:

DAQmxドライバ:
DAQmxデバイスをリセットVIおよびDAQmxデバイスをセルフテストVIは、ブロックダイアグラムで関数パレット>>測定I/O>>NI-DAQmx>>DAQmxデバイス構成パレットにあります。

従来型DAQドライバ:
​デバイスをリセットVIは、ブロックダイアグラムで関数パレット>>測定I/O»データ集録>>校正&構成パレットにあります。

 

LabWindows/CVIおよびANSI C: 

DAQmx ResetおよびSelf-test関数は、Libraries>>NI-DAQmx Library>>Advanced>>Device Controlにあります。 

DAQmxリセット: 
関数プロトタイプ: int32 DAQmxResetDevice (const char deviceName[]) 
例: int errorResult = DAQmxResetDevice("Dev1");

DAQmxセルフテスト: 
関数プロトタイプ: int32 DAQmxSelfTestDevice (const char deviceName[]) 
例: int selfTestResult = DAQmxSelfTestDevice("Dev1");

 

C# .NET:

C#でDAQmxリセットまたはセルフテストを実行するには、まずDAQデバイス用のDeviceオブジェクトが必要です。その後、Deviceオブジェクトに対してリセットまたはセルフテスト関数を呼び出すことができます。

DAQmxリセット:
関数プロトタイプ: void Device.Reset();
例:
Device dev = DaqSystem.Local.LoadDevice("Dev1");
dev.Reset();

DAQmxセルフテスト:
関数プロトタイプ: void Device.SelfTest();
例:
Device dev = DaqSystem.Local.LoadDevice("Dev1");
dev.SelfTest();

 

Visual Basic. NET:

Visual BasicでDAQmxのリセットまたはセルフテストを実行するのは、C#.NETに類似しています。.NETを使用するには、リセットおよびセルフテスト関数を呼び出すためのDeviceオブジェクトが必要です。

DAQmxリセット:
関数プロトタイプ: Public Sub Reset()
例:
Dim dev As Device = DaqSystem.Local.LoadDevice("Dev1")
dev.Reset()

DAQmxセルフテスト:
関数プロトタイプ: Public Sub SelfTest()
例:
Dim dev As Device = DaqSystem.Local.LoadDevice("Dev1")
dev.SelfTest()


 

関数の実装

デバイスをリセット関数は、通常、プログラムの最初または最後に使用されます。デバイスをリセット関数がプログラムの途中で使用されると、デバイスに関連付けられたすべてのアクティブなタスクを即座に中止し、ルートを切断してデバイスを初期化済みの状態に戻します。タスクを中止すると、現在アクティブな操作(たとえば、読み取りまたは書き込み)が即座に終了します。タスクを中止すると、タスクは不安定ですが回復可能な状態になります。NI-DAQmxでタスクを回復するには、DAQmx Start関数を使用してタスクを再起動するか、DAQmx Stop関数を使用してタスクを開始せずにリセットします。これらの関数の詳細については、NI-DAQmxのヘルプファイルを参照してください。



 

LabVIEWでのサンプルコード

下記は、リセットデバイスをプログラムの最後に配置したくLabVIEWで書かれたサンプルコードです。

 

  1. DAQmxタスクは、メインループの前に初期化され、タスク入力制御器を用いています。この例では、初期化手順は省略しています。DAQmxタスクを作成および設定する方法の詳細については、NI-DAQmxにおける10種類の関数の習得および多くのデータ集録アプリケーションに対処できる処理についてを参照してください。
  2. タスクを開始して、収集ループに入ります。
  3. 収集ループはデータ収集を処理します。この例では、データ収集は、1つのチャネルからNサンプルを連続的に読み取るように設定されています。ユーザが停止ボタンを押すか、エラーが発生すると、収集ループが終了して、プログラムがリセットデバイスポーリングループに入ります。
  4. リセットデバイスポーリングループは、現在のエラーをクリアして、デバイスをリセットします。ループはDAQmxデバイスリセットVIが成功するまで実行されます。
  5. すでに起動しているDAQmxタスクを開始するとエラーが発生するため、現在のDAQmxタスクを再開する前に停止します。
  6. プログラムが終了すると、タスクはクリアされて、残りのエラーはシンプルエラーハンドラVIで処理されます。

(オプション:)
DAQmxセルフテストデバイスVIを追加して、デバイスをリセットした後にデバイスが正しく応答するかどうかをテストすることができます。
 

追加情報

NI-DAQmx バージョン8.9より前にはセルフテストVIおよび関数がありませんが、デバイスリセット機能を使用する方法はあります。これは、MAXのセルフテストとほぼ同じで、わずかに多機能を提供します。このリセットは、アプリケーションを中止またはクラッシュにより正常に参照を閉じたり解放したりできない場合を考慮して、コードの先頭に追加することをお勧めします。

この記事はお役に立ちましたか?

いいえ