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

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

「乗算命令」とは、三菱電機製シーケンサFXシリーズにおける2ヶの定数またはデバイス値を乗算して結果を求めるラダープログラム命令です。(A×B=C)

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

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

三菱電機製シーケンサFXシリーズにおいて、乗算命令は以下のシーケンサ・バージョンで使用することが可能です。

FX3S:Ver1.00以降
FX3G:Ver1.00以降
FX3GC:Ver1.40以降
FX3U:Ver2.20以降
FX3UC:Ver1.00以降

他の四則演算(加算・減算・除算)については以下のページで解説しておりますので、宜しければご覧ください。

00_【三菱FXシリーズ】加算(ADD)命令の指令方法とラダープログラム例【三菱FXシリーズ】加算(ADD)命令の指令方法とラダープログラム例 00_【三菱FXシリーズ】減算(SUB)命令の指令方法とラダープログラム例【三菱FXシリーズ】減算(SUB)命令の指令方法とラダープログラム例 00_【三菱FXシリーズ】除算(DIV)命令の指令方法とラダープログラム例【三菱FXシリーズ】除算(DIV)命令の指令方法とラダープログラム例

1. 乗算命令の指令方法

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

MUL:16ビット連続実行形
MULP:16ビットパルス実行形
DMUL:32ビット連続実行形
DMULP:32ビットパルス実行形

MULは、乗算(Multiplication)の略です。

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

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

16ビット連続実行形の乗算命令は”MUL”と指令します。

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

10_MUL命令

このラダープログラムは、入力条件であるX0がONしている間、データレジスタD0とD1を掛けた結果をD2・D3に格納します。加算・減算と異なり、16ビット実行形の演算先は2ワード(32ビット)を占有します。

注意
ラダープログラム上ではD3を指令していませんが、他の用途で使用できなくなります。
[MUL D0 D1 D2]の動作は以下のようになります。

10_MUL命令動作

MUL命令は連続実行形であるため、X0がON中にD0またはD1の値が変わるとD2・D3の値も追従して変わります。


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

10_命令挿入

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

16ビットパルス実行形の乗算命令は”MULP”と指令します。

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

11_MULP命令

連続実行形(MUL命令)との違いは、入力条件X0がON中にD0またはD1の値が変わってもD2・D3の値は追従して変化しないことです。

X0がONした瞬間のD0とD1を掛けた結果をD2・D3に格納します。

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

DMUL・DMULP:32ビット実行形

32ビット連続実行形の乗算命令は”DMUL”と指令します。

32ビットパルス実行形の乗算命令は”DMULP”と指令します。

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

12_DMUL命令
13_DMULP命令

32ビット実行形の場合、演算元のデバイスは指定されたデバイスを若番とする2ワード(32ビット)長として扱われます。演算先は指定されたデバイスを最若番とする4ワード(64ビット)長として扱われます。

↑のラダープログラムの場合、D0・D1とD2・D3を掛けた結果をD4~D7に格納します。

12_DMUL命令動作
注意
ラダープログラム上ではD1・D3・D5・D6・D7を指令していませんが、他の用途で使用できなくなります。(特に演算先が4ワード長になるので要注意です。)

2.【例題①】1ワード長の乗算値を求める

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

仕様
スイッチ(X0)を押すと、データレジスタD0に定数8を転送する。
スイッチ(X1)を押すと、データレジスタD1に定数9を転送する。
スイッチ(X2)を押すと、データレジスタD2・D3にD0とD1を掛けた結果を転送する。
スイッチ(X7)を押すと、データレジスタD0とD1に定数0を転送する。
※スイッチが同時に複数ONすることはないとする。

データレジスタに定数を転送するため、今回は転送(MOV)命令を使用します。

転送(MOV)命令については以下のページで解説しておりますので、宜しければご覧ください。

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

タイムチャート

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

例題①_タイムチャート

入力リレーX0がONすると、データレジスタD0に定数8を転送します。入力リレーX1がONすると、データレジスタD1に定数9を転送します。

入力リレーX2がONすると、データレジスタD0とD1を掛けた結果をD2・D3に転送します。

入力リレーX7がONすると、データレジスタD0とD1に定数0を転送します。(リセット的な意味)

GOTの動作イメージ

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

例題①_GOT

スイッチ(X0)を押すとデータレジスタD0に定数8を、スイッチ(X1)を押すとデータレジスタD1に定数9を転送します。

スイッチ(X2)を押すとデータレジスタD2・D3にD0とD1を掛けた結果を転送します。

スイッチ(X7)を押すと、データレジスタD0とD1に定数0を転送します。

ラダープログラム

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

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

D0に定数8、D1に定数9を転送するために転送(MOV)命令を使用します。

X2がONすると、乗算(MUL)命令が実行されてD0とD1を掛けた結果をD2・D3に転送します。

X7がONすると、D0とD1に定数0を転送しています。D0とD1で分けましたが、32ビット形(DMOV)でまとめても問題ありません。

注意
X7がONしただけでは、D2は”0”になりません。
D2を”0”にするためには、D0とD1が”0”の状態でX2をONさせる(乗算させる)必要があります。

3.【例題②】2ワード長の乗算値を求める

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

仕様
スイッチ(X0)を押すと、データレジスタD0,D1に定数12,345を転送する。
スイッチ(X1)を押すと、データレジスタD2,D3に定数98,765を転送する。
スイッチ(X2)を押すと、データレジスタD4~D7にD0,D1とD2,D3を掛けた結果を転送する。
スイッチ(X7)を押すと、データレジスタD0~D3に定数0を転送する。
※スイッチが同時に複数ONすることはないとする。

【例題①】と考え方は同じですが、扱う定数の値が大きいのでデータレジスタは2ワード(32ビット)長で使用します。

GOTの動作イメージ

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

例題②_GOT

扱う数値が大きいためデータレジスタは32ビットとして扱いますが、動作としては【例題①】と同様です。

ラダープログラム

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

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

32ビット実行形を使用するために、DMUL命令を使用します。

転送命令も同様に32ビット実行形であるDMOV命令を使用する必要があります。

三菱電機製シーケンサFXシリーズでは、32ビット実行形の命令のほとんどが頭文字に”D”が付きます。(すべてかもしれません。)

X7でDMOV命令を2ヶ使用しましたが、多点転送(FMOV)命令という便利な命令も存在します。この命令を用いることで、1ヶの命令でまとめて定数を転送することができます。

多点転送(FMOV)命令については以下のページで解説しておりますので、宜しければご覧ください。

00_【三菱FXシリーズ】多点転送(FMOV)命令の指令方法とラダープログラム例【三菱FXシリーズ】多点転送(FMOV)命令の指令方法とラダープログラム例

4. おわりに

三菱電機製シーケンサFXシリーズにおける乗算命令について解説しました。

繰り返しになりますが、演算先は16ビット実行形では2ワード(32ビット)、32ビット形では4ワード(64ビット)占有しますので、使用デバイス番号の重複には注意してください。

私は32ビット形の演算先が2ワードだと勘違いして大変な思いをしたことがあります…

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

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

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

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

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

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

コメントを残す

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