NI製品ディスカッション

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

データの保存に関して

数値データの保存に関して質問があります. 現在,compactRIOを用いて実験装置の制御を行っております. 数値データの保存には,スプレッドシートに書き込むを用いているのですが,パソコン上のファイルに直接書き込んでいるためか,サンプリング時間を5ms以下にすることができません. 1ms間隔でデータを保存したいのですが,どのようにすればよいのでしょうか? クラスタで一度1msで表示してから,クラスタ表示機からデータをコピーしてexcelに貼り付けるなどすれば,1msで保存することが可能なのですが,表示機は1024データ以上保存することができません. 全くの初心者ですので,至らない点があれば申し訳ありません. 宜しくお願い致します.
0 件の賞賛
メッセージ1/4
4,838件の閲覧回数

takattakaさん、こんにちは。

 

1024データでは少ない、というところまで理解できました。

ゴールとしては、

 1.●データまで取りたい。

 2.無限ループで取りたい。

のどちらでしょうか?

1ms間隔で無限にデータ取り続けるのは難しいと思いますので、どこかでは停止するのであれば、

下記のような方法はいかがでしょうか?

 

取りたいデータ量(あるいは時間)が決まっているのなら、先に「大きな」配列を作るのが良いと思います。

  関数 > 配列 > 配列初期化

を使います。

Whileループなどで、

 ・データ取得

 ・データを用意した配列に書き込み

 ・配列の、どの位置(指標といいます)に書き込むかをインクリメント

を、繰り返していけばいいはずです。

データ取得終了、あるいは、配列が満杯になったところで、保存、とする方法でいかがでしょうか?

 

注意点として、Whileループ内で配列の大きさを変更する(配列連結など)をすると遅くなりそうです。

(参考1:データのサイズを常時変更することを避ける

(参考2:VIの実行速度

 

以上、わたしCompact RIOを持っていないので、1msが実現できるか手元確認できませんが、ご参考になれば・・・。

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

takattakaさん、こんにちは。

 

別スレですが、「DAQmxによる多チャンネル同時計測におけるリアルタイム波形の遅れ

のほうに、

配列の処理時間の違いを示すサンプルを載せましたので、ご参考まで。

 

以上です。

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

S.A.Mさん,丁寧に返信していただいてありがとうございました.

 

実験装置のデータ処理のため,1ms間隔で50秒ほどのデータの取得を考えていました.

教えていただいた,配列でデータを保存する方法を試してみました.

今まで使用していた,「スプレッドシートに保存する」よりは実行速度が上がりましたが,データ取得と同時平行で複雑な計算による実験装置の制御も行っているので,なかなか1msでの保存ができないみたいです.

ループタイマーを用いてサンプリング時間を調節しているのですが,だいたい2msから,遅いときで8ms程度かかってしまうみたいです.

 

アドバイス,非常に参考にさせていただきました.

わざわざありがとうございました.

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