「除算命令」とは、三菱電機製シーケンサFXシリーズにおける2ヶの定数またはデバイス値を除算して商と剰余(余り)を求める命令です。(A÷B=C 余り D)
この記事では、三菱電機製シーケンサFXシリーズにおける除算命令の指令方法とラダープログラム例について解説します。
三菱電機製シーケンサFXシリーズにおいて、除算命令は以下のシーケンサ・バージョンで使用することが可能です。
FX3S | :Ver1.00以降 |
FX3G | :Ver1.00以降 |
FX3GC | :Ver1.40以降 |
FX3U | :Ver2.20以降 |
FX3UC | :Ver1.00以降 |
他の四則演算(加算・減算・乗算)については以下のページで解説しておりますので、宜しければご覧ください。
【三菱FXシリーズ】加算(ADD)命令の指令方法とラダープログラム例 【三菱FXシリーズ】減算(SUB)命令の指令方法とラダープログラム例 【三菱FXシリーズ】乗算(MUL)命令の指令方法とラダープログラム例目次
1. 除算命令の指令方法
除算命令には、4種類の指令方法があります。
DIV | :16ビット連続実行形 |
DIVP | :16ビットパルス実行形 |
DDIV | :32ビット連続実行形 |
DDIVP | :32ビットパルス実行形 |
DIVは、除算(Division)の略です。
パルス実行形は、入力条件がONしたときの1スキャンのみ実行される命令です。
DIV:16ビット連続実行形(基本の形)
16ビット連続実行形の除算命令は”DIV”と指令します。
こちらがDIV命令を使用したラダープログラム例です。
このラダープログラムは、入力条件であるX0がONしている間、データレジスタD0をD1で割ったときの商をD2、剰余(余り)をD3に転送します。
[DIV D0 D1 D2]の動作は以下のようになります。DIV命令は連続実行形であるため、X0がON中にD0またはD1の値が変わるとD2・D3の値も追従して変わります。
先ほどのラダープログラムはGX Works2の回路上で DIV D0 D1 D2 と入力してEnterキーを押すと挿入されます。(小文字でもOKです。)
DIVP:16ビットパルス実行形
16ビットパルス実行形の除算命令は”DIVP”と指令します。
こちらがDIVP命令を使用したラダープログラム例です。
連続実行形(DIV命令)との違いは、入力条件X0がON中にD0またはD1の値が変化してもD2・D3の値は追従して変化しないことです。
X0がONした瞬間のD0をD1で割ったときの商をD2、剰余(余り)をD3に格納します。
DDIV・DDIVP:32ビット実行形
32ビット連続実行形の除算命令は”DDIV”と指令します。
32ビットパルス実行形の除算命令は”DDIVP”と指令します。
こちらがDDIV・DDIVP命令を使用したラダープログラム例です。
32ビット実行形の場合、演算元のデバイスは指定されたデータレジスタを若番とする2ワード(32ビット)長として扱われます。演算先は指定されたデータレジスタを若番とする2ワードを商とし、指定されたデータレジスタ+2,+3を剰余(余り)として扱われます。
↑のラダープログラムの場合、D4・D5が商、D6・D7が剰余(余り)となります。
2.【例題①】1ワード長の除算値を求める(商と剰余)
下記仕様のラダープログラムを除算命令を用いて解説します。
スイッチ(X1)を押すと、データレジスタD0に定数10を転送する。
スイッチ(X2)を押すと、データレジスタD0を定数2で除算した商をD2、剰余(余り)をD3に転送する。
スイッチ(X7)を押すと、D0に定数0を転送する。
※スイッチが同時に複数ONすることはないとする。
データレジスタに定数を転送するため、今回は転送(MOV)命令を使用します。
転送(MOV)命令については以下のページで解説しておりますので、宜しければご覧ください。
【三菱FXシリーズ】転送(MOV)命令の指令方法とラダープログラム例タイムチャート
タイムチャートは以下のようになります。
入力リレーX0がONすると、データレジスタD0に定数7を転送します。入力リレーX1がONすると、D0に定数10を転送します。
入力リレーX2がONすると、データレジスタD0を定数2で除算した商をD2、剰余(余り)をD3に転送します。
入力リレーX7がONすると、データレジスタD0に定数0を転送します。(リセット的な意味)
GOTの動作イメージ
GOTの動作イメージは以下のようになります。
スイッチ(X0)を押すとデータレジスタD0に定数7を、スイッチ(X1)を押すと定数10を転送します。
スイッチ(X2)を押すと、データレジスタD0を定数2で除算した商をD2、剰余(余り)をD3に転送します。
スイッチ(X7)を押すと、データレジスタD0に定数0を転送します。
ラダープログラム
ラダープログラムは以下のようになります。
D0に定数7・10を転送するために転送(MOV)命令を使用しています。
X2がONすると、除算(DIV)命令が実行されてD0を定数2で除算した商をD2、剰余をD3に転送します。
X7がONすると、D0に定数0を転送しています。
D2を”0”にするためには、D0が”0”の状態でX2をONさせる必要があります。
3.【例題②】2ワード長の除算値を求める(商と剰余)
下記仕様のラダープログラムを除算命令を用いて解説します。
スイッチ(X1)を押すと、データレジスタD0,D1に定数80,000を転送する。
スイッチ(X2)を押すと、データレジスタD0,D1を定数20,000で除算した商をD2,D3、剰余をD4,D5に転送する。
スイッチ(X7)を押すと、D0,D1に定数0を転送する。
※スイッチが同時に複数ONすることはないとする。
【例題①】と考え方は同じですが、扱う定数の値が大きいのでデータレジスタは2ワード(32ビット)長で使用します。
GOTの動作イメージ
GOTの動作イメージは以下のようになります。
扱う数値が大きいためデータレジスタは32ビットとして扱いますが、動作としては【例題①】と同様です。
ラダープログラム
ラダープログラムは以下のようになります。
32ビット実行形を使用するために、DDIV命令を使用します。
転送命令も同様に32ビット実行形であるDMOV命令を使用する必要があります。
三菱電機製シーケンサFXシリーズでは、32ビット実行形の命令のほとんどが頭文字に”D”が付きます。(すべてかもしれません。)
4. おわりに
三菱電機製シーケンサFXシリーズにおける除算命令について解説しました。
演算先は商と剰余(余り)があるため、16ビット実行形では2ワード(32ビット)、32ビット実行形では4ワード(64ビット)占有します。使用デバイスの重複には注意してください。
この除算命令を用いて、ワードデバイスの数値を剰余(余り)を求めることによりデバイス値が偶数であるか奇数であるか判定することができます。以下のページで解説しておりますので、宜しければご覧ください。
【ノウハウ初級】偶数か奇数か判定するラダープログラム例【三菱FX】以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。
ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。
各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。
ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。
『doda』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。
「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。