キーエンスKV-Xシリーズにおける「範囲比較(ZoneCmp)FUN」は、比較データ(In)の値がMaxとMinの範囲内であるか(Min≦In≦Maxであるか)を求めるファンクションです。
この記事では、キーエンスKV-X500/X300シリーズにおける範囲比較(ZoneCmp)FUNの指令方法とラダープログラム、ST言語の例について解説します。
キーエンスKV-X500/X300シリーズでは、他の比較ファンクションが用意されています。比較ファンクションについては以下のページで解説しております。

目次
1. 範囲比較FUNの指令方法
範囲比較(ZoneCmp)FUNはLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。

Result := ZoneCmp(In, Max, Min);
範囲比較(ZoneCmp)FUNは↓の引数で構成されています。
引数 | タイプ | データ型 | 初期値 | コメント |
---|---|---|---|---|
EN | IN | BOOL | – | イネーブル入力 |
In | IN | – | – | 比較データ |
Max | IN | – | – | 上限値 |
Min | IN | – | – | 下限値 |
Result | RETURN | BOOL | – | 比較結果 |
LD表現
↓がLD表現で使用したラダープログラム例です。

このラダープログラムでは、比較データであるInDataの値が「上限値以下」かつ「下限値以上」の場合、OutFlag(出力フラグ)がTRUEになります。それ以外の場合、OutFlag(出力フラグ)がFALSEになります。
ST表現
↓がST表現で使用したST言語例です。
OutFlag := ZoneCmp(In := InData, Max := InMax, Min := InMin);
このSTでは、比較データであるInDataの値が「上限値以下」かつ「下限値以上」の場合、OutFlag(出力フラグ)がTRUEになります。それ以外の場合、OutFlag(出力フラグ)がFALSEになります。※前述のLD表現と同じ動作です。
2.【例題】変数の値を範囲比較する
下記仕様のラダープログラム、STを範囲比較(ZoneCmp)FUNを用いて解説します。
(Data02≦Data00≦Data01)
変数は全て1ワード符号あり整数(INT)型として扱う。
Data00の値がData01(上限)~Data02(下限)の範囲内であるか判定する処理に範囲比較(ZoneCmp)FUNを使用します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

変数Data00の値がData01(上限)~Data02(下限)の範囲内のとき、ランプ緑が点灯します。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
Data00 | INT | データ00(In) |
Data01 | INT | データ01(Max) |
Data02 | INT | データ02(Min) |
LpGreen | BOOL | ランプ緑 |
ラダープログラム
ラダープログラムは以下のようになります。

比較データにData00、上限値(Max)にData01、下限値(Min)にData02を指令した範囲比較(ZoneCmp)FUNで、Data00がData01~Data02の範囲内であるか判定します。
範囲内であれば比較結果がTRUEとなり、ランプ緑が点灯します。
ST言語
ST言語は以下のようになります。
//Data02≦Data00≦Data01であればランプ緑が点灯
LpGreen := ZoneCmp(In := Data00, Max := Data01, Min := Data02);
3. おわりに
キーエンスKV-X500/X300シリーズにおける範囲比較(ZoneCmp)FUNについて解説しました。
電気ハード設計、PLC/TPソフト設計、ロボットティーチング、制御盤製作の外注業務は、ぜひ永工舎にご相談ください。

当サイトを運営している電気設計人は、個人で永工舎として外注業務をお請けしております。
以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。