LabVIEW備忘録

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

3Dモデル(STL)を読み込み表示する

3Dモデル(STL)を読み込んで表示させる場合に分かりにくい項目を列挙していく。

  • ググってでてくるサンプルが古くて混乱する。8.4以前でのインボークノードSet Geometry相当が8.5以降だとSet Drawableに変更されている。

f:id:labviewtips:20190609063257p:plain

  • 視点をマウスで動かす場合には、表示器の上で右クリック→カメラコントロール→球を選択。

f:id:labviewtips:20190609063127p:plain

以降随時更新

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