1986年のLabVIEW1(インタプリタ)の発表から1990年LabVIEW2,1993年LabVIEW3とバージョンアップを重ねてきたLabVIEWが,8月下旬にLabVIEW4(図1)
としてパワーアップして登場しました。
旧バージョンのLabVIEW3.xを使用して作成したアプリケーションVI(Virtual Instruments)は,そのままLabVIEW4上で問題なく実行することができますが,3.x以前のLabVIEWのアプリケーションは一度3.xのVIに変更した後で実行することになります。
Macintosh版については,完全にPowerPC対応LabVIEWとなりました。そのため,LabVIEW2.2以前に作成したCIN(コード・インターフェース・ノード)を用いたアプリケーションは,PowerPCに対応するようにCINの変更が必要になります。
旧バージョンでプルダウンメニューにあった[制御器],[関数],[ツール]はフローティングパレットになりました。
文字表示のプルダウンメニューは,図2
のアイコンが表示されるパレットへと変わりました。
フロントパネルをアクティブにすると,[制御器]のメニューが現れ,ダイアグラムをアクティブにすると[関数]のパレットが自動的に現れます。
また,パレットからそれぞれの制御器,関数を選択する際のサブメニューは,左上に「押しピン」がデザインされ,マウスのドラッグで「押しピン」が立ち,サブメニューを常時開いておくことができるようになりました。(図3)
バージョンアップによる変更点のほとんどがこのメニューを中心としたユーザーインターフェースの変更で占められています。
LabVIEW3.xから日本語版が発売され,メニューが日本語となりましたが,今回のバージョンアップでは英語メニュー等の日本語への変更が大幅に行なわれています。
ヘルプウィンドウが図4
のように日本語化されているので,ずいぶんLabVIEWの英語に抵抗があった方には使いやすくなりました。ただし,関数等のアイコン名の中で,日本語になおすと逆に分かりにくくなるものは英語のままです。
今までの編集ツールに計測制御特有のツールが追加されています。(図5)
ポップアップメニュー・ツール スクロール・ツール
ブレークポイント・ツール プローブ・ツール
カラー・ツールもグラフィック言語なだけに,次の機能が強化されています。
カラーピッカー カラー・ツール
中でも,ブレークポイント,プローブツールは計測制御アプリケーションのデバッグには特に役立ちます。
ダイアグラム中のワイヤをこれらのツールでクリックするだけで,実行中のデータを確認することができます。
図6
がプローブツールの実行例です。ダイヤグラム上のワイヤの途中でクリックすると,クリックした場所にプローブ番号が表示され,ワイヤを通過するデータがプローブウィンドウ{入力[1]}に表示されます。
もちろん,同時に複数のプローブを設定することができますし,削除は他のオブジェクトを削除する方法と全く同じです。
また,アプリケーションを保存して再実行すると設定したプローブはリセットされ消失しますから,プローブの削除に神経質になる必要はありません。
バージョンアップで強化されているのは,主にLabVIEWの操作とプログラミング時のデバッグ機能に関する部分です。Functionパレットにある組み込みVIや関数は,ほとんどがLabVIEW3.xと同じです。もともとLabVIEWの関数,組み込みVIは充実していて,LabVIEW2から3への移行時もわずかな変更があっただけです。
今回も関数パレット中のアイテムはLabVIEW3.xと同じで,特筆するような関数はありません。パレットの中にサブパレットを設けて入れ子構造になったので,当初のうちは必要なVIを探すのにとまどいを感じますが,慣れれば逆に便利です。(図7)
シーケンス制御要素の中で,タイマ(限時動作要素)は重要な制御要素の1つです。
家庭で使われている例として,目覚まし時計,炊飯器,洗濯機といった類の製品はタイマを用いる代表的な製品です。シーケンサ以前には手巻時計と原理的には同一のメカニカルなタイマースイッチが使われていたのですが,マイコン内蔵のシーケンサでは,内蔵クロックのをカウントすることで,タイマーの機能を実現しています。
LabVIEWでもコンピュータのクロックをカウントするVIが準備されていますから,それらのVIを使用することで,シーケンス制御要素の1つであるタイマーVIについて考えてみることにします。
タイマを含む基本的なラダーチャートは図8
の様になります。このラダーチャートは,内部リレー(R50)の2個のリレースイッチ50(R)と2個のタイマスイッチを使用します。
@押しボタンスイッチPBS1を押すことで,(R50)のステップを自己保持(lock up)し,Aリレースイッチ50(R)によって,タイマT90がON,Bタイマスイッチ90(T)が動作し,Cランプ消灯とブザー鳴りという状態がPBS2を押して自己保持を解除するまで続きます。
押しボタンスイッチ,リレー,タイマのそれぞれの制御要素のもつスイッチには,制御要素の状態に合わせて動作するAスイッチとその逆の動作をするBスイッチとがあり,図中,がそれらのスイッチに相当します。
シミュレーションのために必要な制御対象ブザーをLabVIEWで作成することにします。図9
のBeep.viを関数/上級/Beep.viの順で選択し,frequency(周波数),duration(継続時間),intensity(音量)コネクタに図10
のように結線します。
本例の場合,周波数を440Hz(時報の周波数)にしましたが,Beep.viはシーケンスを作成するとメロディを演奏させることもできる楽しいVIです
フロントパネルは,オブジェクトを配置していませんから,図11
のような右上隅のアイコンをデザインするだけで完成です。
LabVIEW4ではオブジェクトのコネクタに,図12
のように結線ツールを近づけるだけで,ヘルプウィンドウのコネクタが表示されます。コネクタ探しに苦労したユーザも満足できるインターフェースになりました。
図8のタイマを組み入れたラダーチャートをLabVIEWで作成することにします。
フロントパネル(図13)
には制御対象の[PBS1],[PBS2],タイマの遅延時間を設定するための[ミリ秒待ち],パイロットランプの[ランプ],[ブザー]のアイテムを配置し,必要に応じてカラーリングします。
押しボタンスイッチ[PBS]の機械的動作の設定が必要です。デフォルトの動作はトグルになっていますから,図14
のようにPBSのポップアップメニューから[放されるまでスイッチ(Spring Return)]に設定します。
ラダーチャート参考にLabVIEWプログラミングを順を追って作成してみます。
@押しボタンスイッチPBS1を押す前の状況をLabVIEWで作成します。その前に,本誌1996/9月号で紹介したグローバル変数G-Boolを複製し,アイコンを少しデザイン変えて[R50]を作成しておきます。
次に,[R50]の自己保持回路を図15
のように作成します。
まず。0番のシーケンスで,[R50]にFalse"0"を保持させ,PBS1を押す以前の初期値に設定するわけです。
Aシーケンス1番では,ループの[ターミナル]に図16
のように[R50]の出力を反転させてワイヤリングします。シーケンス0番で[R50]の出力はfalse"0"が保持されていますから,このシーケンスでは,フロントパネルのPBS1をクリックするまでループは実行を続けます。
PBS1をクリックすると,[R50]にtrue"1"が保持され,[not]で反転した出力が無限ループを終了させます。
本例の場合,@,Aのシーケンスは,フロントパネル上のスイッチ入力操作を待つためのダイアグラムとなっています。
実際の制御機械に使用するときは,デジタルI/Oインターフェースの入力信号待ちルーチンとして,また,計測機器とパソコン間で,GPIB等のシーケンスコマンドをやり取りする時には非常に有効なテクニックです。
Bシーケンス2番(図17)
ではタイマールーチンのダイアグラムを作成しています。LabVIEWダイアグラムは,左から右へ,上から下への順で実行されますから,図18
のTick Count (ms)を2個使用し,カウントを比較することでタイマーを実現することができます。
シーケンサのタイマもクロックパルスをカウントして信号を処理しています。LabVIEW同じ役目のVIとして,このTick Count.viがあるのです。
[Tick 1]はループ実行前に1回だけ実行され,フロンとパネルの制御器[ミリ秒待ち]に入力されたタイマー設定時間のカウントと加算した値を[Tick 2]のカウントが越えるまでループが実行されます。
このルーチンで用いたループ・ターミナルへの結線のテクニックは,シーケンス1番でのテクニックと基本的には同じだったのです。
Cシーケンス3番(図19)
はブザーを鳴らし続けるダイアグラムです。押しボタンスイッチPBS2からの割り込みを処理しています。自己保持のVI[R50]を使用することで,当初のラダーチャートで計画した動作を実現させます。ブザーVIにはコネクタの指定をしませんでしたから,結線する必要はありません。関数パレット/VIを選択/メニューダイアログから選択し配置するだけです。
Dシーケンス4番(図20)
はアプリケーション作成の常套手段で,ランプ,ブザーアイテムのリセットを行っています。ブザーLEDをOFFに,パイロットランプをONにしてプログラムを終了します。
時間が経つと,スイッチのON/OFFを行うタイマの類似例としてフリッカー(繰り返し点滅)があります。
歩行者信号機の点滅,種々の警告灯等に使用しますが,タイマVI作成の時に使用したTick Count.viの応用となります。
フロントパネルには,[点滅時間設定]アイテム,[点滅等],[STOP]の3種を配置します。(図21)
ダイアグラムは図22
のように結線します。TickCountからのカウントデータはミリ秒単位ですから,点滅間隔時間を設定するために2000を乗じています。
TickCountは使用するパソコンの性能次第で点滅間隔が微妙に異なりますが,おおよそ1秒間に1000回のカウントを行います。
このカウントを適当な数値Nで割ると,xxxxx.yyという数値になります。
この余りを発生させるVIが図23
のQuotient & Remainder.viです。xxxxx.yyを1で割った余り0.yyの値が0.00から0.50でケースセレクタは"0",0.51から0.99で"1"となります。このまま使用すると,消灯時間の方が少しだけ長くなりますから,余り0.yyに0.01を加えてやります。
フリッカーに限らず,ループ・ターミナルに結線したVIは,そのままではSubVIとして使用することができません。
そこで,ループ内のルーチンだけをSubVIとし,(図24)
オブジェクトのコネクタを指定します。(図25)
ブザーを鳴らす前に警告灯を点滅させるアプリケーションをフリッカーSubVI[tflick.vi]を用いて,作成します。
フロントパネルを図26
のようにデザインし,先ほど作成したタイマVIのシーケンス2番に[tflick.vi]を図27
のように結線します。[AND](図28)
を使って,点滅時間終了と同時にランプが消灯するように小細工を行っています。
前稿に続いて,シーケンス制御の基本となる要素,スイッチ,リレー,自己保持回路,タイマーをLabVIEWで実現させる方法について考えてきました。 シーケンサのラダー・プログラムを作成するのに比べると,LabVIEWプログラム作成は少々手数がかかりますが,ビジュアルでコンピュータ上でシミュレートしながら実際の制御が行えるという利点があります。 計測器,高性能のセンサー等のデータを処理しながら複雑な制御が行えるわけですから,IC製造のウェハー検査ライン等の制御にLabVIEWを使う例が最近増えています。