NI製品ディスカッション

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

USB6218のサンプリングについて

現在、USB6218(BNC)とmatlabのsimulinkを使用して、電圧値を取得しています。

7チャンネルを使用して毎秒100個のデータを計測しています。(10ms刻みに電圧を取得)

その際、取得したタイミングがわかるよう、USB6218でタイムスタンプを付加して接続しているPC(simulink)へデータを送っています。

 

取得したデータのタイムスタンプを見ると、計測開始してから100秒ほどまでは、0.01秒ごとにデータを取得しているのですが、それ以降から定期的に0.5秒のズレが生じています。

データを精査したところ、0.5秒の間のデータは取得できておらず、0.5秒後から再度データを取得し始めていました。

以下は例です。

0.00s    data1

0.01s    data2

...

1.49s    data149

1.50s    data150

2.00s    data151(1.50sから2.00sになるまでデータを取得していない)

2.01s    data152

...

 

データ取得時のサンプリングレートも高くないので十分10ms毎の値は取得できるように思えますが、いかがでしょうか。

データの取得が止まったり開始されたりする原因などありますでしょうか。

または、似た事例などありますでしょうか。

よろしくお願いいたします。

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

10msの刻みはどのように制御していますか?

USB6218でサンプリングクロックを用いてバッファ付き連続サンプリングしていますか?

それともソフトウェアループで10ms毎に1ポイントのデータを取得していますか?

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

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

USB6218にてサンプリングクロックとデータのブロックサイズを設定し、unbufferを用いて制御しています。

USB6218では、1秒間に2個のデータ(1個に50個のデータ)を出力し、合計で100個のデータを毎秒出力します。

それをunbufferを用いて50個のデータを1個ずつに分けて出力し、1秒間に100個のデータを出力します。

以下に、イメージ図を添付いたします。

 

usb6218.png

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

1秒間に2ブロックで、1ブロック50個、それを1個ずつに分けて出力・・・

simulinkのデータアクイジションの作法がわからないので的外れかもしれませんが、1秒間に100回の転送を行うのでしょうか?

 

ちなみにLabVIEWなどでは100S/sのデータを1個ずつ転送することはせず、数10個ずつブロック転送します。1回の個数によって1秒間に何回転送を行うかが決まります。

1秒間に100回(1回1個)の転送を行うこともできますが、安定度や他のタスクを妨げる懸念からまずやりません。(RTやFPGAは別)

 

Data Acquisition Toolboxなどは使っていますか?

 

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