NI製品ディスカッション

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

グラフデータを一定時間経過ごとに保存したい

すいません。

やり方がよくわからないので教えてください。

 

NI-USB6351を使用しています。

このDAQを用いて、1時間おきにデータをとり、さらに収録終了後に保存をするという

プログラムを作りました。

 

一定時間ごとに数十秒のロギングしたい為、「Daqmxロギングを構成でデータ保存」をするのではなく

whileループにシフトレジスタを設け、シフトレジスタを10段程度くみ、そのデータを「波形をファイルに書き込む」を用いて

データを書き込むようにしました。

ファイル名は時間で名前をつける為、都度新しいファイルを作ります。

 

ここでわからないことがあります。

whileループ内の「波形をファイルに書き込む」を実行するとエラーコード1 NewFileと表示され

データは保存されません。

whileループを抜けた後の「波形をファイルに書き込む」については保存がされます。

 

あと懸念しているのがもし保存が正常にできるようになってもデータを保存しているときにもロガーが動作している為

メモリがパンクすると思っています。これを回避するにはどうすればいいでしょうか?

 

お手数ですがご教示labview.jpgお願いいたします。

 

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

my_hiro73 様

 

エラー 1は、入力パラメータが無効であることを示しているため、
「波形をファイルに書き込む」VIに配線されているパスなどに問題がないかを確認したほうがよいと思います。

 

「メモリがパンクする」と懸念されておりますが、一番起こりえそうなことは、「DAQmx読み取り」VIでバッファ上書きエラーが発生することです。
あとは、サンプル数次第ですが、メモリフルエラーやファイルI/Oのオーバーヘッドによる処理時間の増加が考えられます。

 

下記のサンプルにあるように生産者・消費者デザインパターンでキュー関数を用いて別ループ処理にすれば良いと思います。

この例では、ディスクストリーミングなので、ファイルを開いておいて、収集しながら保存し続ける方法です。

 

DAQmx アナログ集録で集録したデータをCSV形式で保存

https://decibel.ni.com/content/docs/DOC-40751

 

以上です。

 

 

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

ご回答ありがとうございます。

おっしゃられていたように初歩的なミスでした。

 

キューの話も大変参考になります。

そのキューについて質問です。

使い方として、普段はグラフは見るだけで保存は定時間にしようと思ったら

普段はキューの排出にしておいてキューを抹消し、保存するときはデキューにして指定時間保存しておけばいいのでしょうか?

 

大変助かりました。

ありがとうございます。

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

生産者ループ側は常にエンキューしている状態であるため、消費者ループもデキューしておき、
必要なタイミングで保存するケースに切り替えるというので良いと思います。

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