三菱電機製シーケンサiQ-Rシリーズにおける「比較」命令とは、2つの定数やデバイス値を比較して、大・一致・小の3パターンをビットデバイスに出力するラダープログラム命令です。
比較命令を用いることにより、2つの定数やデバイスの値の大小の状態により出力・処理内容を変更することができます。
この記事では、三菱電機製シーケンサiQ-Rシリーズにおける比較命令の指令方法とラダープログラム例について解説します。
三菱電機製シーケンサiQ-Rシリーズにおいて、接点形比較命令は以下のCPUで使用することが可能です。
RnCPU | :使用可 |
RnENCPU | :使用可 |
RnPCPU(プロセス) | :使用不可 |
RnPCPU(二重化) | :使用不可 |
RnPSFCPU(一般) | :使用不可 |
RnPSFCPU(安全) | :使用不可 |
RnSFCPU(一般) | :使用不可 |
RnSFCPU(安全) | :使用不可 |
※R00CPU,R01CPU,R02CPUは,バージョンによる制約はありません。RnCPU(R00CPU,R01CPU,R02CPUを除く),RnENCPUは,ファームウェアバージョンが”17”以降で使用できます。
三菱電機製シーケンサ、FXシリーズにおける接点形比較命令は以下のページで解説しております。※iQ-Rシリーズと同様の使い勝手で指令できるため、類似した記事になります。
【三菱FXシリーズ】比較(CMP)命令の指令方法とラダープログラム例2つの定数やデバイスの値を比較できる命令には、他に「接点形比較命令」があります。接点形比較命令については以下のページで解説しておりますので、宜しければご覧ください。
【三菱iQ-Rシリーズ】接点形比較命令の指令方法とラダープログラム例目次
1. 比較命令の指令方法
比較命令には、4種類の指令方法があります。
CMP | :16ビット連続実行形 |
CMPP | :16ビットパルス実行形 |
DCMP | :32ビット連続実行形 |
DCMPP | :32ビットパルス実行形 |
CMPは、比べる・比較する(Compare)の略です。
上記4種類の命令を指定した場合、データは符号付きとして扱われます。データを符号無しとして扱う場合は命令に「_U」を追記します。
パルス実行形は、入力条件がONしたときの1スキャンのみ実行される命令です。
CMP:16ビット連続実行形(基本の形)
16ビット連続実行形の比較命令は”CMP”と指令します。
こちらがCMP命令のラダープログラム例です。
このラダープログラムは、入力条件であるX0がONしている間、定数5とデータレジスタD0の値を比較します。比較した結果に応じて下記のように内部リレーM0~M2のいずれかをONさせます。
D0が5未満のとき(5>D0) | → M0がONする |
D0が5のとき(5=D0) | → M1がONする |
D0が5超過のとき(5<D0) | → M2がONする |
D0の値に応じて、M0~M2の何れか1ヶが必ずONします。
CMP命令は「連続実行形」であるため、X0がON中にD0の値が変化すると比較結果であるM0~M2も追従して変わります。
先ほどのラダープログラムはGX Works3の回路上で『CMP K5 D0 M0』と入力してEnterキーを押すと命令が挿入されます。(小文字でもOKです。)
CMPP:16ビットパルス実行形
16ビットパルス実行形の比較命令は”CMPP”と指令します。
こちらがCMPP命令のラダープログラム例です。
連続実行形(CMP命令)との違いは、入力条件であるX0がOFF→ONになった瞬間に1回だけ比較命令が実行されることです。
X0がONしている状態でD0の値が変化しても、比較結果であるM0~M2の値は変わりません。
DCMP・DCMPP:32ビット実行形
32ビット連続実行形の比較命令は”DCMP”と指令します。
32ビットパルス実行形の比較命令は”DCMPP”と指令します。
こちらがDCMP・DCMPP命令を使用したラダープログラム例です。
32ビット実行形の場合、比較対象のデバイスはどちらも2ワード(32ビット)長として扱われます。
↑のラダープログラムの場合、比較対象はD0・D1になります。
2.【例題①】常に比較命令を実行する
下記仕様のラダープログラムを比較命令を用いて解説します。
データレジスタD0の状態により以下の通りランプを点灯させる。
D0が8未満のとき、ランプ(Y0)が点灯
D0が8のとき、ランプ(Y1)が点灯
D0が8超過のとき、ランプ(Y2)が点灯
データレジスタを1ずつ加算させるためにはインクリメント(INC)命令を使用します。
タイムチャート
タイムチャートは以下のようになります。
X0がONするたびにD0が1ずつ加算され、比較結果に応じてY0~Y2の何れかがONします。
GOTの動作イメージ
GOTの動作イメージは以下のようになります。
※使用していないデバイスが多々ありますがご了承ください。
スイッチ(X0)を押すたびにD0が加算され、比較結果に応じてランプ(Y0)~(Y2)の何れかが点灯します。
ラダープログラム
ラダープログラムは以下のようになります。
スイッチ(X0)を押すたびにデータレジスタD0を1ずつ加算するため、パルス実行形のインクリメント(INCP)命令を使用します。(1行目)
SM400を入力条件とする比較(CMP)命令を用いて、データレジスタD0の値と定数8を比較します。
比較(CMP)命令の入力条件をSM400にすることで、常にD0と定数8を比較します。よって、M0~M2のいずれか1ヶが必ずONします。
3.【例題②】スイッチが押されている時のみ比較命令を実行する
下記仕様のラダープログラムを比較命令を用いて解説します。
データレジスタD0の状態により、スイッチ(X1)がおされているときのみ以下の通りランプを点灯させる。
D0が8未満のとき、ランプ(Y0)が点灯
D0が8のとき、ランプ(Y1)が点灯
D0が8超過のとき、ランプ(Y2)が点灯
【例題①】は比較(CMP)命令を常に実行することで、必ずランプのいずれかがONしていました。今回はスイッチ(X1)が押している間のみ比較命令を実行します。
GOTの動作イメージ
GOTの動作イメージは以下のようになります。
スイッチ(X0)を押すたびにD0が加算されます。(【例題①】と同様)
データレジスタD0と定数8を比較して、スイッチ(X1)が押されている間のみランプ(Y0)~(Y2)の何れかが点灯します。
ラダープログラム
ラダープログラムは以下のようになります。
【例題①】と同様、スイッチ(X0)を押すたびにパルス実行形のインクリメント(INCP)命令でデータレジスタD0を1ずつ加算します。(1行目)
スイッチ(X1)が押されている間のみデータレジスタD0と定数8を比較するため、比較(CMP)命令の入力条件をX1とします。
比較(CMP)命令でONしたビットデバイスは、リセット(RST)命令などを用いて新たに”0”を書き込まなければ”1”を保持します。
スイッチ(X1)が押されていない間は各ランプを消灯させるため、M0~M2を一括リセット(BKRST)命令を用いて一括で”0”を書き込みます。
4. おわりに
三菱電機製シーケンサiQ-Rシリーズにおける接点形比較命令について解説しました。
2ヶのデバイスの値を比較する点では接点形比較命令とよく似ています。接点形比較命令は不等号を使用するため、ラダープログラムを見て直感的に判断できる理由で私は接点形比較命令をよく使います。
よく似た命令でCMLと指令するものがあります。これは反転転送命令と呼ばれる命令で、比較命令とは全く関係ありません。
以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。
ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。
各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。
ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。
『doda』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。
「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。