LabVIEWとは
LabVIEWはnational instruments社が開発したグラフィカルプログラミング言語でPCのデスクトップを仮想的な実験装置として使えるように開発されている。 もっとも大きな特徴として、グラフィカル言語というようにプログラムには従来のテキストベースの言語ではなく、あたかもフローチャートをそのままプログラムにするかのような設計理念で開発を行う。 プログラムに使える要素としては多くのプログラミング言語と引けを取らないほど充実した関数が用意されており、ほかのプログラミング言語の習得者にとっても、使い応えのある言語であろう。 計測機器などハードウェアとのインターフェースも充実しており、効率的な実験には書くことのできないソフトウェアである。
仮想的な実験装置(バーチャルインスツルメンツ,VI)として備えた表現力は、GUI OSのプログラミング時の障壁をだいぶ下げてくれる。 たとえば、グラフを表示させたければすでにグラフ表示器が用意されており、そのためのプログラムに時間を取れることがない。 Windowsのプログラムを経験された方は、グラフ1枚表示させるのに非常な苦労をすることをご存じだろう。 この開発速度の速さこそがLabVIEWのもっとも威力を発揮するところであり、結果として、ユーザーは自分のやりたい実験、解析に注力できる。
LabVIEWの画面
LabVIEWの画面構成は図のようになっている。 *ずフロントパネル *ずブロックダイアグラム
ずフロントパネルはフロントパネルと呼ばれる画面であり、LabVIEWで開発する仮想測定装置(VI)のユーザーインターフェースとなる。 一方、ずブロックダイアグラムはブロックダイアグラムと呼ばれており、仮想測定装置の内側の処理すなわちプログラムの中身を書き込む部分である。 LabVIEWを使ったプログラムでは主にこのフロントパネルとブロックダイアグラムの両方を交互に開発することになる。
0入力、1出力
ハローワールド
1入力、1出力
入力1つ出力1つの簡単なVIを作ってみよう。(√、逆数の計算など)
2入力、1出力
四則演算
forループその1(シフトレジスタを使わない)
iは0からN-1まで変化する ##0-2πまで変化するチャートを表示 ##1回の実行で5回振動するチャートを表示するプログラム
forループその2(シフトレジスタを使う)
##1から100までの和を求める。
配列
配列はデータをいくつかまとめて扱うための構造であり、浮動小数(オレンジ色)、整数(青)だけでなく、文字列(ピンク色)、Bool(緑)といったLabVIEWで扱えるデータ型は配列として格納することができる。 配列をつくるにはブロックダイアグラム上からは 関数パレット»プログラミング»配列 にある配列定数や配列連結追加などが使える。(余談だが配列連結追加よりは英語名のBuild arayの方がこの場合の機能としてはわかりやすい) フロントパネル上ではいずれのスタイルにも含まれる配列、行列&クラスタパレットから作成する。 LabVIEWにおける配列のカウントは0番目から。(c言語と一緒)
forループと配列
LabVIEWにおいても、ほかの言語と同様にforループと配列の相性は良い。 そのため慣れると便利な機能がある。 ##forループに入るとき forループに配列が入るときデフォルトで指標づけが使用される。 これは配列をforループに接続するとforループの各ループで配列の要素が呼び出される。 1回目のループでは0番目の要素が、2回目のループでは1番目の要素が流れてくる。 そのループのi番目の要素がほしいだけならforループにつなぐだけでそれが取得できるのである。(iは0からN-1まで) この場合Nを指定しなくても、ループの回数は配列の要素数で決まる。 いくつかの配列が接続された場合やNを指定した場合は、その中でもっとも少ない回数だけループする。(Nもその値に制限される)
配列自体をforループ内で操作したいときはforループへ接続した点上で右クリックして 指標づけ不使用 に設定すればよい。(この操作で指標づけ使用、不使用が切り替えられる)
forループから出るとき
forループからある値を出力するときデフォルトで指標づけされる。 つまり、ひとつ次元が上の配列になる。 変数であれば1次元配列に、1次元配列であれば2次元配列になる。 その次元の大きさはループの回数であり、各ループごとの結果が順番に配列に格納されている。 ループの最後の結果のみ必要な場合はforループの縁の出力する点を右クリックし 指標づけ不使用 にすればよい。
お約束
- LabVIEWはNI社の製品です。本サイトはLabVIEWを手軽にプログラミング、テストするツールとして用いているだけで特定の企業の製品の宣伝を目的とはしておりません。また、本記事により、利益、不利益を被っても本サイトは責任をとれません。自己責任でお願いします。