この記事で扱っていること
- 最大や最小の情報を残したチャートやグラフ表示
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
LabVIEWでチャートとグラフは似て非なるものであることは別の記事で取り上げていました。
チャートは過去のデータも表すことができるのに対し、グラフは通常過去のデータを表わすことができません。
ただもちろんグラフ表示器に渡すデータとして「過去のデータの配列」+「新しいデータの配列」とした配列を配線すれば過去のデータも表すことができます。
ただし、配列として残しておくデータを際限なく増やしてもグラフが見づらくなるだけなのでこれを行うのに効率的な方法がないかと考えてみました。
どんな結果になるか
まずぱっと思いつくのは以下のようなプログラムです。配列連結追加を使っています。
とはいえ、これでは際限なく配列が増えてしまうため実用的であるとは言えません。実行しっぱなしではメモリ不足のエラーにつながります。
配列の扱いを工夫して、配列連結追加を使用しない方法であったとしても、結局配列のデータ数に上限を設ける(配列初期化のサイズで決まります)ため、やがて過去のデータは表示されなくなります。
そこで、さらに工夫して、過去のデータの全体を見る必要はないと割り切って、過去のデータの一部だけ、最大値と最小値を残すことができないかと思いプログラムを組んでみました。
プログラムの構造
そもそもチャートであれば、例えば以下のようなプログラムとすることで過去のデータも含めて最大と最小を常に表示させておくようにすることができます。
なお、シフトレジスタの初期値に正の無限、負の無限を使用しています。初めから、ループ内で扱う数の最大値や最小値が分かっていれば、それぞれその値よりも小さい、大きい値を最大や最小の初期値としておけばいいのですが、わからない場合には正負の無限を初期値にするのが無難です。
グラフも基本的な考え方は同じなのですが、チャートと違いカーソルが使用できるため、カーソルによって最大値と最小値の値を表示し続けるようにしました。こうすることで、過去の最大値と最小値と現在のグラフプロット(配列)の大小関係を一目で確認することができると思います。
プロパティは「アクティブカーソル」および「カーソル>>カーソル位置>>カーソルY」を二つのカーソルそれぞれに対して設定しています。
ただし、もし上記のようにカーソルを使用する場合、フロントパネル上に波形グラフ表示器を置いただけでは使用することができません。グラフにあらかじめカーソルを二つ用意した状態でプログラムを実行する必要があります。
カーソルは波形グラフを右クリックしてカーソル判例を表示させてから用意します。上の例だと二つのカーソルを使用しているので、凡例上でカーソルを2つ作成します。
チャートは、その表示形式の都合上(おそらく単なる数値表示器扱いなので)からかカーソルという概念がありません。なのでグラフのみに許された表示方法になります。
参考にして頂けたら嬉しいです。
ここまで読んでいただきありがとうございました。
コメント