キーエンスKV-Xシリーズにおける「比較FUN」は、定数やデバイス、変数の値を比較して条件に合致していればResultがTRUEになるファンクションです。
比較FUNを用いることにより「変数の大小を比較して分岐するプログラム」や「変数の一致・不一致を判定するプログラム」を作ることができます。
この記事では、キーエンスKV-X500/X300シリーズにおける比較FUNの指令方法とラダープログラム、ST言語の例について解説します。
比較FUNの1種として、比較データがMax~Minの範囲内にあるか判定する範囲比較(ZoneCmp)FUNがあります。この記事では範囲比較(ZoneCmp)FUNは対象外としています。
範囲比較(ZoneCmp)FUNについては以下のページで解説しております。

目次
1. 比較FUNの指令方法
比較命令は下記種類のFUNがあります。
LT (<) | In1 < In2 | In1がIn2より小さい |
LE (<=) | In1 <= In2 | In1がIn2以下 |
GT (>) | In1 > In2 | In1がIn2より大きい |
GE (>=) | In1 >= In2 | In1がIn2以上 |
EQ (=) | In1 = In2 | In1とIn2が等しい |
NE (<>) | In1 ≠ In2 | In1とIn2が等しくない |
比較FUNはLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。詳細はFUN別に後ほど解説します。
比較FUNは↓の引数で構成されています。
引数 | タイプ | データ型 | 初期値 | コメント |
---|---|---|---|---|
EN | IN | BOOL | – | イネーブル入力 |
In1~InN | IN | – | 0 | 比較データ※ |
Result | RETURN | BOOL | – | 比較結果 |
※比較データはNE(<>)FUNが2ヶ、その他のFUNは2~10ヶを指令することが出来ます。
比較データの初期値はIn1とIn2の2ヶになっています。追加/削除する場合、命令の引数設定ダイアログで個数を選択します。

LT(<):In1がIn2より小さい

Result := (In1 < In2) & (In2 < In3) & …;
LE(<=):In1がIn2以下

Result := (In1 <= In2) & (In2 <= In3) & …;
GT(>):In1がIn2より大きい

Result := (In1 > In2) & (In2 > In3) & …;
GE(>=):In1がIn2以上

Result := (In1 >= In2) & (In2 >= In3) & …;
EQ(=):In1とIn2が等しい

Result := (In1 = In2) & (In2 = In3) & …;
NE(<>):In1とIn2が等しくない

Result := (In1 <> In2);
LD表現
↓がLD表現で使用したラダープログラム例です。

このラダープログラムでは、InData(比較データ)の値が「10以上かつ20以下」の時、OutFlag(出力フラグ)がTRUEになります。
ST表現
↓がST表現で使用したST言語例です。
OutFlag := (InData >= UINT#10) & (InData <= UINT#20);
このSTでは、InData(比較データ)の値が「10以上かつ20以下」の時、OutData(出力フラグ)がTRUEになります。※前述のLD表現と同じ動作です。
2.【例題①】変数と定数を比較
下記仕様のラダープログラム、STを比較(LT,LE,GT,GE,EQ,NE)FUNを用いて解説します。
・Data00が定数5と等しいとき、ランプ緑が点灯する。
・Data00が定数5と等しくないとき、ランプ黄が点灯する。
・Data00が定数5より大きい(超過)とき、ランプ赤が点灯する。
・Data00が定数5より小さい(未満)とき、ランプ青が点灯する。
・Data00が定数5以上のとき、ランプ橙が点灯する。
・Data00が定数5以下のとき、ランプ紫が点灯する。
変数は1ワード符号なし整数(UINT)型として扱う。
Data00と定数5の比較に比較(LT,LE,GT,GE,EQ,NE)FUNを使用します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

変数Data00の値を定数5を比較して、下記条件に合致したら対象のランプを点灯させます。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
LpGreen | BOOL | ランプ緑 |
LpYellow | BOOL | ランプ黄 |
LpRed | BOOL | ランプ赤 |
LpBlue | BOOL | ランプ青 |
LpOrange | BOOL | ランプ橙 |
LpPurple | BOOL | ランプ紫 |
Data00 | UINT | データ00 |
ラダープログラム
ラダープログラムは以下のようになります。

比較(LT,LE,GT,GE,EQ,NE)FUNの比較データに変数Data00とUINT#5(1ワード符号なし整数の5)を指定することで、FUNに応じた比較を行い、条件が合致した時にResultがTRUEになりランプが点灯します。
ST言語
ST言語は以下のようになります。
//Data00 = 定数5 → ランプ緑が点灯
LpGreen := (Data00 = UINT#5);
//Data00 <> 定数5 → ランプ黄が点灯
LpYellow := (Data00 <> UINT#5);
//Data00 > 定数5 → ランプ赤が点灯
LpRed := (Data00 > UINT#5);
//Data00 < 定数5 → ランプ青が点灯
LpBlue := (Data00 < UINT#5);
//Data00 >= 定数5 → ランプ橙が点灯
LpOrange := (Data00 >= UINT#5);
//Data00 <= 定数5 → ランプ紫が点灯
LpPurple := (Data00 <= UINT#5);
3.【例題②】複数の変数を比較
下記仕様のラダープログラム、STを比較(LT,GT,EQ)FUNを用いて解説します。
・Data00>Data01>Data02>Data03>Data04のとき、ランプ緑が点灯する。
・Data00<Data01<Data02<Data03<Data04のとき、ランプ黄が点灯する。
・Data00=Data01=Data02=Data03=Data04のとき、ランプ赤が点灯する。
変数は1ワード符号なし整数(UINT)型として扱う。
変数Data00~Data04の比較に比較(LT,GT,EQ)FUNを使用します。比較データはData00~Data04の5ヶのため、命令の引数設定ダイアログで5ヶに設定します。※ラダープログラムの場合
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

変数Data00~Data04の値を比較して、下記条件に合致したら対象のランプを点灯させます。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
LpGreen | BOOL | ランプ緑 |
LpYellow | BOOL | ランプ黄 |
LpRed | BOOL | ランプ赤 |
Data00 | UINT | データ00 |
Data01 | UINT | データ01 |
Data02 | UINT | データ02 |
Data03 | UINT | データ03 |
Data04 | UINT | データ04 |
ラダープログラム
ラダープログラムは以下のようになります。

命令の引数設定ダイアログにて比較データを5ヶに増やして、比較データにData00~Data04を指定します。
Data00>Data01>Data02>Data03>Data04の場合、GT(>)FUNのResultがTRUEになりランプ緑が点灯します。(1行目)
Data00<Data01<Data02<Data03<Data04の場合、LT(<)FUNのResultがTRUEになりランプ黄が点灯します。(2行目)
Data00=Data01=Data02=Data03=Data04の場合、EQ(=)FUNのResultがTRUEになりランプ赤が点灯します。(3行目)
ST言語
ST言語は以下のようになります。
//Data00 > Data01 > Data02 > Data03 > Data04 → ランプ緑が点灯
LpGreen := (Data00 > Data01) & (Data01 > Data02) & (Data02 > Data03) & (Data03 > Data04);
//Data00 < Data01 < Data02 < Data03 < Data04 → ランプ黄が点灯
LpYellow := (Data00 < Data01) & (Data01 < Data02) & (Data02 < Data03) & (Data03 < Data04);
//Data00 = Data01 = Data02 = Data03 = Data04 → ランプ赤が点灯
LpRed := (Data00 = Data01) & (Data01 = Data02) & (Data02 = Data03) & (Data03 = Data04);
4.【例題③】構造体型変数の比較
下記仕様のラダープログラム、STを比較(EQ,NE)FUNを用いて解説します。
構造体型変数WorkData00とWorkData01の構成要素の値が一つでも異なる場合、ランプ黄が点灯する。
構造体は「WorkData」とし、メンバはワーク有無、品種、検査結果とする。(詳細は構造体「WorkData」に記述)
比較FUNの比較データに構造体型変数(全体)を指定します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

構造体型変数WorkData00とWorkData01の構成要素の値を比較します。
構成要素の値が全て一致している場合はランプ緑が点灯、一つでも異なる場合はランプ黄が点灯します。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
LpGreen | BOOL | ランプ緑 |
LpYellow | BOOL | ランプ黄 |
WorkData00 | WorkData | ワークデータ00 |
WorkData01 | WorkData | ワークデータ01 |
データ型WorkDataの内容は構造体「WorkData」に記述します。
構造体「WorkData」
構造体「WorkData」を構成する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
Exist | UINT | ワーク有無 |
WorkType | STRING[15] | 品種 |
Result | REAL | 検査結果 |
ラダープログラム
ラダープログラムは以下のようになります。

比較(EQ,NE)FUNの比較データに構造体型変数(全体)を指定することにより、構造体のすべてのメンバが比較対象となります。
ST言語
ST言語は以下のようになります。
//WorkData00 = WorkData01 → ランプ緑が点灯
LpGreen := (WorkData00 = WorkData01);
//WorkData00 <> WorkData01 → ランプ黄が点灯
LpYellow := (WorkData00 <> WorkData01);
5. おわりに
キーエンスKV-X500/X300シリーズにおける比較FUNについて解説しました。
電気ハード設計、PLC/TPソフト設計、ロボットティーチング、制御盤製作の外注業務は、ぜひ永工舎にご相談ください。

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