エラー -200278: LabVIEWで有限収集時にDAQmx読み取りVIからエラーが発生する

更新しました Nov 11, 2019

使用製品

Software

  • LabVIEW

Driver

  • NI-DAQmx

問題

有限サンプルモードに設定したアナログ入力タスクを実行すると、DAQmx 読み取りVIでエラー-200278が表示されます。
 

エラーコード-200278が<VI名>で発生

考えられる理由:
最後に集録されたサンプル以降のサンプルを読み取ろうとしました。集録が停止したため、位置とオフセットの組み合わせによって指定されたサンプルは有効になりません。 最後に集録したサンプル (ただし、それを超えない範囲) までのサンプルを選択する位置とオフセットを指定してください。最後に集録されたサンプルは、集録停止後に集録されたサンプル数の合計をクエリすることによって確認できます。


 

このエラーが発生するのはなぜですか?解決するにはどうすればよいですか?

解決策

このエラーは、DAQデバイスがデータの収集を停止した後にDAQmx 読み取りVIがデータを収集しようとしたときに発生します。
 

このエラーの一般的な発生の1つは、タスクが有限収集用に構成されているにも関わらず、DAQmx読み取りVIがWhileループ内で使用される場合です。DAQmxタイミングVIのサンプルモード入力が有限サンプルに設定されている場合、DAQデバイスは設定したサンプル数のデータを一度に収集するため、DAQmx読み取りVIが再度呼び出されるとデータ収集を停止して、エラー-200278を返します。
 

メモ: DAQmxタイミングVIのサンプルモード入力を明示的に設定しない場合、デフォルト値は有限サンプルです。連続サンプルを希望する場合は、この入力を明示的に構成する必要があります。
 

このエラーを解決するための解決策がいくつかあります。

 

 

解決策 1: Whileループを削除する

有限収集を実行している場合、有限の期間で設定したサンプル数の単一配列のみを収集しているため、Whileループはほとんど不要です。この場合、最も簡単な解決策は、下図のサンプルコードのように、Whileループを削除することです。


 

 

 

 

解決策 2: 連続サンプルモードに構成する

Whileループが必要な場合、別の解決策は有限サンプルではなく連続サンプルモードにタスクを構成することです。このオプションが選択されると、DAQデバイスはタスクが明示的に停止されるまでデータ収集を続けます。


 

 

 

 

解決策 3: Whileループで収集を再スタートする

有限サンプルモードでWhileループを使用する必要がある場合、最初の読み取りが完了した後、データの取得を継続するにはタスクを再スタートする必要があります。これは、下図のサンプルコードのように、ループ内でタスクを開始および停止することで実現できます。


 

メモ: パフォーマンスを改善するには、上図に示すように、Whileループに入る前にDAQmxタスクを手動でコミット状態に移行する必要があります。コミット状態およびその他のDAQmxタスク状態の詳細については、NI-DAQmxヘルプ:タスク状態モデルを参照してください。

 

 

 

解決策 4:  Whileループ内でDAQmxタスク完了確認VIを使用する

場合によっては、収集が完了する前にすべての有限サンプルからサブセット(一部のデータ)を取得する必要があります。この場合、収集するサンプルの総数より少ないサンプル数を手動で指定できます。

下図のサンプルコードでは、DAQmx読み取りプロパティのステータス>>チャンネル毎の有効なサンプル数を使用して、現在DAQmxバッファにあるサンプル数を判断し、その時点でバッファで使用可能なサンプル数の読み取り要求を行います。

DAQmx読み取りVIが呼び出された後、DAQmxタスク関数確認VIは、有限収集が完了したかどうかを判断するために使用されます。


 

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

いいえ