LabVIEW備忘録

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

2020年のLabVIEW

仕事が評価から設計側にシフトしたため、昨年までと比較してあんまり触れていない。突発的に計測器を動かす仕事が2つぐらい(納期各1日)案の定、ハード側の仕様を読み切れずにで手直しが発生。その他は趣味でIMAQを弄ったぐらいだった。
やはりというかNXGがお亡くなりになったとのことで、年末にLV20に更新した。個人的には英語版64bitで十分なのだが、ほかの人間が触ることを考えて日本語32bitもインストール。NIさんなんとかなりませんか?

来年の仕事

  • 計測システム(高速、ただし連続モニタではないような案件)

専用計測器のOSがwindowsになりつつあるので、計測器の中に直接書き込むシステムを考えている。ただ、tdmsは便利なので採用すると思う。Diademライセンス無くても、pythonでも読めるし。絶縁の問題で最近はDAQに食指が動かない。サーミスタぐらいは使ってもよいけど。

  • 昔作った個別viのTCP化

いまさらだけど、一つの評価システムを大きく作りすぎるのはよろしくないと痛感している。評価のエッジ部分はLabVIEWで最小限に作って、別途サーバプログラム(否LabVIEW)を構築する方にもっていきたい。

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

  • 作者:Mike Gancarz
  • 発売日: 2001/02/01
  • メディア: 単行本

来年の趣味

  • ロボットを動かしたい。

www.ni.com
ロボットコントローラっていうほどコントローラでないので(サーボでメカ制御はしてくれるけど、基本はティーチングプレイバックしかできない)、上位コントローラをLabVIEWでつくるのは面白そう。手持ちの産業用6軸があるので、遊んでみる予定。

コマンドラインexeを実行する(7z編)

やる気になればなんでもできるのがLabVIEWの良いところだが、頑張りすぎずにシステムを素早く作るためには外部プログラムを積極的に活用したほうが良い気がしている。
下記はシステム実行関数を用いて圧縮アーカイバの7zを呼ぶ例。高サンプリングレートのtdmsがちっと邪魔(だけど取っておきたい)という場合にbz2で圧縮したりしている(計算コスト/ファイルサイズのバランスが良い)。

f:id:labviewtips:20200321072152p:plain

前提条件 :7zのコマンドライン版7za.exeに環境変数からPathを通しておくこと。

SetとMap

LabVIEW2019でしれっとCollectionなる機能が追加されている。中身はSetとMapなど他の言語でよく見る機能であるのだが、これによって連想配列(dict)が使えることになるので相当便利。御多分に漏れず、旧バージョンへのコンバートが聞かないのでご利用は計画的に。
f:id:labviewtips:20190728235224p:plain

ケースストラクチャのデフォルト値

ケースストラクチャに未定義の値が入ると、デフォルトケースを実行するため、非常にデバッグし辛い。よってケースストラクチャにIs_Not_Defineみたいな値を設けてデフォルト値にした上でメッセージを出すようにしておくと、ミスに気が付きやすくて非常に便利。
f:id:labviewtips:20190722003157p:plain

DAQ物理デバイスで複数の名称を許可しない

DAQmx用の物理IOを指定する際にCtrlを押しながら選択すると複数デバイスが指定可能となる。が、これはLabVIEW特有のUI操作なので、LabVIEWのクセを知らない一般的なWindowsユーザーに操作させると、大概問題を引き起こす。よってこの機能を無効化し、デバイスをそれぞれ指定する方法がおすすめである。

f:id:labviewtips:20190624234334p:plain

パネルの面積は食われるが、不要なトラブルを回避できるし、デバイスを配列にまとめてしまえば、Forループに通すだけで処理できるので、意外とコンパクトに記述できる。

ドラッグアンドドロップ

LabVIEWにおいてドラッグアンドドロップを受け付けるのはテキストベース表示器のみである。画像を受け付けたい場合の作例を以下に示す。ファイルパス制御器のなかにそれっぽく2Dピクチャ表示を張り、そこにD&Dされたらイベントで画像を表示させている。
f:id:labviewtips:20190623014852p:plain
f:id:labviewtips:20190623013354p:plain