解決策
このエラーは、収集したサンプルを受け取る前にタイムアウトが発生したために発生します。このエラーに対する一般的な対処法は、以下のとおりです。ただし、すべての対処法を網羅しているわけではありません。
タイムアウト値を調整する:
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つ目のタスクで作成したクロックをタイミングソースとして構成します。このケースでは、両方のクロックがソフトウェアで全く同じように構成していることを確認します。