05-30-2014 01:46 AM
お世話になります。
現在、LabVIEWを用いたサンプルソフトの動作確認をしているのですが、分からない部分があり質問させて頂きました。
機器を制御して測定を行うソフトなのですが、whileループ内に測定などの処理が記述してあります。
今まで知っていたソフトでは、「待機」「次のミリ秒倍数まで待機」などの機能でループの時間を調整していました。
現在、確認中のサンプルソフトのwhileループ内にはそのような処理がなく、添付ファイルの処理が記載されておりますが、
測定速度の設定を変えると、whileループの動作速度が変化します。
「待機」以外の方法でwhileループの速度を制御する方法を、ご教授頂けないでしょうか。
05-30-2014 02:51 AM
こんにちは。
ループの実行タイミング(正確には待機時間)は待機関数で制御する方法と、
タイムアウトが設定されている関数を使用する方法があります。
例としてはイベントストラクチャのタイムアウト設定(左上の青い砂時計のアイコン)やキューといった関数のタイムアウトの設定です。
これらの関数は関連している動作が呼び出されるまで、タイムアウトで設定された時間待機します。
ですので別に待機関数を配置して1秒待機させたとしても、タイムアウトが設定された関数が終了するまで、
同じループ反復で待機することになります。
今回、測定速度の設定を変えると動作速度が変化するということですので、測定の関数でタイムアウトの設定が適用されているかと。
測定関連の例では、例えばオシロスコープが毎秒1000データを集録するという設定で、
Labviewのプログラムや関数でそのデータを10000個まとめて読み取るという設定を適用すると、
10秒間待機するという動作になる関数もあります。そういった関数もタイムアウトの設定があると思いますので、探してみてください。
もし待機関数の待機時間を優先したいのであれば、上記の様な関数で読み取るデータ数を少なめにして、
少ないデータ量をより高い頻度で読み取るという方法もあります。
05-30-2014 04:41 AM
05-31-2014 12:11 AM
添付画像の処理は、ループの速度を制御するものではなく、グラフの更新するタイミングを制御するもののようですね。(多分Falseのケースではワイヤがストレートにつながっていると思います。)ループが例えば5ミリ秒ごとに回っても、グラフは100ミリ秒ごとに更新される用になっています。描画の頻度を落とすための工夫かもしれませんが、これはループ自体の周期を制御するためのものではないです。待機関数や次のミリ秒倍数まで待機関数とは全く異なるものです。