使用したRMS機能についてアドバイスを求められたので、コードを詳しく調べました。そして、私は厳しいかもしれませんが、それは意味がありません(ポイントごとに):
エンドユーザーに実行回数を要求してから、1回減算します。なんで?forループの前にデータを読み取ったためだと思います。(それを削除します)。
これにより、出力データにRMS平均化が追加され、シフトレジスタを使用して独自の計算をすべて失う可能性があります。
実際にデータを変更することなく、データをシフトするだけです。開始周波数をインクリメントすることにより、FFTをシフトします。したがって、55 Hzで検出された信号は、56Hzでプロットされません。エンドユーザーにとって、これは誤解を招く恐れがあります。
コードで注意する必要があることの1つは、継続的なサンプリングがないことです。forループを繰り返すたびに、データ取得が開始および停止されます。これは、キャプチャされた波形のt0をプロットすることで確認できます。一定の間隔で開始されないことに気付くでしょう。より良いアプローチは、最初の反復でExpressVIによって作成されたタスクを使用することです。
。
ただし、取得モードを「連続サンプル」に変更する必要があります。
最後の反復でタスクを閉じることを忘れないでください。