入力変数の限界値
LIMIT命令は、1番目の入力変数に下限値、3番目の入力変数に上限値を指定します。2番目の入力変数が、上下限値の範囲内にあれば、その値がそのまま出力変数に転送されます。上限値よりも大きい場合は上限値が、下限値よりも小さい場合は下限値がそれぞれ転送されます。
入力
入力1: 下限値
入力2: 上下限値と比較する値
入力3: 上限値
出力
出力: 演算結果、入力2の値が上下限値の範囲内にあればその入力値、それ以外の場合は上限値または下限値
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
lower_limit_val: INT:=0;
(*all types allowed*)
comparison_value: INT:=0;
(*all types allowed*)
upper_limit_val: INT:=0;
(*all types allowed*)
result: INT:=0;
(*all types allowed*)
END_VAR
この例では、入力変数(lower_limit_val、comparison_value、upper_limit_val)が宣言されています。ファンクションの入力ピンに、定数を直接記述することもできます。
lower_limit_valとupper_limit_valの範囲に、変数comparison_valueの値が入っている場合、その値が出力変数resultに転送されます。
comparison_valueがupper_limit_valよりも大きい場合、upper_limit_valの値がresultに転送されます。
lower_limit_valよりも小さい場合、lower_limit_valの値がresultに転送されます。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_VARIN,,lower_limit_val,9,1,11,3,);
B(B_VARIN,,comparison_value,9,2,11,4,);
B(B_VARIN,,upper_limit_val,9,3,11,5,);
B(B_VAROUT,,result,16,1,18,3,);
B(B_F,LIMIT!,Instance,11,0,16,5,,?DMN?DIN?DMX?C);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
result:=LIMIT(MN:=lower_limit_val, IN:=comparison_value, MX:=upper_limit_val);
LD |
lower_limit_val |
LIMIT |
comparison_value, upper_limit_val |
ST |
result |