07-28-2010 12:59 AM
初めて投稿させていただきます.
只今,1サンプル毎に複数のデータを収録し,そのデータをフィルタ処理後,
MATLABscriptにより計算を行い,最適な電圧値を出力するといった制御プログラムを作成しております.
データ収録用のデバイスには『NI USB-6259 BNC』,プログラムにはDAQアシスタントの収録モード,1サンプル(オンデマンド)を用いています.
(当初は1サンプル(HWタイミング)を用いようと思っていましたが,USBタイプのDAQは対応していないとのことをこちらのディスカッションフォーラムで拝見しました)
サンプリングレートは50Hzで,Whileループ内に「次のミリ秒倍数まで待機」をおき,各種のデータはWhileループ停止後まとめてcsvファイルに保存という形をとっています.
また現状のプログラムではデータの収録,及び制御電圧の出力と同時に,加振台を作動させるための指令電圧を収録モードをNサンプルとして出力しています.
以上を踏まえての質問なのですが,
Whileループの回る速度を測定するために以下の添付ファイルのプログラムを制御プログラムに組み込んで時間を測定しているのですが,
測定後の配列データを見る限り一定周期で回っていないようです.どのようにプログラミングすれば一定周期での収録及び制御ができるでしょうか.
アドバイスをお願いします.
07-28-2010 06:40 AM
以下の感じで試して見ました。
この結果をどう捉えるかは、要求する精度によって変わります。
非リアルタイムOSの場合、定周期性が保証されていないので、
ループ内の処理内容、ループ外の処理内容、他のアプリケーションの動作によって
実行周期が変わってくると思います。
07-28-2010 09:54 PM
xyzz 様
返信ありがとうございます.
実際に試してみたところPCへの負荷を少なくすることで,whileループを一定周期で回すことができることが確認できました.
とりあえず今のところはこの状態で実験を行い,必要があればHWタイミングで測定が行えるDAQに買い替えたいと思います.