LabVIEW備忘録

National Instruments社のグラフィカル言語 LabVIEWに関する学習Blogです。

パネルアップデート更新を切り替えて高速化

UIの使いやすさ向上のためにプロパティノード変更を多用するとVIが非常に重くなるが、フロントパネル更新を一度Offしプロパティノードを変更してから再度更新をONすると、見掛けの変更にかかる処理が省かれるため一気に高速化することが多々ある。VBAでいうところのApplication.ScreenUpdating切替みたいなものです。

OFF処理
f:id:labviewtips:20180106233251p:plain

ON処理
f:id:labviewtips:20180106233514p:plain

ブール値が反転してるだけなのにわざわざ別名VIにしていのは、見た目でON/OFFを間違わないためです。エラーワイヤの入り口と出口に接続して使用する。

用例
f:id:labviewtips:20180106235744p:plain

ディスク残量に応じてアラートメッセージを出す

PCベース計測はストレージを安価に使えるのがメリットの一つで、ついつい大量のデータを記録領域に流し込みがちになるのだけれどもHDDといっても容量は有限なので、案外現場でディスク残量が足りなくなる事故が発生する。ファイルパスに噛まして残量でエラーメッセージを発生させれば、これを回避できる。呼ばれたタイミングでしかチェックしないので
長時間運転する用途であればウォッチドッグ化した方が良いかもしれない。

f:id:labviewtips:20180103123848p:plain

AlertDiskEmpty_LV14.zip - Google ドライブ

エラー処理

LabVIEWエラーコードは非LabVIEWユーザーに取っ付きにくいので、分かりやすく翻訳したリストをXML化しておき、エラー発生時にメッセージとして発生させるとユーザーフレンドリー。
f:id:labviewtips:20171230235136p:plain

こちらはリストXMLの書き込み側
f:id:labviewtips:20171230235723p:plain

WEBカメラのFPS評価

IMAQdxの手習いでUSBカメラの実効FPSをモード毎に評価した。カメラモードを積み上げてから、Time Targetsの間ループを回して、安定した最後のFPSをtxtに出力。
FPSカウントは何故かパレットには無く、\vi.lib\vision\Calculate Frames per Second.viにある。
f:id:labviewtips:20171223222250p:plain

Max hold

スペアナよろしく波形の最大値を記録する機能を実装した。シフトレジスタに波形各要素の最大値を入れて比較しているだけ。Reset端子にラッチボタンを接続すればクリアできる。
f:id:labviewtips:20171118173508p:plain
MaxHoldSingleWave_LV14.zip - Google ドライブ

下図は方形波+一様ノイズ信号(青線)が時間積算にしたがって方形波の最大値(赤線)に近づいていく様子が見て取れる。
FFT後の周波数波形などに適用すると威力を発揮すかも。
f:id:labviewtips:20171118172717p:plain

Advanced plotting toolkit

前回グラフをPNGに出力する話題をしたが、直接ライブラリから画像を生成する方法を紹介。
Advanced Plotting Toolkit

f:id:labviewtips:20170915001310p:plain

一見してわかるように中身はmatplotlibであり、そこそこ美麗な各種グラフを出力することが可能である。Picture表示器に出力されるだけなので案の定速度は低く、動的に計測データを表示するような場合は、グラフ更新間隔はせいぜい0.5s間隔が限度となる。また、日本語フォントを使いたい場合は力技で合成するしかない。

f:id:labviewtips:20170915001743p:plain

グラフをPNGに保存

グラフやチャートを瞬間的にスナップショットをしたい場合の選択肢は

  1. インボークノード⇒画像を取得
  2. インボークノード⇒画像をエクスポート
  3. 外部ライブラリなどに投げる

の3択になる。
1.はお世辞にも見た目が良いとは言えないLabVIEWのUIをそのまま保存してしまうので2.について紹介する(3については別途)。

f:id:labviewtips:20170910130323p:plain

グラフ制御器のリファレンスとPNGの保存パスを指定するたけ。一時ファイルをディスクに書き込むし、インボークノードなので連続処理への適用はご法度。