【三菱iQ-Rシリーズ】比較(CMP)命令の指令方法とラダープログラム例

【三菱iQ-Rシリーズ】比較(CMP)命令の指令方法とラダープログラム例

三菱電機製シーケンサiQ-Rシリーズにおける「比較」命令とは、2つの定数やデバイス値を比較して、大・一致・小の3パターンをビットデバイスに出力するラダープログラム命令です。

比較命令を用いることにより、2つの定数やデバイスの値の大小の状態により出力・処理内容を変更することができます。

この記事では、三菱電機製シーケンサiQ-Rシリーズにおける比較命令の指令方法ラダープログラム例について解説します。

注意
この記事中のラダープログラムはGX Works3で作成しており、シリーズ:RCPU、機種:R04に設定してあります。
注意
三菱電機の取扱説明書「MELSEC iQ-R プログラミングマニュアル(CPUユニット用命令/汎用FUN/汎用FB編)」によると、比較(CMP)命令は「BIN16ビットデータ比較出力」「BIN32ビットデータ比較出力」と記載されておりますが、本記事では接点形比較命令と区別するため”比較(CMP)命令”と表現します。

三菱電機製シーケンサiQ-Rシリーズにおいて、接点形比較命令は以下のCPUで使用することが可能です。

RnCPU:使用可
RnENCPU:使用可
RnPCPU(プロセス):使用不可
RnPCPU(二重化):使用不可
RnPSFCPU(一般):使用不可
RnPSFCPU(安全):使用不可
RnSFCPU(一般):使用不可
RnSFCPU(安全):使用不可

※R00CPU,R01CPU,R02CPUは,バージョンによる制約はありません。RnCPU(R00CPU,R01CPU,R02CPUを除く),RnENCPUは,ファームウェアバージョンが”17”以降で使用できます。

三菱電機製シーケンサ、FXシリーズにおける接点形比較命令は以下のページで解説しております。※iQ-Rシリーズと同様の使い勝手で指令できるため、類似した記事になります。

00_【三菱FXシリーズ】比較(CMP)命令の指令方法とラダープログラム例 【三菱FXシリーズ】比較(CMP)命令の指令方法とラダープログラム例

2つの定数やデバイスの値を比較できる命令には、他に「接点形比較命令」があります。接点形比較命令については以下のページで解説しておりますので、宜しければご覧ください。

【三菱iQ-Rシリーズ】接点形比較命令の指令方法とラダープログラム例 【三菱iQ-Rシリーズ】接点形比較命令の指令方法とラダープログラム例

1. 比較命令の指令方法

比較命令には、4種類の指令方法があります。

CMP:16ビット連続実行形
CMPP:16ビットパルス実行形
DCMP:32ビット連続実行形
DCMPP:32ビットパルス実行形

CMPは、比べる・比較する(Compare)の略です。

上記4種類の命令を指定した場合、データは符号付きとして扱われます。データを符号無しとして扱う場合は命令に「_U」を追記します。

メモ
連続実行形は、入力条件がONしている間、毎スキャン実行される命令です。
パルス実行形は、入力条件がONしたときの1スキャンのみ実行される命令です。

CMP:16ビット連続実行形(基本の形)

16ビット連続実行形の比較命令は”CMP”と指令します。

こちらがCMP命令のラダープログラム例です。

10_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も追従して変わります。

注意
比較結果を出力するビットデバイスは指定したデバイスを先頭する3点を占有しますので、他の用途では使用できません。重複に注意してください。(上のラダープログラムではM0~M2)


先ほどのラダープログラムはGX Works3の回路上で『CMP K5 D0 M0』と入力してEnterキーを押すと命令が挿入されます。(小文字でもOKです。)

20_命令挿入

CMPP:16ビットパルス実行形

16ビットパルス実行形の比較命令は”CMPP”と指令します。

こちらがCMPP命令のラダープログラム例です。

11_CMPP命令

連続実行形(CMP命令)との違いは、入力条件であるX0がOFF→ONになった瞬間に1回だけ比較命令が実行されることです。

X0がONしている状態でD0の値が変化しても、比較結果であるM0~M2の値は変わりません。

DCMP・DCMPP:32ビット実行形

32ビット連続実行形の比較命令は”DCMP”と指令します。

32ビットパルス実行形の比較命令は”DCMPP”と指令します。

こちらがDCMP・DCMPP命令を使用したラダープログラム例です。

12_DCMP命令
13_DCMPP命令

32ビット実行形の場合、比較対象のデバイスはどちらも2ワード(32ビット)長として扱われます。

↑のラダープログラムの場合、比較対象はD0・D1になります。

注意
ラダープログラム上ではD1を指令していませんが、他の用途で使用できなくなります。

2.【例題①】常に比較命令を実行する

下記仕様のラダープログラムを比較命令を用いて解説します。

仕様
スイッチ(X0)を押すたびに、データレジスタD0を1ずつ加算する。
データレジスタD0の状態により以下の通りランプを点灯させる。
D0が8未満のとき、ランプ(Y0)が点灯
D0が8のとき、ランプ(Y1)が点灯
D0が8超過のとき、ランプ(Y2)が点灯

データレジスタを1ずつ加算させるためにはインクリメント(INC)命令を使用します。

タイムチャート

タイムチャートは以下のようになります。

100_例題①タイムチャート

X0がONするたびにD0が1ずつ加算され、比較結果に応じてY0~Y2の何れかがONします。

GOTの動作イメージ

GOTの動作イメージは以下のようになります。

100_例題①GOT

※使用していないデバイスが多々ありますがご了承ください。

スイッチ(X0)を押すたびにD0が加算され、比較結果に応じてランプ(Y0)~(Y2)の何れかが点灯します。

ラダープログラム

ラダープログラムは以下のようになります。

100_例題①ラダープログラム

スイッチ(X0)を押すたびにデータレジスタD0を1ずつ加算するため、パルス実行形のインクリメント(INCP)命令を使用します。(1行目)

SM400を入力条件とする比較(CMP)命令を用いて、データレジスタD0の値と定数8を比較します。

メモ
三菱電機製シーケンサiQ-RシリーズにおけるSM400は『PLCがRUN中は常にONする』特殊なデバイスです。

比較(CMP)命令の入力条件をSM400にすることで、常にD0と定数8を比較します。よって、M0~M2のいずれか1ヶが必ずONします。

3.【例題②】スイッチが押されている時のみ比較命令を実行する

下記仕様のラダープログラムを比較命令を用いて解説します。

仕様
スイッチ(X0)を押すたびに、データレジスタD0を1ずつ加算する。
データレジスタD0の状態により、スイッチ(X1)がおされているときのみ以下の通りランプを点灯させる。
D0が8未満のとき、ランプ(Y0)が点灯
D0が8のとき、ランプ(Y1)が点灯
D0が8超過のとき、ランプ(Y2)が点灯

【例題①】は比較(CMP)命令を常に実行することで、必ずランプのいずれかがONしていました。今回はスイッチ(X1)が押している間のみ比較命令を実行します。

メモ
比較命令は常に実行させておいて、Y0~Y2の条件にX1を入れる方法でもOKです。 今回は比較命令の動作を解説したいので、『X1』がONしているときのみ比較命令を実行する手法を取ります。

GOTの動作イメージ

GOTの動作イメージは以下のようになります。

110_例題②GOT

スイッチ(X0)を押すたびにD0が加算されます。(【例題①】と同様)

データレジスタD0と定数8を比較して、スイッチ(X1)が押されている間のみランプ(Y0)~(Y2)の何れかが点灯します。

ラダープログラム

ラダープログラムは以下のようになります。

110_例題②ラダープログラム

【例題①】と同様、スイッチ(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』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。

「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です