エラー 20023 またはエラー 20020: フィルタVIからエラーが発生する

更新しました Apr 3, 2023

使用製品

ソフトウェア

  • LabVIEW

ドライバ

  • NI-DAQmx

問題

プログラム内で使用しているフィルタVIが、以下のエラーのうちの1つを返します。
 

エラー -20023: Analysis: 0≦f_low≦f_high≦fs/2 という条件を満たさなければなりません。


または、


エラー -20020: Analysis: カットオフ周波数fcは、0≦fc≦fs/2 という条件を満たす必要があります。


このエラーが発生するのはなぜですか?

解決策

このエラーの考えられる理由は、次のとおりです。


 

・ カットオフ周波数が無効

任意タイプのフィルタ(ハイパス、ローパス、バンドパス、バンドストップ)を使用する際は、カットオフ周波数の上限や下限が次の基準を満たす必要があります。
 

0 < flow ≦ fhigh ≦ fs/2


ここで、flowはカットオフ周波数の下限、fhighはカットオフ周波数の条件、fsはサンプリング周波数です。

これは、カットオフ周波数の下限がゼロに等しくならないことを意味します。さらに、上限は波形サンプリングレートの半分を超えてはいけません。




 

・ データ配列が波形情報なしでフィルタVIに渡されている

配列を入力に配線すると、ほとんどのフィルタVIは自動的にダイナミックデータへ変換 Express VIを配列と入力の間に配置しますが、これでは新しいダイナミックデータに時間データがありません。フィルタVIは、dt(サンプル間の時間(秒))を把握する必要があります。以下に示すように、波形作成VIに置き換えることで、dtを含む波形配列に構成することができます。



 

また、データの発生源を確認する必要があります。VIからデータを取得していて出力が配列の場合は、コンテキストメニュー(右クリック)で出力タイプを波形に変更することができます。



 

・ 波形配列がフィルタに渡されている

波形配列を単一のフィルタに配線すると、フィルタは各信号に対してフィルタ処理された信号を表示できなくなり、エラーが発生します。複数の信号をフィルタ処理する場合は、各信号を独自のフィルタに渡すように、信号配列に指標を付けます。


 

・ cDAQシャーシを使用している場合、モジュールごとに許可されている以上のタスクを実行しようとしている

実行しようとしているDAQmxタスクの数が、使用しているcDAQシャーシで許可されているタスク数と一致していることを確認します。あまりにも多くのタスクを実行している場合は、以下に示すように、1つのタスクに複数のDAQmxチャンネルを作成VIを組み合わせます。



 

これを行う方法の手順は、チュートリアル: LabVIEWでNI-DAQmxを使用してアナログ入力Cシリーズモジュールを同期させるにも記載されています。