DAQmxイベント

Contents

概要

LabVIEWのNI-DAQmxイベントは、データ集録ハードウェアで特定条件に一致すると、ハードウェアまたはソフトウェアの割り込みで信号を生成する方法を提供します。NI-DAQmxイベントを使用する主な利点は、NI-DAQmxがマルチスレッドのため、プロセッサを集中的に使用しないこと、およびDAQデバイスの他のドライバ呼び出しへのアクセスをブロックしないことです。

NI-DAQmxイベントはPCバッファの監視に使用でき、DMAデータ転送と併用して使用することもできます。ただし、PCIバスを介したデータ転送に使用することはできません。

NI-DAQmxイベントは、ハードウェアレベルとソフトウェアレベルの両方で生成できます。

NI-DAQmxハードウェアイベント

一般的に、トリガとクロックは入力信号ですが、サンプルクロックなどのエクスポート可能なトリガとクロックは出力信号にもなります。対応するトリガやクロックを持たない出力信号は、ハードウェアイベント呼ばれます。イベントは、デバイスの状態変化、特定の種類のサンプル受信、一定数のサンプル生成、および指定時間の経過を示すために生成されます。

NI-DAQmxには以下のハードウェアイベントがあります。

  • アドバンス完了イベント ― スキャンリストの指示の実行終了時にスイッチが出す信号。
  • AIホールド完了イベント ― 測定対象の物理チャンネルでアナログ信号がラッチまたはホールドされた時にマルチプレクサのアナログ入力回路が出す信号。AIホールド完了イベントは、外部マルチプレクサに次のチャンネルへのスイッチを促す合図となります。この信号は、従来はSCANCLKという発信元の外部端子名で呼ばれていました。
  • 変化検出イベント ― データラインで変化を検出した後にDIOデバイスが生成する信号。
  • カウンタ出力イベント ― ターミナルカウントに達するとカウンタにより生成される信号。
  • ハンドシェイクイベント ― ハンドシェイクに使用されるDAQデバイスにより生成される信号。このイベントのアサートとアサート解除の時間は、デバイスのハンドシェイクサイクル内で構成可能です。これらのデバイスにおいてデフォルト構成は疑似8255プロトコルが使用されます。つまり、このイベントが、入力タスクではデバイスのFIFOに空きがある場合にアサートされ、出力タスクでは有効なデータがデータラインにある場合にアサートされます。また、入力タスクと出力タスクの両方において、ハンドシェイクトリガがアサートされるとこのイベントはアサート停止します。
  • 転送準備完了イベント ― DAQデバイスが転送準備完了であることを周辺デバイスに通知する信号。バーストハンドシェイク出力タスクについて、これはデータがデータライン上にあることを示します。入力タスクでは、デバイスのFIFOに空きがあることを示します。このイベントは、バーストハンドシェイクタイミングをサポートするデバイスで使用されます。
  • サンプル完了イベント ― デバイスがタスクの各チャンネルからサンプルを集録すると生成される信号。
  • ウォッチドッグ制限時間経過イベント ― ウォッチドッグの制限時間を経過すると生成される信号。
     

LabVIEWでこれらのイベントを設定するにはDAQmx信号のエクスポートプロパティノードを使用します。図1に示す通り、これはLabVIEWで、測定I/O » DAQmx-データ集録 » DAQmx上級タスクオプション » DAQmxエクスポート信号を選択します。




図1. DAQmx信号のエクスポートプロパティノード

図2に示す通り、DAQmx信号のエクスポートプロパティノードを使用すると、AIホールド完了イベント、変化検出イベント、カウンタ出力イベントなどのイベントの多態性インスタンスを選択できます。



図2. カウンタ出力イベントプロパティ

他のものは、LabVIEWの、測定I/O » DAQmx-データ集録 » DAQmx上級タスクオプションサブパレット、および » 測定I/O » DAQmx-データ集録 » DAQmxデバイス構成 » ウォッチドッグサブパレットにあります。

DAQmxソフトウェアイベント

ソフトウェアイベントは、一連のDAQイベントの非同期通知メカニズムとしての役割を果たします。ハードウェアイベントとは異なり、ソフトウェアイベントではスレッドを使用してデータが用意されるまで待機する必要がありません。イベントベースでプログラミングすると、データ待機中にも動作を継続するアプリケーションを、マルチスレッドアプリケーションを開発することなく作成できます。

NI-DAQmxには以下のソフトウェアイベントがあります。

  • Nサンプル毎バッファへ集録イベント ― ユーザが指定した数のサンプルがデバイスからコンピュータのバッファに書き込まれたときに発生します。このイベントはバッファタスクをサポートするデバイスでのみ動作します。
  • Nサンプル毎バッファから転送イベント ― ユーザが指定した数のサンプルがコンピュータのバッファからデバイスに書き込まれたときに発生します。このイベントもバッファタスクをサポートするデバイスでのみ動作します。
  • 完了イベント ― タスクが実行を完了するか、エラーによってタスクが終了した場合に発生します。タスク終了の原因にはならない修復可能なエラーでは、このイベントは発生しません。また、「タスクを停止」関数/VIを呼び出して実行を完了した場合も、このイベントは発生しません。LabVIEWでは、測定I/O » DAQmx-データ集録 » DAQmx上級タスクオプションにあるDAQmxタスク完了プロパティノードを使用します。
  • 信号イベント ― 指定されたハードウェア信号が生成されると発生します。このイベントは、カウンタ出力イベント、変化検出イベント、サンプル完了イベント、サンプルクロックなどをサポートしています。
     

図3は、イベント応答アプリケーションのブロックダイアグラムです。このインスタンスのイベントはデジタルラインPFI0の立ち上がりエッジです。応答はタイミングループストラクチャの実行です。これは、デジタルラインをline0に設定しています。タイミングループとDAQデバイスを使用してリアルタイムイベント応答アプリケーションを作成するには、「タイミングソースを作成(DAQmx Create Timing Source)」VIを使用する必要があります。




図3. 「タイミングソースを作成」VIを使用してイベントを作成する

関連​リンク

Was this information helpful?

Yes

No