From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
ブロックダイアグラムでは、LabVIEWプログラムのグラフィカルソースコードを使用します。グラフィカルなソースコードをユーザインタフェースから論理的かつ簡素な方法で分離することが、ブロックダイアグラムの概念です。フロントパネルオブジェクトは、ブロックダイアグラム上では端子として表示されます。ブロックダイアグラム上の端子と、これに対応するフロントパネルオブジェクトは対になっており、どちらか一方を変更すると、もう片方にその変更が反映されます。
VIを新規に作成するかまたは開くと、フロントパネルは自動的に開きます。ブロックダイアグラムを表示するには、メニューバーからウィンドウ→ブロックダイアグラムを表示を選択します。また、<Ctrl+E> を押してブロックダイアグラムとフロントパネルを切り替えることもできます。
ブロックダイアグラムオブジェクトには、端子、サブVI、関数、定数、ストラクチャなどのほか、ブロックダイアグラムオブジェクト間でデータを転送するワイヤがあります。LabVIEWのさまざまなツールを使って、VIの作成、変更、およびデバッグが可能です。ツールとは、マウスカーソルの特殊な操作モードのことです。そのため、カーソルの操作モードは、ツールを選択した時点で、そのツールのアイコンに対応した操作モードとなります。LabVIEWでは、マウスカーソルの現在位置に基づいてツールが選択されます。また、ツールパレットから必要なツールを手動で選ぶこともできます (メニューバーから表示→ツールパレットを選択します)。このようにしてツールを選択できますが、選択したツールは次に別のツールをツールパレットから選ぶまで、選択されたままになります。
ブロックダイアグラム上にオブジェクトを配置するには、関数パレットから目的のオブジェクトをドラッグアンドドロップします。関数パレットは、ブロックダイアグラムワークスペース上の任意の場所で右クリックすると自動的に表示されます。関数パレットには関数、定数、ストラクチャのほか、サブVIがいくつか含まれます。
関数パレット上部にある2つのボタンに注目してください。
押しピンは、関数パレットをブロックダイアグラムに固定します。
検索ボタンは、関数を名前で検索できるようにする検索ダイアログボックスを開きます。
検索ボタンをクリックすると、関数の検索エンジンが起動します。起動には少し時間がかかります。
なかなか目的の関数が見つからない場合、このツールを使って関数を検索できます。
目的の関数が見つかったら、それをダブルクリックすると、関数パレット上でその関数が存在する場所に移動します。
メモ:以下の手順を実行して、関数パレット上に表示されるサブパレットを変更します。
1. 押しピンを使って、関数パレットをブロックダイアグラムに固定します。
2. 関数パレットをブロックダイアグラムに固定すると、表示ボタンが表示されます。
3. 表示を選択し、ショートカットメニューから表示カテゴリを変更を選択します。
4. 表示カテゴリを変更ダイアログボックスで、最も利用頻度の高いパレットを選択するか、またはすべて選択をクリックしてすべてのパレットを含めます。
ブロックダイアグラムの外観を変更するには、メニューバーからツール→オプションを選択します。オプションダイアログボックスのカテゴリからブロックダイアグラムを選択します。ここでブロックダイアグラムの外観をカスタマイズできます。ブロックダイアグラムのスペースを最大限使いたい場合は、フロントパネル端子をアイコンとして配置の選択を解除します。
フロントパネルのオブジェクトが、ブロックダイアグラム上では端子として表示されます。また、端子はフロントパネルとブロックダイアグラム間で情報を交換する入出力ポートです。テキストベースのプログラミング言語にはパラメータと定数がありますが、これらに相当するものとして、LabVIEWでも端子に制御器/表示器端子とノード端子という2つのタイプがあります。制御器端子と表示器端子は、フロントパネルの制御器と表示器に属するものです。
上図の例では、フロントパネル制御器のaとbに入力したデータは、それぞれ制御器端子のaとbを通ってブロックダイアグラムに渡されます。次に、このデータは「和」関数および「差」関数に渡されます。「和」関数および「差」関数で計算が終了すると、新しいデータ値が生成されます。それらのデータ値は表示器端子に渡されます。その結果、フロントパネル表示器のa+bとa-bが更新されます。
制御器、表示器、定数は、ブロックダイアグラムアルゴリズムの入力および出力として動作します。制御器は、フロントパネルから値を受け取り、他のブロックダイアグラムオブジェクトにデータを渡します。表示器は、ブロックダイアグラムロジックから値を受け取り、ブロックダイアグラムからフロントパネルへとデータを渡します。定数は、配線先のオブジェクトにデータを渡します。三角形の面積を計算するアルゴリズムを考えてみましょう。以下のフロントパネルとそれに対応するブロックダイアグラムがあるとします。
定数である三角形の乗数は、アルゴリズムがドキュメントとして記述される場合を除いて、フロントパネルウィンドウに必ずしも表示されません。この定数は、単にその値である.5を「積」関数に渡すだけです。底辺のBase (cm) と高さのHeight (cm) というブロックダイアグラム端子は、面積のArea (cm^2) 端子とは見た目が異なります。ブロックダイアグラム上の制御器と表示器は、2つの特徴によって区別することができます。1つ目の特徴は、データフローの方向を示す端子の矢印です。制御器の矢印はデータが端子から出ていくことを示していますが、表示器の矢印は端子にデータが入ってくることを示しています。2つ目の特徴は、端子を囲む枠です。制御器の方が表示器に比べ枠が太くなっています。
制御器と表示器は、ブロックダイアグラムまたはフロントパネルのどちらでも作成することができます。このチュートリアルでは、後のセクションで実際に作成します。
ノードとは、入力や出力を備えたブロックダイアグラム上のオブジェクトです。VIの実行時に、ノードはさまざまな操作を実行します。テキストベースのプログラミング言語におけるステートメント、演算子、関数、およびサブルーチンに類似しています。ノードには、関数、サブVI、ストラクチャがあります。ストラクチャとは、ケースストラクチャ、Forループ、Whileループなどのプロセス制御要素のことをいいます。これについては、後のチュートリアルで解説します。下の画像は、ブロックダイアグラムのノードの例です。
関数は、LabVIEWの基本的な操作要素です。関数にフロントパネルウィンドウやブロックダイアグラムウィンドウはありませんが、入力端子と出力端子を備えていて、制御器や表示器と同様にデータを受け渡すことができます。関数アイコンの背景は淡黄色ですから、これによってブロックダイアグラムオブジェクトが関数であるかどうかを判別できます。関数パレットには、実行する機能のタイプごとに関数がグループにまとめられています。たとえば、数値サブパレットには数値演算に使用する関数が集められています。
関数は数多くあり、そのタイプもさまざまです。下の画像はすべて関数で、背景は淡黄色となっています。
サブVIとは、別のVI内部から呼び出して利用するために作成したVI、または関数パレットから利用できるVIのことです。すべてのVIはサブVIとして利用することが可能です。ブロックダイアグラム上のサブVIをダブルクリックすると、フロントパネルウィンドウが表示され、そのブロックダイアグラムにアクセスすることができます。関数パレットにあるサブVIの例をいくつか下に示します。
ストラクチャにはForループ、ケースストラクチャ、Whileループなどがあり、いずれもプロセス制御に使用します。これらについては、後のチュートリアルで解説します。ストラクチャサブパレットは、関数パレットのプログラミングカテゴリから開くことができます。
下の画像はストラクチャの例です。ブロックダイアグラム上ではこのように表示されます。
ここからは、以下の手順に従って下図のようなブロックダイアグラムを作成します。
1. ツールバーからブランクVIを開きます。ファイル→新規VIを選択します。
2. プログラミングカテゴリの数値サブパレットから、2つの「積」関数をブロックダイアグラム上にドラッグアンドドロップして配置します。1つ目と同じ方法で、2つ目の「積」関数をブロックダイアグラム上に配置します。
ヒント:ブロックダイアグラムにオブジェクトをコピーするには、<Ctrl> キーを押しながらオブジェクトをクリック&ドラッグします。
3. 左側の「積」関数の上にマウスカーソルを移動すると、入力端子と出力端子が表示されます。いずれの端子でも、その上にマウスカーソルを置くと、ワイヤスプールとその端子名が表示されます。
y端子に制御器を作成するために、その上にマウスカーソルを置き、右クリックします。
同様に、左側にある「積」関数のx端子にも制御器を作成します。これで、どちらの入力端子にも制御器が備わります。
4. 左側の「積」関数の出力端子と右側の「積」関数のx端子の間にワイヤを配線します。それには、出力端子の上にマウスカーソルを置きます。カーソルがワイヤスプールに変わったら、クリックして押し下げたままワイヤを必要な入力端子までドラッグします。
5. 三角形の乗数である定数.5を作成します。それには、右側の「積」関数のy入力端子を右クリックしてショートカットメニューから作成→定数を選択します。定数の値を変更するには、定数をダブルクリックしてテキストをハイライト表示し、新しい値を入力します。.5 と入力して <Enter> キーを押します。
6. 右側の「積」関数の出力を右クリックし、ショートカットメニューから作成→表示器を選択して表示器を作成します。この表示器が、フロントパネルにブロックダイアグラムロジックの値を渡します。
ヒント:ブロックダイアグラムまたはフロントパネル上にコメントを記入できます。ブロックダイアグラムをダブルクリックすると、自動でテキストボックスが作成されるので、そこにコメントを入力します。
表示器、制御器、定数の名前を変更するには、ラベルをダブルクリックし、必要な名前を入力します。ラベルが表示されていない場合は、当該オブジェクトを右クリックし、表示項目→ラベルを選択します。
7. ここで、<Ctrl+E> を押すか、ウィンドウ→フロントパネルを表示を選択して、ブロックダイアグラムでの作業から生成されたフロントパネルを確認します。底辺のBase (cm) と高さのHeight (cm) という2つの制御器、および面積のArea (cm^2) という表示器が自動的に生成され、フロントパネル上に配置されています。このプログラムは、ツールバーアイコンについて学習した後で実行します。
VIを実行すると、以下のツールバーがブロックダイアグラム上に表示されます。このブロックダイアグラムツールバーにあるボタンのいくつかを使ってVIをデバッグできます。これらのボタンについては、後のチュートリアルに説明があります。
実行ボタンをクリックして、VIを実行します。LabVIEWでは、コードは自動でコンパイルされるため、自分でコンパイルする必要はありません。左のように、実行ボタンが白く塗りつぶされた矢印で表示されているときは、VIを実行できます。
作成中または編集中のVIにエラーがあると、実行ボタンが壊れた状態で表示されます。ブロックダイアグラムの配線を終了した後でも実行ボタンの矢印が壊れている場合、そのVIは壊れているので実行できません。このボタンをクリックすると、エラーリストウィンドウが表示され、エラーおよび警告のすべてが一覧で表示されます。
連続実行ボタンをクリックすると、ユーザが実行を中断したり停止したりするまでVIは実行を継続します。このボタンをもう一度クリックすると、連続実行が解除されます。
VIの実行中は、実行を中断ボタンが表示されます。VIを停止する方法が他にない場合、このボタンをクリックするとVIはただちに停止します。そのVIを使用する実行中のトップレベルVIが複数ある場合、ボタンは淡色表示になります。
注意:実行を中断ボタンをクリックすると、VIは現在の反復が終わらないうちにただちに停止します。外部ハードウェアなどの外部リソースを使用するVIを中断すると、そのリソースが適切にリセットまたは解放されないために、リソースの状態が不明なままになる可能性があります。この問題を回避するには、停止ボタン付きのVIを設計してください。
実行中のVIを一時停止するには、一時停止をクリックします。一時停止ボタンをクリックすると、実行が一時停止された位置がブロックダイアグラム上でハイライトされ、一時停止ボタンは赤色になります。VIの実行を続行するには、一時停止ボタンをもう一度クリックします。
テキスト設定プルダウンメニューを選択して、サイズ、スタイル、色など、VIの選択した部分のフォント設定を変更します。
オブジェクトを整列プルダウンメニューをクリックして、垂直、エッジ、左などの軸に沿ってオブジェクトを整列します。
オブジェクトを均等に整列プルダウンメニューをクリックすると、複数のフロントパネルオブジェクトを同じサイズに変更できます。
並べ替えプルダウンメニューをクリックすると、オブジェクト同士が重なっている場合に、どのオブジェクトが他のオブジェクトの前面または背面になるかを定義することができます。オブジェクトのうちの1つを位置決めツールで選択し、前面へ移動、背面へ移動、最前面へ移動、最背面へ移動のいずれかを選択します。
詳細ヘルプウィンドウを表示ボタンをクリックして、詳細ヘルプウィンドウの表示を切り替えます。
テキストを入力は、古い値を置き換える新しい値が利用可能であることを通知するために表示されます。テキストを入力ボタンは、このボタンをクリックする、<Enter> キーを押す、またはフロントパネルやブロックダイアグラムのワークスペースをクリックすると非表示になります。
では、作成したVIで連続実行ボタンをクリックし、フロントパネル上の数値を変更してみましょう。制御器の値aやbを変更すると、表示器の値a*bが更新されるのがわかります。
フロントパネルの各制御器に入力した値はブロックダイアグラムに渡され、ブロックダイアグラムロジックによって計算されます。その計算結果が、フロントパネル表示器に戻されます。
実行を中断ボタンをクリックしてVIを停止します。VIを保存して閉じます。それには、メニューバーからファイル→保存を選択し、フロントパネルウィンドウの右上隅にある閉じるボタンをクリックします。
ブロックダイアグラムは、あらゆる仮想計測器にとって最も重要な基盤となるものです。データフローをはじめ、フロントパネルへのデータの受け渡しなど、すべてを制御します。 LabVIEWプログラマにとって、ブロックダイアグラムの動作を明確かつ確実に理解することは必須です。