【三菱Qシリーズ】2の補数(NEG)命令の指令方法とラダープログラム例

00_【三菱Qシリーズ】2の補数(NEG)命令の指令方法とラダープログラム例

三菱電機製シーケンサQシリーズにおける「2の補数」命令とは、指定したデバイスの2の補数(各ビットを反転して+1した結果)を求めるラダープログラム命令です。

2の補数命令を用いることにより、デバイス値の符号を反転させたり、絶対値を求めることができます。

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

注意
この記事中のラダープログラムはGX Works2で作成しており、PCタイプはQ03UDEに設定してあります。

三菱電機製シーケンサQシリーズにおいて、2の補数命令は以下のCPUで使用することが可能です。

Basic:ベーシックモデルQCPU
High performance:ハイパフォーマンスモデルQCPU
Process:プロセスCPU
Redundant:二重化CPU
Universal:ユニバーサルモデルQCPU
LCPU:LCPU

※MELSEC-Lシリーズも含まれていますがご了承ください。

三菱電機製シーケンサFXシリーズでは、FX3G/FX3UCのみ指令することが可能です。因みにFXシリーズでは「補数」命令と呼びます。

補数命令は以下のページで解説しておりますので宜しければご覧ください。

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

1. 2の補数命令の指令方法

2の補数命令には、4種類の指令方法があります。

NEG:16ビット連続実行形
NEGP:16ビットパルス実行形
DNEG:32ビット連続実行形
DNEGP:32ビットパルス実行形

NEGは、否定・否認・打消し(Negation)の略です。

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

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

16ビット連続実行形の2の補数命令は”NEG”と指令します。

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

10_NEG命令

このラダープログラムは、入力条件であるX0がONしている間、データレジスタD0の符号を反転するものです。

NEG命令は連続実行形であるため、良くも悪しくもX0がONしている間はD0の符号が毎スキャン反転し続けます。

例えば、↑のラダープログラムでX0をONすると、D0のデバイス値は以下のようになります。※D0には事前に1000を格納しています。

10_命令解説

デバイス値の符号を反転させる場合、入力条件を1スキャンパルスにするか、後述するパルス実行形を用いる必要があります。


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

10_命令挿入

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

16ビットパルス実行形の2の補数命令は”NEGP”と指令します。

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

11_NEGP命令

連続実行形(NEG命令)との違いは、入力条件である入力リレーX0がOFF→ONになった瞬間に1回だけ符号が反転させることです。

メモ
入力条件がOFF→ONしたときに2の補数命令を1スキャンだけ実行します。

DNEG・DNEGP:32ビット実行形

32ビット連続実行形の2の補数命令は”DNEG”と指令します。

32ビットパルス実行形の2の補数命令は”DNEGP”と指令します。

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

12_DNEG命令
13_DNEGP命令

32ビット実行形の場合、指定したワードデバイスを若番とする2ワード(32ビット)長を対象とします。

↑のラダープログラムは、データレジスタD0・D1のデバイス値の符号を反転させます。

2.【例題①】データレジスタの符号を反転する

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

仕様
スイッチ(X0)を押したとき、データレジスタD0の符号を反転する。

2の補数命令を用いることで、データレジスタの符号を反転させます。

GOTの動作イメージ

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

例題①_GOT

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

スイッチ(X0)を押すと、データレジスタD0の符号が反転します。

ラダープログラム

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

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

16ビットパルス実行形で解説したラダープログラムをそのまま使用しています。

入力条件をX0とする16ビットパルス実行形の2の補数(NEGP)命令を用いることにより「スイッチ(X0)を押すと、データレジスタD0の符号を反転する。」ラダープログラムになります。

仮に16ビット連続実行形であるNEG命令を用いると、スイッチ(X0)を押している間、毎スキャンD0の符号が反転し続けてしまいます。

3.【例題②】データレジスタの絶対値を求める

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

仕様
スイッチ(X0)を押すと、データレジスタD0からD1を減算した絶対値をD2に格納する。

三菱電機製シーケンサQシリーズでは、デバイス値を減算する命令が用意されています。減算命令については以下のページで解説しております。

00_【三菱Qシリーズ】減算(-)命令の指令方法とラダープログラム例 【三菱Qシリーズ】減算(-)命令の指令方法とラダープログラム例

減算命令の結果が0未満であれば、2の補数命令を実行して符号を反転されます。データレジスタのデバイス値は接点形比較命令を用いることで比較することができます。接点形比較命令については後日記事にまとめます。

GOTの動作イメージ

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

例題②_GOT

スイッチ(X0)を押すと、データレジスタD0からD1を減算した絶対値をD2に格納します。

ラダープログラム

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

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

入力条件をX0とする減算命令を用いて、D0からD1を引いた値をD2に格納します。

その後、接点形比較命令を用いて「D2が0より小さい」とき、つまりD2が負の値のときのみ2の補数(NEG)命令を実行します。

4. おわりに

三菱電機製シーケンサQシリーズにおける2の補数命令について解説しました。

【例題②】で解説した「絶対値を求めるラダープログラム」は2の補数命令を使用せずに、-1を乗算することでも実現可能です。乗算命令については以下のページで解説しておりますので、宜しければご覧ください。

00_【三菱Qシリーズ】乗算(*)命令の指令方法とラダープログラム例 【三菱Qシリーズ】乗算(*)命令の指令方法とラダープログラム例

以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。

ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。

各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。

ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。

doda』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。

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

コメントを残す

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