メンバへのバインド

<< Click to Display Table of Contents >>

マニュアル > サーバ作成ガイド > 構造化タグ編 > 機能解説 >

メンバへのバインド

メンバへのバインドについて

バインドは構造化タグの各メンバに対し、ドライバタグ(PLCのD0000やM0000などのデバイスと通信する実タグ)と接続したい場合に設定します。バインドはインスタンス内に定義されたタグのメンバ毎に設定します。

 

バインドを設定するには、インスタンス内の各タグのプロパティ画面から目的のメンバのバインド入力欄にバインド書式を記述することによって行います。

 

以下は、バインドの設定画面例です。

 

c_tags_0041

 

構造化タグのバインドの内容は通常のバインド式と同等です。バインド式に関する詳細については画面作成ガイドの「バインド」を参照してください。

 

 

バインドには大きく分けて、IN(入力)とOUT(出力)の2つの方向があります。

入力バインドを設定した場合、ドライバタグの値が変化すると、その直後にメンバの値も自動的に変更されます。

逆に、出力バインドを設定した場合、メンバの値が変更されると、その直後にドライバタグの値も自動的に変更されます。

 

 

入力バインド
c_tags_0042
「IN:U01.F01.T01」などのように直接タグパスを記述します。ドライバタグの値が変化すると、メンバへ値が自動的に反映されます。タグと同様に、構造化タグの同一インスタンスの他のメンバをバインドすることもできます。
メンバ名を指定するときは、「IN:$Value$」などのように$マークでメンバ名を括ります。通常は計算式(「IN:$Value1$+$Value2$」)や条件式内で利用します。
 
また、通常のバインドと同様に条件式も使用できます。例えばバインドしたタグの値の評価によって、メンバに設定する値を切り替えることができます。

 

例)U01.F01.T01が10より大きいとき"TRIP"、10以下で5より大きいとき"ALARM"、5以下の場合"NORMAL"の文字列をメンバに設定します。

 

IN:{U01.F01.T01 > 10}{"TRIP"},{ U01.F01.T01 > 5}{"ALARM"},{default}{"NORMAL"}

 

 

 

出力バインド
c_tags_0043
「OUT:#D0」のように直接タグ名を記述します。プロパティの値が変化すると、ドライバタグに値が書き込まれます。ドライバタグと同様に、構造化タグの同一インスタンスの他のメンバをバインドすることもできます。
メンバ名を指定するときは、「OUT:$Value$」などのように$マークでメンバ名を括ります。通常は計算式や条件式内で利用します。
 
計算式を指定することも出来ます。このとき、$this$はバインドを設定したメンバ自身の値になります。

 

例1)メンバ値を10倍した値をU01.F01.T01に書き込みます。
 

OUT: U01.F01.T01= $this$ * 10

 

例2)メンバ値とU01.F01.T02の合計値をU01.F01.T01に書き込みます。
 

OUT: U01.F01.T01= $this$ + U01.F01.T02

 

例3)メンバ値とU01.F01.T02の合計値をU01.F01.T01に書き込みます。
 

OUT: U01.F01.T01= Math.LT(F, $this$, $PVPLCMin$, $PVPLCMax$, $PVMin$, $PVMax$, T, T)

 
尚、上記のMath.LT関数は工学値変換を行うための関数です。

この処理では、$this$による自身のメンバ値と、$PVPLCMin$、$PVPLCMax$、$PVMin$、$PVMax$によって他のメンバの値を取得して関数に引き渡して工学値変換を行い、変換された結果をU01.F01.T01に書き込みます。

 

 

入出力バインド
c_tags_0044
入力バインドと出力バインドのタグが同じ場合、「INOUT」の後にタグ名を記述します。
 
入力バインド「IN」と出力バインド「OUT」を別々に指定することもできます。

 

例1)U01.F01.T01の値をメンバに設定し、メンバ値をU01.F01.T02に書き込みます。
 

IN:U01.F01.T01;OUT: U01.F01.T02

 

例2)入力バインド時はU01.F01.T01を工学値変換して取り込みます。出力バインド時には工学値変換の逆変換を行いドライバタグに書き込みます。
 

IN:Math.LT(T, U01.F01.T01, $PVPLCMin$, $PVPLCMax$, $PVMin$, $PVMax$, T, T); OUT: U01.F01.T01 = Math.LT(F, $PROP$, $PVPLCMin$, $PVPLCMax$, $PVMin$, $PVMax$, T, T)

 

 

 

hint

ドライバタグを工学値変換する場合、Panel Serverの「タグフィルタ機能」(工学値変換フィルタ)を用いて変換することができます。

 

c_tags_0052

 

但し、タグフィルタ機能では、最大値、最小値などの工学値変換用のパラメータは設定時に指定した固定値となります。例えば、上位側と下位側のレンジをオペレータが画面から自由に設定できるようにしたい場合は、それらの工学値変換用のパラメータを構造化タグのメンバとして定義し、Math.LT関数を用いて入力バインドもしくは出力バインドを設定することで実現することができます。

 

 

演算構文について

バインド書式のIN/OUT/INOUT以降の構文の仕様は「演算式構文」に準拠します。

 

詳細についてはスクリプトガイドの「演算式構文」を参照して下さい。

 

演算式構文はバインド書式以外でも利用されます。入出力バインドで指定するタグ(例えばIN:U01.F01.T01のU01.F01.T01にあたる部分)のことを、ここでは「変数」と称します。

 

バインド書式で変数に相当するものは以下になります。

 

タグ(U01.F01.T01など)

構造化タグのメンバ($PV$、$SV$、$AlarmHigh$など)

$this$(自メンバをあらわすキーワード)

 

 

バインドオプション書式

バインドのオプション書式として以下が指定できます。

 

NOCACHEAFTERWRITE

 

 

オプション書式を指定するには、以下のようにバインド書式の後にセミコロンで区切って指定します(セミコロンとオプション書式の間にはスペースを入れないで下さい)。

 

例)

INOUT:U01.F01.T01;NOCACHEAFTERWRITE

 

 

通常、構造化タグでは、外部から書き込み要求を受けると、まず、出力バインドに設定したタグに対し書き込みを実行し、バインド出力の成功を受けて即座にメンバの値を更新します。ここで、「NOCACHEAFTERWRITE」オプションを付加すると、バインド出力が成功した際のメンバの値の更新を行わないようにすることができます。書き込み時はメンバ値の更新は行われませんが、次回の読み込み周期による値の変化を受けて、メンバの値を読み込み値で変更します。

 

 

 

attention

入出力バインド書式の「入力バインド書式 ; 出力バインド書式」を指定した場合のみ、標準で「NOCACHEAFTERWRITE」が付加された時の動作になります。

 

例えば以下のような場合はNOCACHEAFTERWRITEが付加された時と同じ動作になります。

 

IN:U01.F01.T01;OUT: U01.F01.T02

 

上記の例の処理の流れとしては、外部からの書き込み要求を受けた時、まずU01.F01.T02に対し書き込みが実行されます。その際、書き込みが成功したとしてもメンバの値は変更されません。その後、入力バインドで設定したU01.F01.T01の値が変化した時にはじめてメンバの値が更新される動作となります。