NI製品ディスカッション

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

データ取り込みを続けると動作が遅くなってしまうことの回避方法についての質問

測定器のデータを一定時間ごと(1秒ステップ程度)に取り込むviをつくって測定を行っています。
 
作成したviを動作させると、動作開始直後は軽快に動いてくれるのですが、時間がたつにつれて動作が遅くなってしまいます。
動作開始から2時間も過ぎると、1回の取り込みに2~3分くらい時間がかかってしまい全く使い物になりません。
viを一度閉じた後、再度開いてから動作させると最初のように軽快に動いてくれるので
メモリ(?)に一時記憶したデータが増えると動作が重くなり、viを一度閉じるとメモリに記憶されたデータがクリアされる、
といったことが原因だと思うのですが…。
 
そこで質問です。
 
(1) Labview上で、上記の赤字部分 と同じことができるような関数等はありますか?
(2) 別の方法で、動作が遅くなってしまうことを回避する方法はありますか?
(3) 他にも、このような連続データ取り込みを行う際に気をつけたほうがいいことがあったら教えてください。
 
使用環境
OS:WindowsXP professional (SP2)
CPU:Celeron 2.4GHz
メモリ:256MB
Labview7.1
 
PC環境が貧弱であることは認知してます。が、なにぶん会社所有のPCなのでどうにもなりません。
 
どうかよろしくお願いします。
0 件の賞賛
メッセージ1/2
5,500件の閲覧回数
日本ナショナルインスツルメンツの井関と申します。

メモリが問題になっているのであれば、まずはメモリが増えないようなプログラムにすることが改善点としてあげられます。例えば配列連結追加の関数などは実行毎にメモリを確保してしまいますので、効率がいい使い方とはいえません。
プログラム中でメモリ確保を繰り返しているような部分がないか、確認していただけますでしょうか。

(1)について
メインVIではおこなえませんが、サブVIであればサブVI中に使用したデータ領域のメモリを解放することができます。設定の仕方としては、"メモリ解放要求"関数のフラグ入力をTrueにし、サブVI上で実行します。そうしますと、サブVIの実行が終わるときに、メモリを解放します。

(2)(3)について
まずは、この動作が遅くなる原因がメモリにあるのか確認し、メモリであれば最初に書いたようにメモリ確保の関数を使わないことが回避方法になります。WindowsXPであればタスクマネージャーで時間が経過するにつれメモリ使用量が増えるかどうか確認します。
配列連結追加を使用している場合は、配列初期化や部分配列置換などに置き換えます。

ご参考になれば幸いです。
0 件の賞賛
メッセージ2/2
5,462件の閲覧回数