Skip to main content

POU:CheckLRangeUnsigned

ULINTタイプのサブレンジタイプの範囲制限を監視する機能

範囲監視の実装例については、のヘルプページを参照してください。 CheckRangeSigned 関数。

監視範囲の制限

これ 監視機能 範囲制限に対する違反を適切に処理する責任があります。違反に対する反応の例には、エラーフラグの設定や値の変更が含まれます。値がサブレンジ型変数に割り当てられると、関数は暗黙的に呼び出されます。

注意

監視機能の機能を利用するには、宣言部分を編集しないでください。ただし、ローカル変数を追加することは許可されています。

. 関数が呼び出されると、次の入力パラメーターを受け取ります。
  • value:サブレンジ型変数に割り当てる必要のある値

  • lower:範囲下限

  • upper:範囲上限

戻り値は、有効な範囲内にある限り、割り当て値です。そうでない場合は、違反したしきい値に応じて、上限または下限のいずれかが返されます。

たとえば、割り当て i := 10*y 暗黙的にに置き換えられます i := CheckRangeSigned(10*y, -4095, 4095);

もしも y が「1000」の場合、「10 * 1000 = 10000」はに割り当てられません i 元のコードのように。代わりに、「4095」の上限範囲が割り当てられます。

同じことが当てはまります CheckRangeUnsigned 関数。

重要

関数が使用できない場合、実行時にそれぞれの変数のサブ範囲はチェックされません。この場合、サブレンジタイプDINT / UDINTの変数に-2147483648〜 + 2147483648(または0〜4294967295)の任意の値を割り当てることができます。 -9223372036854775808から+9223372036854775807(または0から18446744073709551615)の任意の値を、サブ範囲タイプLINT / ULINTの変数に割り当てることができます。

注意

エリア監視機能をリンクすると、無限ループが発生する可能性があります。たとえば、FORループのカウンター変数がサブ範囲タイプであり、ループのカウント範囲が定義されたサブ範囲を終了する場合、無限ループが発生する可能性があります。

537. 無限ループの例:
VAR
        ui : UINT (0..10000);
 ...
END_VAR
FOR ui:=0 TO 10000 DO
        ...
END_FOR

プログラムはFORループを終了しません。 CheckRangeSigned 監視機能は防止します ui 10000より大きい値に設定されてから。