LIMIT

入力変数の限界値

LIMIT命令は、1番目の入力変数に下限値、3番目の入力変数に上限値を指定します。2番目の入力変数が、上下限値の範囲内にあれば、その値がそのまま出力変数に転送されます。上限値よりも大きい場合は上限値が、下限値よりも小さい場合は下限値がそれぞれ転送されます。

パラメータ

入力

MN (INT, DINT, UINT, UDINT, REAL, LREAL)

入力1: 下限値

IN (INT, DINT, UINT, UDINT, REAL, LREAL)

入力2: 上下限値と比較する値

MX (INT, DINT, UINT, UDINT, REAL, LREAL)

入力3: 上限値

出力

VAR_OUT (INT, DINT, UINT, UDINT, REAL, LREAL)

出力: 演算結果、入力2の値が上下限値の範囲内にあればその入力値、それ以外の場合は上限値または下限値

POUヘッダ

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_valcomparison_valueupper_limit_val)が宣言されています。ファンクションの入力ピンに、定数を直接記述することもできます。

LDボディ

lower_limit_valupper_limit_valの範囲に、変数comparison_valueの値が入っている場合、その値が出力変数resultに転送されます。

  • comparison_valueupper_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

STボディ

result:=LIMIT(MN:=lower_limit_val, IN:=comparison_value, MX:=upper_limit_val);

ILボディ

LD

lower_limit_val

LIMIT

comparison_value, upper_limit_val

ST

result

最終修正日: 2022-10-18このページに関するフィードバックお問い合わせ窓口