LabVIEW備忘録

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

2020年のLabVIEW

仕事が評価から設計側にシフトしたため、昨年までと比較してあんまり触れていない。突発的に計測器を動かす仕事が2つぐらい(納期各1日)案の定、ハード側の仕様を読み切れずにで手直しが発生。その他は趣味でIMAQを弄ったぐらいだった。 やはりというかNXG…

LabVIEW Community Edition

以前からHome bundleは結構安価で提供されていたが、ついに時流に乗ってCommunity向けフリー版が提供された。自分の周りではLabVIEW派は劣勢になりつつあるので、少しでも裾野が広がると嬉しい。 www.ni.com]

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

やる気になればなんでもできるのがLabVIEWの良いところだが、頑張りすぎずにシステムを素早く作るためには外部プログラムを積極的に活用したほうが良い気がしている。 下記はシステム実行関数を用いて圧縮アーカイバの7zを呼ぶ例。高サンプリングレートのtdm…

SetとMap

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

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

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

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

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

ドラッグアンドドロップ

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

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

3D

3Dモデル(STL)を読み込んで表示させる場合に分かりにくい項目を列挙していく。 ググってでてくるサンプルが古くて混乱する。8.4以前でのインボークノードSet Geometry相当が8.5以降だとSet Drawableに変更されている。 視点をマウスで動かす場合には、表示器…

tdmsに画像を記録

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

LabVIEW NXG 3.0 雑感

先々LabVIEW 20XXと一本化されるであろうLabVIEW NXGについて、3.0が出たのでお試ししてみた。以下ファーストインプレッション。メリット ほぼ文法同じ。というかプログラムレスを盛んに宣伝してたけどExpressみたいに自動で生成するモードのことだったよう…

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

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

マウスホイールでトリガ

計測PCからはなれた場所から計測開始トリガをかけるテクニック。ペーン上でホイールマウスのホイール(button3)がクリックされるのをイベントストラクチャで処理する。もちろんはハードウェア的にDIモジュールに何らかのボタンを接続してもよいが、ワイヤレス…

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

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

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

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

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

PCベース計測はストレージを安価に使えるのがメリットの一つで、ついつい大量のデータを記録領域に流し込みがちになるのだけれどもHDDといっても容量は有限なので、案外現場でディスク残量が足りなくなる事故が発生する。ファイルパスに噛まして残量でエラー…

エラー処理

LabVIEWエラーコードは非LabVIEWユーザーに取っ付きにくいので、分かりやすく翻訳したリストをXML化しておき、エラー発生時にメッセージとして発生させるとユーザーフレンドリー。 こちらはリストXMLの書き込み側

WEBカメラのFPS評価

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

Max hold

スペアナよろしく波形の最大値を記録する機能を実装した。シフトレジスタに波形各要素の最大値を入れて比較しているだけ。Reset端子にラッチボタンを接続すればクリアできる。 MaxHoldSingleWave_LV14.zip - Google ドライブ下図は方形波+一様ノイズ信号(…

Advanced plotting toolkit

前回グラフをPNGに出力する話題をしたが、直接ライブラリから画像を生成する方法を紹介。 Advanced Plotting Toolkit一見してわかるように中身はmatplotlibであり、そこそこ美麗な各種グラフを出力することが可能である。Picture表示器に出力されるだけなの…

グラフをPNGに保存

グラフやチャートを瞬間的にスナップショットをしたい場合の選択肢は インボークノード⇒画像を取得 インボークノード⇒画像をエクスポート 外部ライブラリなどに投げる の3択になる。 1.はお世辞にも見た目が良いとは言えないLabVIEWのUIをそのまま保存してし…

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

開発環境の場合は現在の値を設定をデフォルトを都度すればよいが、exeを作ってしまうと毎回制御値の値がデフォルトに初期化されてしまう。Ctrl Val.Get Allを用いて全ての制御器値を取得、xml化してcfgファイルに書き込み/読み込みをすることで制御器設定を…

tdms記録の勘所

tdmsファイルはなかなか良く考えられたファイルフォーマットであり、LabVIEWを使うならこれを活用しないと損である。が、何も考えないでtdmsに記録すると嵌る。時間チャンネルを生成する方法 http://www.kyowa-ei.com/jpn/download/product/special/ni_diade…

波形を間引く

入力波形を係数分だけ間引いた波形を返す。平均化や実効値計算などはしておらず、単純に点を間引いているだけである。グラフやチャートが重すぎる場合や、サンプリング設定を変更しないで記録データを間引きたい場合に使用する。 DecimateWaveforms.zip - Go…

DAQデバイスが認識されない

Q:NI MAX(Measurement & Automation Explore)上でCompactDAQデバイスが見えているけど型番が正常に認識されないのだけれど(下図)?A:シャーシやデバイスが対応していません。または、タスク数がシャーシ仕様の上限を超えています。図の場合は旧世代の9162に対…

NI Badging Pilot Program:学習プログラム

NIの認定資格を持っている人は既知かと思うが、Acclaimからデジタルバッジが付与させるようになった。CLAD/CLA/CLAや日本ではやってないCTD/CTAの他に、学習目安用のバッジ(資格ではない)がWebテスト合格者にも付与されるようだ。NI Badging Pilot Program:…

波形データをCSVで保存(絶対時間)

LabVIEWで初心者が戸惑うポイントの一つに波形データの概念がある。波形は値Y、開始時刻t0、データ間隔dt、属性attributesから構成されているため、直感的な横軸時刻、縦軸値のデータペアになっていないのである。複数チャンネルの波形データをcsvに保存する…

ループ実行時間を計測する

While Loopのエラー配線に接続し実行時間と回数を表示する。生産者/消費者デザインパターンなどの各ループに配置しておけば、コードのボトルネックが判別できる。エラー配線上に配置しているのは実行タイミングを明示化するため。ElapsedTimerbyError_LV14.z…

アナログ波形データのデータ量最適化(0)

NI社のCompatDAQシリーズを用いてアナログデータ収録を行う際のデータサイズについて検討する。簡単のため構成はNI cDAQ-9172 / NI 9221(±60 V、アナログ入力、800 kS/秒、8 Chモジュール)とする。 検証用として以下のコードを作成した。(もう少し複雑な処…