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ループのカウンター変数がサブ範囲タイプであり、ループのカウント範囲が定義されたサブ範囲を終了する場合、無限ループが発生する可能性があります。
VAR ui : UINT (0..10000); ... END_VAR
FOR ui:=0 TO 10000 DO ... END_FOR
プログラムはFORループを終了しません。 CheckRangeSigned
監視機能は防止します ui
10000より大きい値に設定されてから。