PLC制御では、数値データを比較してプログラム制御することがあります。
そんなデータを比較する命令について解説します。
ども、きしゃネコです。
PLCの制御では、工程の管理や、計測値の判定、データ検索など
データの比較をする事がよくあります。
特に近年は制御機器も高性能になって、IoTやビッグデータの連携も増えてきたので
以前よりもPLCでデータを扱う機会が増えてそれに伴い
データの比較もよく使用するので覚えておいて損はないと思います。
三菱PLC Qシリーズ ラダープログラムでの色々なデータ比較方法
もくじ
通常比較(1対1)
まずは、基本の1対1の比較方法です。
1対1の比較は、不等号での比較なので特に難しくないと思います。
-[ 比較式(=,<>,>=,>,=<,<) データ1(S1) データ2(S2) ]—–(出力)-
- = :データ1とデータ2が一致の時に出力がON
- <>:データ1とデータ2が不一致の時に出力がON
- >=:データ1がデータ2以上の時に出力がON
- > :データ1がデータ2より大きい時に出力がON
- <=:データ1がデータ2以下の時に出力がON
- < :データ1がデータ2より小さい時に出力がON
データ1(S1)とデータ2(S2)には
データが格納されているデバイスか、定数を指定できます。
例のラダープログラムでは
D100の内容と、定数の1234と比較してるよ
K1234は10進数のワードデータだよ
浮動小数点の比較の場合は、不等号の前に”E”を付けることで比較できます。
ただ、定数との比較の場合には定数も浮動小数点とする必要があるので注意が必要です。
定数の浮動小数点は”K”ではなく”E”にすれば、浮動小数点になります。
浮動小数点の場合も、通常とほぼ変わらないよ
データを浮動小数点で扱う必要があるから
定数の場合は数値の前に”E”を付けることで浮動小数点となるよ
ブロック比較[BKCMP](n対n)
比較するデータが複数ある場合にBKCMP命令(ブロック比較命令)が便利です。
ただ、比較方法がバラバラの場合には利用できないので注意が必要です。
範囲内のデータがすべて一致しているかどうかの判定等の場合に有効です。
-[BKCMP(=,<>,>=,>,=<,<) データ1(S1) データ2(S2) 結果出力(D) 比較数(n)]-
BKCMPの後に、不等号を指定することで、比較方法を選択します。
データ1(S1)とデータ2(S2)には通常の比較と違い
データが格納されているデバイスの指定のみで、定数の指定はできません。
結果(D)は、ビットデバイスのみ指定できます。
比較数は定数または、デバイスの指定どちらも可能です。
この例の場合は、D100~D109とD200~D209をそれぞれ比較して
データが一致していたらM100~M109をON
不一致だったらOFFになるよ
通常の比較命令でプログラムすると下のラダープログラムのように
10個比較プログラムを書く必要があるけど
BKCMPを使用すると1個で済むよ
データサーチ[SER](1対n)
単純な比較とは少し違いますが、1つのデータと複数のデータを比較して
一致するデータがいくつ有るかを判別する場合は
SER命令(データサーチ命令)が便利です。
例えば、入力データがすでに登録済のデータと比較し重複の有無を判断等に利用できます。
一致したデータの位置と数が判別できるので、一致位置データをもとに
レシピデータを読み出すといった制御にも利用できます。
-[ SER データ1(S1) データ2(S2) 結果出力(D) 比較数(n) ]-
データ1(S1)は、デバイスまたは定数の指定ができます。
データ2(S2)は、デバイスの指定のみで、定数の指定はできません。
結果(D)は、ワードデビアスを指定し結果が
Dに最初に一致したデータが格納されてる位置(データ2(S2)からの位置)が
D+1に一致したデータがいくつあったかが入力されます。
一致したデータがない場合は、結果(D)及び結果(D+1)は0が入力されます。
この例の場合は、D100とD200~D209それぞれ比較して
データが一致していたらD1000にD200からの位置データ
D1001に一致しているデータの個数が入力されるよ。
例えば、D100とD203とD206の内容が一致していた場合は
D1000に4、D1001に2が入力されるよ。
一致するデータが1つもなかったら
D1000とD1001は0が入力されるよ。
まとめ
PLCプログラムで必ず使用するといってもいいほど利用する事がある
データ比較について通常の不等号比較とブロック比較[BKCMP]
データサーチ[SER]についてまとめてみました。
アイデアでプログラムの効率が変わってくるので
上手く利用してもらえたらと思います。