エラー -200284: DAQmx読み取りVIでサンプルが集録されないエラーが発生する

更新しました Aug 4, 2022

使用製品

ハードウェア

  • Chassis for SCXI

ソフトウェア

  • LabVIEW Base
  • LabVIEW Full
  • LabVIEW

ドライバ

  • NI-DAQmx

問題

DAQmx読み取りVIを使用しているLabVIEWプログラムを実行すると、次のエラーが発生します。

DAQmx読み取り(多態性).viでエラー -200284が発生しました。
考えられる理由:
要求された一部またはすべてのサンプルが集録されていません。

 

 
  • いつもこのエラーが発生するわけではなく、データの解像度を上げようとするとエラーが発生することがあります。このエラーが発生せずにサンプル数を増やすにはどうすればよいですか?

解決策

このエラーは、収集したサンプルを受け取る前にタイムアウトが発生したために発生します。このエラーに対する一般的な対処法は、以下のとおりです。ただし、すべての対処法を網羅しているわけではありません。
 

タイムアウト値を調整する:

DAQmx読み取りVIにはタイムアウト入力があります。タイムアウトは、サンプルが使用可能になるまで待機する時間(秒単位)を指定します。時間が経過すると、VIはエラーおよびタイムアウトが経過する前に読み取られたサンプルを返します。入力に何も配線していない場合は、デフォルト値の10秒が設定されます。タイムアウトを-1に設定した場合は、VIは無限に待機します。タイムアウトを0に設定すると、VIは一度要求したサンプルの読み取りをおこない、サンプルが得られない場合はエラーを返します。

サンプルレートが低い、もしくは読み取るサンプル数が多い場合、この設定時間を経過してエラーを返します。これに対処するには、サンプルレートやサンプル数を見合うようにタイムアウト値を増やします。一般的に、タイムアウト値は読み取るサンプル数をサンプルレートで除算した値より大きい数にする必要があります。

 

エラー処理で読み取りタイミングを後にする:

プログラムが読み取る信号の発生源となる機器を制御している場合、サンプルが読み取れるようになる前に遅延がある可能性があります。このケースでは、DAQmx読み取りVIを含むタスクは サンプルが読み取れるようになった後に開始されなくてはいけません。これは、エラーワイヤを適切に配線することで信号を生成する機器を制御するコマンドを送信後に、読み取りをおこなうようにすることが可能です。また、待機関数を使用することで、サンプルが使用可能になるために十分な時間を設定できます。

 

サンプルレートを増やす:

サンプルレートが低い場合、デバイスもしくはタスクに対して遅すぎるかもしれません。ハードウェアが要求するレートに対応できるかどうかを確認してください。タイムアウトがデフォルト設定で、1サンプル以上収集している期間のサンプルレートが0.1 Hzより遅い場合、レートを増やす必要があります。サンプルレートは、読み取るサンプル数をタイムアウト値で除算した値より大きい数にする必要があります。

 

読み取るサンプル数を減らす:

読み取るサンプル数が多い場合、カウンタ入力タスクに対してエラーが発生する可能性があります。読み取るサンプル数は、DAQmx読み取りVIがタイムアウト前に読み取ることができるサンプル数より多いかもしれません。タイムアウトがデフォルト設定で、対象のサンプルの周波数が1 Hzである場合、DAQmx読み取りVIは反復が完了する前に最大100サンプルを読み取る可能性があります。このケースでは、サンプル数が100より多い場合、DAQmx読み取りVIは存在する以上のサンプルを読み取ろうとするため、このエラーが発生します。 
 

開始トリガが正しく構成されていることを確認する:

トリガには、2つのオプションがあります。

  • 1つ目のオプションは、PFI/RTSI/Trig lineからトリガ信号を取得する方法です。このトリガが使用でき、ハードウェアが適切に信号をデバイスへ送信しているかを確認します。次に、ハードウェアがトリガを送信するラインをサポートすることを確認します。最後に、ソフトウェアタスクが適切なラインでトリガを受け入れているかを確認します
  • 2つ目のオプションは、同じデバイスで他のタスクからトリガを取得することです。ハードウェアがこの操作をサポートできるかを確認します。1つ目のタスクがトリガを提供し、2つ目のタスクは1つ目のタスクで作成したトリガをソース源としてトリガを構成します。ソフトウェアが正しくプログラムされていることを確認します。

 

外部タイミングが正しく構成されていることを確認する:

外部タイミングはタスクを参照しています。タイミングを異なるタスクもしくはデバイスから取得している場合、外部タイミングと見なされます。外部タイミングには、2つのオプションがあります。

  • 1つ目は、PFI/RTSI/Trig lineからクロック信号を取得する方法です。このクロックが動作していて、ハードウェアが適切に信号をデバイスへ送信しているかを確認します。次に、ハードウェアがクロックを送信するラインをサポートすることを確認します。最後に、ソフトウェアタスクが適切なラインでクロックを受け入れているかを確認します。
  • 2つ目のオプションは、同じデバイスで他のタスクからクロックを取得することです。ハードウェアがこの操作をサポートできるかを確認します。1つ目のタスクがクロックを構成して、2つ目のタスクは1つ目のタスクで作成したクロックをタイミングソースとして構成します。このケースでは、両方のクロックがソフトウェアで全く同じように構成していることを確認します。

追加情報

例:

下記にカウンタタスクがアナログサンプルクロックを使用する例を示します。

DAQmxタイミングVIのサンプルモード入力のデフォルトは、有限サンプルです。カウンタタスクに対するサンプルクロックは、連続サンプルに設定させる場合がありますが、配線していないとデフォルト値(有限サンプル)に設定されています。サンプルクロックはサンプル数/チャンネルへの配線がなくてサンプルモードが有限サンプルの場合は、レートをベースにデフォルトバッファサイズを設定します。バッファが満杯となる時点で、サンプルクロックは停止し、クロックソースが停止するためにカウンタタスクはカウントをラッチすることを停止します。連続サンプルに設定されているカウンタタスクは、タイムアウト値を越えるまでクロックエッジを待機し続けます。サンプルクロックソースを連続サンプルに設定することで、バッファ付きカウンタタスクに対してクロックエッジを提供し続けます。
 

MAXとDAQアシスタント

Measurement & Automation Explorer(MAX)は、目的を遂行するためのタスクを構成することができます。LabVIEWで設定したタスクが正しく動作するかどうかを、MAXで同じパラメータを構成して確認します。LabVIEWでは、すでに構成されているタスクから構成済みのコードを生成することが可能です。

DAQアシスタントを使用すると、タスクを構成することができます。また、DAQmxコードを生成して、コンピュータがタスクをどのように設定するかを確認することができます。