LabVIEW備忘録

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

tdmsに画像を記録

tdmsに画像を記録する方法を考えてみた。内部的なファイルの添付はサポートされていないはずなので、LabVIEW画像データにパースしてから各種情報を生データとして書き込んだ。

f:id:labviewtips:20190129231519p:plain
書き込み
f:id:labviewtips:20190129231552p:plain
読み込み
記録データと画像データを同一ファイルに残せるのが利点。課題はDIAdemで画像を表示できない点。マクロ駆使すれば可能なのかもしれないが・・・。

LabVIEW NXG 3.0 雑感

先々LabVIEW 20XXと一本化されるであろうLabVIEW NXGについて、3.0が出たのでお試ししてみた。以下ファーストインプレッション。

メリット

  • ほぼ文法同じ。というかプログラムレスを盛んに宣伝してたけどExpressみたいに自動で生成するモードのことだったようでLabVIEW文法は健在。
  • UIがフラット化されて、デザインしやすい。現状でもシルバーがゴテゴテなためクラシックUI+Tを主に使っているので◎。
  • ブロックダイアグラムもわかりやすい。(エラー線がペーン下から上に上がったのは◎)
  • ブロックダイアグラムに追加した項目が一時保留され、フロントパネル側に切り替えたのちに配置場所を決定できる(逆も然)。
  • 日本語版では切りすてられた64bit化が実現。
  • アプリケーションビルダもかなりモダンになっている。

デメリット

  • 重い。基本機能以外の機能の対応も待たれる。
  • UIの細かいプロパティノードをいじるのは面倒そう。
  • パレット分類が結構変わってるのでなれるまで時間かかりそう。

f:id:labviewtips:20190115233251p:plain

リングバッファ/循環バッファ

DAQmxなどで取得した波形をまとめて長さを変えた上で処理したい場合は多々あると思うが、標準関数ではなかなか良い方法が思い浮かばない。そんな時には循環バッファを使うと良い。

Software Circular Buffer in LabVIEWSoftware Circular Buffer in LabVIEW - National Instruments

f:id:labviewtips:20181121234119p:plain

上段ループでDAQmxで読み取った波形をバッファに書き込み、下段ループで指定長分の直近値を読み込んでいる。

f:id:labviewtips:20181121234205p:plain

FFTのオーバーラップなどにも威力を発揮しそう。機能的グローバル変数で渡してるので複数使えないのと、結線がないため判りにくいのが難点。

マウスホイールでトリガ

計測PCからはなれた場所から計測開始トリガをかけるテクニック。ペーン上でホイールマウスのホイール(button3)がクリックされるのをイベントストラクチャで処理する。もちろんはハードウェア的にDIモジュールに何らかのボタンを接続してもよいが、ワイヤレスマウスを活用すれば非常に簡便である。下図ではBeepを鳴らしているが、実際は計測開始キューなどに割り当てると良い。

f:id:labviewtips:20181113232346p:plain

シミュレーションデバイスの波形をすり替え

MAXのシミュレーションデバイスは実機レスである程度の計測システムを構築することが可能であり非常に有用である。が、シミュレーションデバイスの吐き出すアナログ波形は正弦波のみであり、物足りなく感じる場面も多々ある。下記は熱電対のチャートをそれっぽくすり替えた例。
f:id:labviewtips:20180502013707p:plain

DAQ読み取りのデータを流しこむと実機っぽい温度チャートにしてくれる。
f:id:labviewtips:20180502014137p:plain
f:id:labviewtips:20180502015145p:plain

計測値をフィードバックして次の制御に移るようなシステムのデバッグにはよく使う波形のエミュレーションVIを用意しておいて極力実機レスでの完成度を高めるようにしている。

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

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 ドライブ