イベントストラクチャ LabVIEW
LabVIEW基本講座3-5
LabVIEWのイベントストラクチャについて説明します。LabVIEWのイベントストラクチャは、指定したイベントの発生すると、囲んだストラクチャの中に作成されたプログラムを実行します。
![イベントストラクチャ](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-1-5.jpg?resize=590%2C340&ssl=1)
LabVIEWのイベントストラクチャ機能
イベントストラクチャでは、「ボタンをクリックする」「メーターの数値を入力する」などユーザー操作によってストラクチャ内のプログラムを実行することができます。また、LabVIEW関数でプログラムで実行させることもできます。
![イベントストラクチャ](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-1.jpg?resize=523%2C233&ssl=1)
例:「電圧計算ボタン」の「値変更」(クリックする)を設定。
![イベントストラクチャ](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-2.jpg?resize=429%2C243&ssl=1)
イベントケースの作成
イベントを作成するにはイベントストラクチャ端を右クリックで表示されるメニューから「このケースで処理されるイベントを編集」または、で編集画面を開いてイベントを追加ボタンをクックして、イベント条件を設定後OKボタンをクリックします。。
または、メニューから「イベントケースを追加」で追加か、「イベントケースを複製」でコピーすると表示される編集画面でイベント条件を設定後OKボタンをクリックします。
![イベントストラクチャ追加](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-3.jpg?resize=724%2C314&ssl=1)
イベントを作成するとするとイベントストラクチャの上部欄にイベント条件で新しいイベントが作成されます。
![イベント一覧](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-5.jpg?resize=394%2C199&ssl=1)
イベント条件の設定
イベントストラクチャのイベント条件(実行する条件)は、「イベントの編集」画面にて行います。
- イベントソース欄でイベントソース(対象)を選びます。
- イベント欄でイベント(動作する条件)を選びます。
- OKボタンをクリックします。
既存のイベントを変更する場合は、上部の「イベントケース」から編集するイベントケースを選択して、「左端のイベント指定子」欄から変更するイベントを選択してイベント条件を設定します。
例:「電圧計算ボタン」の「値変更」(クリックする)を設定。
![イベントストラクチャ条件設定](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-4.jpg?resize=594%2C469&ssl=1)
イベントケース、イベントの削除
イベントストラクチャのイベントケースを削除する場合は、削除するイベントケースが表示されている状態で、イベントストラクチャ端を右クリック→「このイベントケースを削除」をクリックします。
イベントケースのイベントを削除する場合は、「イベントを編集」画面を開いて削除するイベントをイベントソースから選択して削除ボタンをクリックします。
※イベントを削除してもイベントケースは削除されません。イベントがないイベントケースがあるとVIを実行できない状態となります。
![イベントケースの削除](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-6.jpg?resize=862%2C420&ssl=1)
イベントストラクチャのタイムアウト設定
イベントストラクチャのタイムアウト端子に数値を入力すると、入力した数値ミリ秒、前のイベントが発生してからイベントがないとタイムアウトケースを実行します。
タイムアウト端子に入力しないか-1を入力するとイベントが発生するまでイベントストラクチャは待機します。
![イベントタイムアウト](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-7-1.jpg?resize=593%2C235&ssl=1)
イベントストラクチャ使用上の注意
パネルをロック
イベントストラクチャには「イベントのケースが完了するまでパネルをロック(ユーザー操作の処理を延期)」機能があります。デフォルトでは機能がON状態になっています。
この機能により、イベントのプログラム実行中に他のイベントが実行されないようにしたりできるのですが、条件によってはロックが解除されず、操作ができなくなってしまうことがあります。
イベントを設定する際はデッドロックにならないか確認した上で設定しましょう。
例:イベントでロックを設定した場合、値1が変更される前に値2が変更された場合、VIのフロントパネルが応答しなくなる
![イベントロック](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-8.jpg?resize=486%2C215&ssl=1)
イベント後のブール状態
イベントストラクチャの外にブール(ボタン)があり、イベント実行後のプログラムにボタンがないと、ボタン(ラッチ)をクリックしてイベントが発生した後、ボタンがOFFに戻らない状態になります。
![ストラクチャ外にブール](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-9.jpg?resize=490%2C210&ssl=1)
ブールボタンの動作をイベントストラクチャ内に入れるか、イベント実行後のプログラムにボタンを入れるようにしましょう。
![ボタンの読み込み](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-10.jpg?resize=785%2C250&ssl=1)
イベントストラクチャのプログラミングについて
イベントストラクチャは単独でも使用できますが、LabVIEWプログラムでは他のループ・ストラクチャと組み合わせて使用されることが多いです。
以下はLabVIEWの代表的なテンプレートの一つ、生産者/消費者デザインパターンです。
上部の生産者ループにてイベントストラクチャで実行命令を作り、プログラム動作は下部の消費者ループで実行します。
![消費者/生産者](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-11.jpg?resize=760%2C570&ssl=1)
イベントストラクチャはLabVIEWの関数を使用して、プログラムでイベントの作成、解除を行うことができます。
![イベント関数](https://i0.wp.com/www.peritec-si.com/wp/wp-content/uploads/labview-course3-5-12.jpg?resize=640%2C636&ssl=1)