LabVIEW備忘録

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

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

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

f:id:labviewtips:20180103123848p:plain

AlertDiskEmpty_LV14.zip - Google ドライブ

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の保存パスを指定するたけ。一時ファイルをディスクに書き込むし、インボークノードなので連続処理への適用はご法度。

前回実行時の設定値を復元

開発環境の場合は現在の値を設定をデフォルトを都度すればよいが、exeを作ってしまうと毎回制御値の値がデフォルトに初期化されてしまう。Ctrl Val.Get Allを用いて全ての制御器値を取得、xml化してcfgファイルに書き込み/読み込みをすることで制御器設定を維持できる。バリアントをそのままxmlに平坦化すると上手くないようなので、一旦クラスタに分解している。

ControlValue.zip - Google ドライブ

読み込み側VI LoadContrlValue.vi
f:id:labviewtips:20170819100518p:plain

書き込み側VI SaveControlValu.vi
f:id:labviewtips:20170819102215p:plain


書き込み側の無効制御器指標に終了ボタンの指標を設定することで、次回実行時に終了ボタンがいきなりTrueとなることを防止している。

注)windowsUACの問題があるのでProgram Files以下にexeをインストールする場合は設定cfgが作成されません。