Xcontrolの作成方法についての解説

Xcontrolとは

LabVIEWで複雑な処理の制御器および表示器を設計・作成するものです。
状態により表示器の色を変えたりする場合はメインとなるVIで処理を作成しますが、XcontrolにすることでメインVI上にコードを作成することなくひとつの表示器(制御器)として配置することができます。

Xcontrolの利点

  • ブロックダイアグラムが単純化できる
    処理をXcontrolで制御器/表示器自体にまとめることができるのでブロックダイアグラムのプログラムが減ることになり単純化できます。
  • 処理の負荷分散ができる
    作成したXcontrolはフロントパネルに配置すると別スレッドで実行させるためメイン処理の負荷の軽減につながります。
  • 作成した処理の再利用がしやすい
    Xcontrolをフォルダにまとめておくことでコピーのみで再利用が可能になります。

Xcontrol作成手順

Xcontrolの作成例として

  • 温度をバー表示して、表示器に入力された値によってバーの表示色を変化させる表示器を作成します。
  • 温度はXcontrolの端子へ入力します。
  • 例では30℃以下は青、30~70℃間は緑、70℃以上は赤、に表示します。
  • 色はプロパティで変更できるようにします。
Xcontrolの作成例

Xcontrolの作成

プロジェクトエクスプローラのマイコンピュータ上でショートカットを開き、新規→Xcontrolを選択

Xcontrolの作成

下記の5つの項目が自動的にプロジェクトに追加されます。

NoVI概要
1Xcontrol 1.xctlXcontrolの本体
2データ 1.ctlXcontrolの端子を定義します ブロックダイアグラムで表示される端子の形状
3外観 1.viXcontrolの外観を定義します
4初期化 1.viフロントパネルに配置した際の初期値を定義します
5状態 1.ctlプロパティなどの内部変数の定義します

入出力の定義

VIに配置した際にブロックダイアグラムに表示される端子を定義します。
データ 1.ctl

入出力の定義

※複数の制御器を配置することはできません。複数制御器が必要な場合はクラスタにまとめる必要があります。
※今回の例では変更せずにデフォルトのままです。

外観・制御の作成

VIに配置した際にフロントパネルに表示される部分を定義します。
外観 1.vi

外観・制御の作成

※複数の制御器/表示器を組み合わせて配置することが可能です。
※今回の例ではバー制御器を配置します。

Xcontrolに値が入力された時のコードを作成します。
外観1.viのブロックダイアグラムを開き“データ変更”のイベントケースに作成します。

コードを作成

※今回の例では30℃以下、70℃以上で色を変化させます。

端子の解説

No端子概要
1Data In/OutXcontrolのデータ値(データ 1.ctl)
2Display State In/OutXcontrolの状態値(状態 1.ctl)
3Container StateXcontrolの状態を表すフラグ(制御器/表示器の選択、Xcontrolを所有するVIの動作モード)
4Actionデータ出(Data Out)力または表示状態出力(Display State)を変更する場合に適切な動作ブールをTrueに設定する

※上記の制御器/表示器はフロントパネル上で非表示に設定されています。

イベントケースの解説

Noイベント概要
1データ変更Xcontrolの端子が変更された場合に動作します。
2表示状態の変更Xcontrolの表示状態、カスタムプロパティなどが変更され場合に動作します。
3方向を変更Xcontrolを制御器から表示器へ、またはその逆に変更されたときに動作します。
4実行状態変更Xcontrolを所有するVIが編集モードから実行モードへ、またはその逆に変更されたときに動作します。

※外観に配置した制御器/表示器のイベント処理を追加することが可能です。

内部変数の定義

プロパティなどに使用する変数を定義します。
状態 1.ctlを変更します。

内部変数の定義

※複数の制御器を配置することはできません。複数の制御器が必要になる場合はクラスタにまとめる必要があります。
※今回の例では温度によって変える色のパラメータ(カラーボックス制御器)を作成します。

プロパティの作成

1.プロパティを追加します。

  • プロパティは状態 1.viに作成した変数にアクセスするために必要です。
  • プロジェクトエクスプローラのXcontrol 1.xctlのショートカットより新規→プロパティを追加します。作成の際にプロパティの名前、読み/書きの方向を設定する必要があります。
プロパティの作成

プロパティの読み/書き処理のVIがそれぞれ作成されます。

プロパティの読み/書き処理

2.プロパティの読み/書き処理を作成します。

  • 読み/書き可能に作成した場合、読み取り処理、書き込み処理をそれぞれ処理を作成する必要があります。
  • フロントパネルの値表示器を要求される表示器へ変更します。
  • ブロックダイアグラムで状態 1.ctlで定義したData State In/Out制御器に対して読み/書きの処理を作成することで内部変数にアクセスします。
プロパティの読み/書き処理を作成

3.プロパティが変更された際の処理を作成します。

外観1.viの状態が変更されるように処理を作成します。ブロックダイアグラムを開き“表示状態変更”のイベントケースに処理を作成します。

プロパティが変更された際の処理を作成

※Xcontrolのプロパティに値をセットされたタイミングで“表示状態変更”の処理が実行されます。

プロパティを階層表示することが可能です。

プロパティの名前を:(コロン)で区切ることで階層表示することが可能です。

で階層表示することが可能

上記設定でショートカットよりカスタムプロパティを表示させたとき

カスタムプロパティを表示させたとき

作成例のXcontrol

メインとなるVIに余分なコードを書くことなく表示器として配置するだけで表示が自動的に更新されます。

作成例のXcontrol

注意事項

  • Xcontrolを配置しているVIを開いている場合、編集することができなくなります。
  • 編集する場合はプロジェクトエクスプローラ上のXcontrolのショートカットから“ライブラリを編集するためにロック解除“を行う必要があります。
  • 編集中は配置してあるVIが実行不可となります。
  • 編集後はXcontrolのショートカットより“インスタンスに変更を適用“を行うことで変更が適用され実行が可能となります。

最後に

Xcontrolは処理の負荷分散、コードの再利用など利点があり、今後のコーディングに対する作業効率のアップなどに有効だと考えられます。