# バインドの設定例

マニュアル > 画面作成ガイド > バインド > # バインドの設定例 |

バインド設定サンプル

ここでは、バインドの各種設定について、サンプルを用いて具体的に解説します。

このサンプルは、以下からご利用頂けます。

ビットタグのバインド例

ビットタグを用いたバインドについて解説します。

1) トグルボタンからのタグのON/OFF操作（入出力）

トグルボタンコントロールは、ボタンをクリックする都度、SwitchValueプロパティがTRUE/FALSEの２値で変化します。

また、同プロパティがTRUEの時に押された状態、FALSEのときに浮き出た状態となり、現在値を表現することができます。

以下のバインド設定を行うことにより、ボタンの操作によるタグのON/OFFを行うことができます。

プロパティ | かんたん設定の内容 | バインド式
SwitchValue | 入力タグ：$M0 出力タグ：$M0 | INOUT:$M0

| $M0がFALSEのとき、ボタンはOFF状態です。

| ボタンをクリックすると、$M0にTRUEが書き込まれるとともにボタンの表示も変化します。 以降、ボタンをクリックする都度、対応した値（TRUE/FALSE）が書き込まれます。 又、$M0の値が変化すると、ボタンの表示も連動して切り替わります。

2) ２つのボタンを用いたタグのON/OFF操作（出力のみ）

ボタンコントロールは、SwitchTypeが「ON_SWITCH」の場合、ボタンをクリックするとSwitchValueにTRUEが出力されます。

また、SwitchTypeが「OFF_SWITCH」の場合、ボタンをクリックするとSwitchValueにFALSEが出力されます。

そこで、２つのボタンを使用して、各ボタンに以下のバインド設定を行うことにより２つのボタンによるタグのON/OFF操作を行うことができます。

ONボタン側※SwitchTypeをON_SWITCHとする

プロパティ | かんたん設定の内容 | バインド式
SwitchValue | 入力タグ：（空欄） 出力タグ：$M0 | OUT:$M0

OFFボタン側※SwitchTypeをOFF_SWITCHとする

プロパティ | かんたん設定の内容 | バインド式
SwitchValue | 入力タグ：（空欄） 出力タグ：$M0 | OUT:$M0

| ONボタンをクリックすると、$M0にTRUEが書き込まれ、OFFボタンをクリックすると$M0にFALSEが書き込まれます。

| ボタンコントロールのスイッチタイプには、A_SWITCH、B_SWITCH、ON_SWITCH、OFF_SWITCH、ALTERNATE_SWITCHが用意されています。使用したい場面に応じて適切なスイッチタイプを指定することで、さまざまなスイッチ機能として使用することができます。詳細はコントロールリファレンスの「ボタンコントロール」を参照してください。

3) ラベルを用いたON/OFF文字表示

ラベルコントロールは、Textプロパティに設定した内容（数値、文字など）を表示します。

以下のバインド設定を行うことにより、タグの値に応じてラベルの表示を「ON」「OFF」に切り替えて表示することができます。

プロパティ | かんたん設定の内容 | バインド式
Text | もし $M0 であれば "ON" もし 上記以外 であれば "OFF" | B.In("",T,$M0,"ON","OFF")

| $M0がFALSEのとき、ラベルの表示は「OFF」です。

| $M0がTRUEになると、ラベルの表示が「ON」に変化します。

| ラベルコントロールをフォーム張り付けると、通常は塗りなし、枠線なしの状態ですが、プロパティを編集することによって塗りあり、枠線ありとして利用することができます。

4) ラベルを用いたON/OFF文字表示、点灯色表示

ラベルコントロールは、FillプロパティをTRUEに設定すると、FillColorの指定により塗りの色を表示することができます。

以下のバインド設定を行うことにより、タグの値に応じてラベルの表示を「ON」「OFF」に変化させるとともに、塗りの色を切り替えて表示することができます。

プロパティ | かんたん設定の内容 | バインド式
Text | もし $M0 であれば "ON" もし 上記以外 であれば "OFF" | B.In("",T,$M0,"ON","OFF")
FillColor | もし $M0 であれば #FF0000 もし 上記以外 であれば #FFFFFF | B.In("",T,$M0,"#FF0000","#FFFFFF")

| $M0がFALSEのとき、ラベル表示は「OFF」、塗りの色は白色点灯（#FFFFFF）です。

| $M0がTRUEになると、ラベル表示は「ON」、塗りの色が赤色点灯（#FF0000）に変化します。

5) ラベルを用いたON/OFF文字表示、点滅色表示

上記４の例を、ONのときに点滅表示を行うように拡張した例です。

点滅を行うには、バインド設定で点滅の定義を行います。

プロパティ | かんたん設定の内容 | バインド式
Text | もし $M0 であれば "ON" もし 上記以外 であれば "OFF" | B.In("",T,$M0,"ON","OFF")
FillColor | もし $M0 であれば #FF0000、点滅 @FAST #800000 もし 上記以外 であれば #FFFFFF | B.In("",T, $M0,B.BF("@FAST","#FF0000","#800000"), "#FFFFFF" )

| $M0がFALSEのとき、ラベル表示は「OFF」、塗りの色は白色点灯（#FFFFFF）です。

| $M0がTRUEになると、ラベル表示は「ON」、塗りの色が500ミリ秒周期で赤色点滅（#FF0000／#800000）に変化します。

| システムで用意されている点滅周期（高速（@FAST）、中速（@MEDIUM）、低速（@SLOW））は、自由にカスタマイズすることができます。 点滅周期の詳細については、「点滅周期について」を参照してください。

数値タグのバインド例

数値タグを用いたバインドについて解説します。

1)エディットからの値編集（入出力）

エディットコントロールは、値の編集を行うことができます。

以下のバインド設定を行うことにより、画面からのタグ値の編集を行うことができます。

プロパティ | かんたん設定の内容 | バインド式
Value | 入力タグ：$D0 出力タグ：$D0 | INOUT:$D0

| 初期表示は$D0の初期値が表示されています。

| エディットから値を編集すると、$D0に値が書き込まれます。

2)ラベルでの数値表示

ラベルコントロールは、Textプロパティに設定した内容（数値、文字など）を表示します。

以下のバインド設定を行うことにより、タグ値を数値として表示します。ここでは、NL関数を用いて小数１桁で表示しています。

プロパティ | かんたん設定の内容 | バインド式
Text | NL($D0,1) | NL($D0,1)

| $D0の値が、小数1桁にて数値表示されます。

| NL関数は小数点桁数以外にもパラメータが用意されており、数値書式のフォーマットを指定することができます。詳細はコントロールリファレンスの「CNumToLocale(NL)」を参照してください。

3)ラベルでの文字表示（数値比較）

ラベルコントロールは、Textプロパティに設定した内容（数値、文字など）を表示します。

以下のバインド設定を行うことにより、タグ値の数値と指定値を比較判定し、文字列に置き換えて表示します。

プロパティ | かんたん設定の内容 | バインド式
Text | もし $D0 >= 80 であれば "HIGH" もし $D0 <= 20 であれば "LOW" もし 上記以外 であれば "NORMAL" | B.In("",T, $D0 >= 80,"HIGH", $D0 <= 20,"LOW", "NORMAL" )

| $D0の値が80以上の時に「HIGH」と表示されます。

| $D0の値が20以下の時に「LOW」と表示されます。

| その他の値のとき、「NORMAL」と表示されます。

4)ラベルでの数値表示、点灯色表示

以下のバインド設定を行うことにより、タグの数値を小数１桁でラベルに表示するとともに、塗りの色を切り替えて表示することができます。

プロパティ | かんたん設定の内容 | バインド式
Text | NL($D0,1) | NL($D0,1)
FillColor | もし $D0 <= 20 || $D0 >= 80 であれば #FF0000 もし 上記以外 であれば #FFFFFF | B.In("",T, $D0 <= 20 || $D0 >= 80,"#FF0000", "#FFFFFF" )

| $D0が20を超えてかつ80未満の範囲内の場合、塗りの色は白色点灯（#FFFFFF）です。

| $D0が上記の範囲外になると、塗りの色が赤色点灯（#FF0000）に変化します。

5)ラベルでの数値表示、点滅色表示

以下のバインド設定を行うことにより、タグの数値を小数１桁でラベルに表示するとともに、塗りの色を切り替えて点滅表示することができます。

プロパティ | かんたん設定の内容 | バインド式
Text | NL($D0,1) | NL($D0,1)
FillColor | もし $D0 <= 20 || $D0 >= 80　であれば #FF0000、点滅 @FAST #800000 もし 上記以外 であれば #FFFFFF | B.In("",T, $D0 <= 20 || $D0 >= 80,B.BF("@FAST","#FF0000","#800000"), "#FFFFFF" )

| $D0が20を超えてかつ80未満の範囲内の場合、塗りの色は白色点灯（#FFFFFF）です。

| $D0が上記の範囲外になると、塗りの色が500ミリ秒周期で赤色点滅（#FF0000／#800000）に変化します。

| システムで用意されている点滅周期（高速（@FAST）、中速（@MEDIUM）、低速（@SLOW））は、自由にカスタマイズすることができます。 点滅周期の詳細については、「点滅周期について」を参照してください。

タグ通信異常時に編集を無効化する

ここでは、PLCとの通信が行えていない時、あるいは、Panel Serverと接続ができていない状態の時などにエディットの編集を無効にする方法を解説します。

1)通信異常時のエディットの無効化

EnabledプロパティをFASLEにすることにより、コントロールを無効状態にすることができます。

エディットコントロールに以下のバインド設定を行うことにより、通信異常時に編集を無効にします。

プロパティ | かんたん設定の内容 | バインド式
Value | 入力タグ：$D0 出力タグ：$D0 | INOUT:$D0
Enabled | IsQualityGood(U01.F01.T01) | IsQualityGood(U01.F01.T01)

IsQualityGoodは、指定したタグとの通信が正常の場合はTRUE、異常時はFALSEを返します。

| U01.F01.T01との通信が正常に行われており、エディットの編集が有効な状態です。

| U01.F01.T01との通信が異常な状態になるとエディットが無効状態となり、編集不可となります。

権限レベルによる操作可非の切り替え

ここでは、権限レベルによってボタン操作の有効・無効を切り替える方法を解説します。

1)レベル値によるボタンの無効化

ここでは、内部タグ「$D100」にユーザー権限レベルを表す数値が格納されているものとし、レベル値は０から３までの４段階とします。

レベル値に応じて操作の有効・無効の切り替えを行うボタンのEnabledプロパティを、上記のレベル値（この場合は$D100の値）によってTRUE/FASLEに切り替えるようなバインドを設定することにより、コントロールの有効・無効状態を動的に切り替えることができます。

Button1ボタン

プロパティ | かんたん設定の内容 | バインド式
Enabled | $D100 >= 0 | $D100 >= 0

Button2ボタン

プロパティ | かんたん設定の内容 | バインド式
Enabled | $D100 >= 1 | $D100 >= 1

Button3ボタン

プロパティ | かんたん設定の内容 | バインド式
Enabled | $D100 >= 2 | $D100 >= 2

Button4ボタン

プロパティ | かんたん設定の内容 | バインド式
Enabled | $D100 >= 3 | $D100 >= 3

| サンプルを実行させた例です。 このサンプルでは上部にあるグループ化されたトグルボタンにより、レベル値を切り替えられるようになっています。切り替えボタンをクリックすると、$D100の値が0、1、2、3と変化します。 $D100の値が変化すると、対象のボタンの有効・無効が動的に切り替わります。

| ユーザーにより権限レベルを設けて、ユーザーのレベルに応じて操作可非を切り替えたい例は多くあります。スクリプト等による独自のユーザー権限管理の機能を構築することもできますが、Panel Server側で用意されているログイン機能を利用する方法もあります。 例えば、上記のようにPanel Server側でログインユーザーとレベルを定義して登録すると、Panel BrowserからPanel Serverにログインしたユーザーのレベル値は、ルートの「PSUserLevel」プロパティに格納されるようになっています。このプロパティの値をルートの「OnLogin()」イベントなどから何らかの内部タグ（サンプルの例では「$D100」）に格納するスクリプトを記述する、あるいはOUTバインドで内部タグに書き込みを行うように設定しておくことによって、各フォームでは本サンプルのバインド例のように対象コントロールのEnabledプロパティにレベル値を連結させ、ユーザーレベルに応じて操作可非を切り替える仕組みを構築することができます。