NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

一定周期でのデータ収録及び制御について

初めて投稿させていただきます.

 

只今,1サンプル毎に複数のデータを収録し,そのデータをフィルタ処理後,

MATLABscriptにより計算を行い,最適な電圧値を出力するといった制御プログラムを作成しております.

 

データ収録用のデバイスには『NI USB-6259 BNC』,プログラムにはDAQアシスタントの収録モード,1サンプル(オンデマンド)を用いています.

(当初は1サンプル(HWタイミング)を用いようと思っていましたが,USBタイプのDAQは対応していないとのことをこちらのディスカッションフォーラムで拝見しました)

 

サンプリングレートは50Hzで,Whileループ内に「次のミリ秒倍数まで待機」をおき,各種のデータはWhileループ停止後まとめてcsvファイルに保存という形をとっています.

 

また現状のプログラムではデータの収録,及び制御電圧の出力と同時に,加振台を作動させるための指令電圧を収録モードをNサンプルとして出力しています.

 

 

以上を踏まえての質問なのですが,

Whileループの回る速度を測定するために以下の添付ファイルのプログラムを制御プログラムに組み込んで時間を測定しているのですが,

測定後の配列データを見る限り一定周期で回っていないようです.どのようにプログラミングすれば一定周期での収録及び制御ができるでしょうか.

アドバイスをお願いします.

0 件の賞賛
メッセージ1/3
4,263件の閲覧回数

以下の感じで試して見ました。

 

20111iCDFEF4FBAE2EAB6A

 

20113i2EE97E808BAF25BB

 

この結果をどう捉えるかは、要求する精度によって変わります。

 

非リアルタイムOSの場合、定周期性が保証されていないので、

ループ内の処理内容、ループ外の処理内容、他のアプリケーションの動作によって

実行周期が変わってくると思います。

 

 

0 件の賞賛
メッセージ2/3
4,237件の閲覧回数

xyzz 様

 

返信ありがとうございます.

実際に試してみたところPCへの負荷を少なくすることで,whileループを一定周期で回すことができることが確認できました.

 

とりあえず今のところはこの状態で実験を行い,必要があればHWタイミングで測定が行えるDAQに買い替えたいと思います.

0 件の賞賛
メッセージ3/3
4,205件の閲覧回数