追加情報
DAQmxアプリケーションの読み取り速度は、読み取りごとに収集されるサンプル数と1秒あたりにおける読み取り数の2つの要因によって決まります。
読み取り速度とサンプルレートを同じに設定しても、プログラムは期待どおりの速度で実行できない場合があります。これはwhileループ内で処理していることが多く、各反復に予想以上の時間がかかる場合に発生します。これにより、DAQmx読み取りが期待どおりに行われず、サンプルがバッファに溜まります。以下に示すようなループベンチマーク手法を使用して、whileループが実際に期待される速度で実行されていることを確認できます。
追加のトラブルシューティングの考慮事項:有限サンプリングと連続サンプリングアプリケーションによっては、連続サンプリングを必要とせず、読み取り時に有限数のサンプルだけで事足りる場合があります。この場合、
DAQmxタイミングVIのサンプルモードを
連続サンプルの代わり、
有限サンプルに設定することを検討することができます。この構成では、サンプルが利用可能になるまでにすべてのループサイクルが待機します(つまり、1 kHzで100サンプルを読み取ると、読み取り時に0.1秒待つことになります)。これは、サンプルが読み取り間に失われ、読み取りが呼び出されるとすぐにサンプルが使用できなくなることを意味します。 ただし、上記のシナリオ2が発生していない限り、これによりエラーが軽減されます。
DAQmxプロパティノードによるバッファ監視バッファリングされた連続収集中に、現在の構成がバッファにどのように影響するかについての詳細情報を得る目的でバッファを監視することができます。収集中に利用可能な要素数が連続的に増加する場合は、最終的にバッファがあふれないように、上記のアクションの1つを行います。バッファで使用可能なデータ量を監視するには、DAQmx読み取りプロパティノードを使用して、
ステータス:チャンネル毎の有効なサンプル数
プロパティを読み取ります。
LabVIEWデータフローを制御して上書きエラーを回避するLabVIEWはデータフロー言語であり、ブロックダイアグラム上の位置に関係なく、VIまたは構造体がすべての入力を受け取るとすぐに実行できることを意味します。エラーワイヤを入力として使用して、VIまたは構造体が別のものよりも先に実行されないようにする手法は、この手法で役立ちます。エラーワイヤがVI AをVI Bに接続する場合、Aが実行され、エラークラスタがAからBに渡されるまで、Bは必要な入力をすべて保持しません。LabVIEWのデータフローの詳細については、
LabVIEWヘルプ: ブロックダイアグラムのデータフローを参照してください
連続的なDAQmx収集では、DAQmxタスクを開始VIが実行されてからDAQmxタスクを停止VIまたはDAQmxタスクをクリアVIが実行されるまで、バッファにデータが書き込まれます。DAQmxタスクを開始VIが実行されてから最初のDAQmx読み取りVIが実行されるまでの間、DAQmx PCバッファはデータで満たされています。この間隔が長すぎると、バッファが完全に満たされ、DAQmx読み取りVIがバッファからデータを取り出す前に初期データが上書きされて、エラー-200279が発生します。
以下のコードスニペットは、データフローの実行によってバッファオーバーフローエラーが発生する一般的なシナリオを示しています。最初のスニペットでは、DAQmxタスクを開始VIがファイルを開く/作成/置換VI(ポップアップダイアログを表示する)の後に実行されるという保証はないため、ファイルを選択している間に測定値はバッファをいっぱいにして、PCバッファを上書きする可能性があります。
この問題を回避するには、2番目のスニペットのとおりに各関数のエラー入力と出力端子を接続して、ファイルを開く/作成/置換VIの実行が完了した後でDAQmxタスクを開始VIが実行されるようにします。
ダイナミック信号収集(DSA)デバイスのサンプルレートナショナルインスツルメンツのDSAデバイスは、ノイズをシェーピングし歪みを低減することにより信号の完全性を最大限にする24ビットのデルタシグマ型アナログ-デジタルコンバータ(ADC)を使用します。これらの特化されたADCは、いくつかの利用可能なサンプルレートを達成するために離散的整数倍で分割されたマスタタイムベースを使用します。その結果、すべてのDSAデバイスには利用可能なサンプルレートの数が限られています。
たとえば、NI 9234には合計31個のサンプルレートがあり、最小サンプルレートは1.652 kS/sです。使用可能なサンプルレート値および数はDSAデバイスによって異なり、デバイス仕様マニュアルに記載されています。
NI 9234デバイスのサンプルレートがDAQmxタイミングVIまたはプロパティノードを使用して最小レートより下に設定されている場合、実際のサンプルレートはDAQmx APIのバックグラウンドでデバイスに使用可能な最小レートまで強制されます。したがって、実際に発生しているよりもはるかに低いサンプルレートで収集されている可能性があります。その結果、エラー-200279が発生する可能性があります。
データ収集にDSAデバイスを使用している場合、可能なサンプリングレートを考慮し、アプリケーションを適切に設計してください。
メモ: DAQmxタイミングプロパティノードを使用し、
サンプルクロック:レート
プロパティを読み取り、DAQmxタイミングVIで設定されたレートに関係なく、デバイスが実際に使用しているサンプルレートを確認してください。