【三菱Qシリーズ】浮動小数点減算(E-)命令の指令方法とラダープログラム例

【三菱Qシリーズ】浮動小数点減算(E-)命令の指令方法とラダープログラム例

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

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

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

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

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

※)MELSEC-Lシリーズも含まれていますがご了承ください。
※1)シリアルNo.の上5桁が”04122”以降のみ使用可能です。
※2)使用できない命令があります。(詳細は後述します)

QシリーズにおけるBIN16,32ビット形の減算命令については以下のページで解説しております。

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

Qシリーズにおける他の浮動小数点四則演算(加算・乗算・除算)については以下のページで解説しております。

【三菱Qシリーズ】浮動小数点加算E命令の指令方法とラダープログラム例【三菱Qシリーズ】浮動小数点加算(E+)命令の指令方法とラダープログラム例 【三菱Qシリーズ】浮動小数点乗算(E*)命令の指令方法とラダープログラム例【三菱Qシリーズ】浮動小数点乗算(E*)命令の指令方法とラダープログラム例 【三菱Qシリーズ】浮動小数点除算E/命令の指令方法とラダープログラム例【三菱Qシリーズ】浮動小数点除算(E/)命令の指令方法とラダープログラム例

1. 浮動小数点減算命令の指令方法

浮動小数点減算命令には、4種類の指令方法があります。

E-:32ビット実数形の連続実行形
E-P:32ビット実数形のパルス実行形
ED-:64ビット実数形の連続実行形
ED-P:64ビット実数形のパルス実行形

工業分野の標準化を行うIEEEの一つであるIEEE 754によると「32ビット実数形は単精度浮動小数点」「64ビット実数形は倍精度浮動小数点」と呼ばれます。

三菱電機製シーケンサQシリーズにおいても、ラダープログラム内で使用する実数はIEEE 754に準拠しています。

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

E-:32ビット実数型の連続実行形(基本の形)

32ビット実数形の連続実行形の浮動小数点減算命令は”E-“と指令します。

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

10_E-命令

このラダープログラムは、入力条件であるX0がONしている間、データレジスタD0,D1からD2,D3のデバイス値の減算した結果をD4,D5に格納するものです。

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

10_E+命令イメージ

E-命令は連続実行形であるため、X0がON中にD0~D3のデバイス値が変わると減算結果であるD4,D5の値も追従して変化します。


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

10_命令挿入

E-P:32ビット実数形のパルス実行形

32ビット実数形のパルス実行形の浮動小数点減算命令は”E-P”と指令します。

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

11_E-P命令

連続実行形(E-命令)との違いは、入力条件である入力リレーX0がON中にD0~D3の値が変わっても減算結果であるD4,D5の値は追従して変化しないことです。

X0がONした瞬間にD0,D1からD2,D3を減算した結果をD4,D5に格納します。

メモ
入力条件がOFF→ONしたときに浮動小数点減算命令を1スキャンだけ実行します。

ED-・ED-P:64ビット実数形

注意
この命令は「ユニバーサルモデルQCPU」「LCPU」のみ使用可能です。使用できないCPUがあるのでご注意ください。

64ビット実数形の連続実行形の浮動小数点減算命令は”ED-”と指令します。

64ビット実数形のパルス実行形の浮動小数点減算命令は”ED-P”と指令します。

こちらがED-・ED-P命令のラダープログラム例です。

12_ED-命令
13_ED-P命令

このラダープログラムは、入力条件であるX0がONしている間、データレジスタD0~D3からD4~D7のデバイス値の減算した結果をD8~D11に格納するものです。

64ビット実数形の場合、指定したデバイスを最若番とする4ワード(64ビット)長として扱われます。

12_ED-命令イメージ

64ビット実数形を用いてデバイスを倍精度浮動小数点として扱う場合、有効桁数が15桁となります。(単精度浮動小数点の場合は7桁)

注意
上のラダープログラム例では、D8~D11を減算結果の演算先として使用されるため、他の用途で使用できなくなります。

2.【例題】単精度浮動小数点の減算値を求める

下記仕様のラダープログラムを浮動小数点減算命令を用いて解説します。

仕様
スイッチ(X0)を押すと、データレジスタD0,D1に定数1.234を転送する。
スイッチ(X1)を押すと、データレジスタD2,D3に定数5.678を転送する。
スイッチ(X2)を押すと、データレジスタD4,D5にD0,D1からD2,D3を減算した結果を格納する。
スイッチ(X7)を押すと、データレジスタD0~D3に定数0を転送する。
データレジスタはすべて32ビット長の「単精度浮動小数点」として扱う。

データレジスタに単精度浮動小数点の定数を転送するため、今回は浮動小数点転送(EMOV)命令を使用します。浮動小数点転送(EMOV)命令については以下のページで解説しておりますので、宜しければご覧ください。

00_【三菱Qシリーズ】浮動小数点転送(EMOV)命令の指令方法とラダープログラム例【三菱Qシリーズ】浮動小数点転送(EMOV)命令の指令方法とラダープログラム例

GOTの動作イメージ

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

例題①_GOT

スイッチ(X0)を押すとD0,D1に定数1.234を、スイッチ(X1)を押すとD2,D3に定数5.678を転送します。

スイッチ(X2)を押すと、D4,D5にD0,D1からD2,D3を減算した結果を格納します。

スイッチ(X7)を押すとD0~D3に定数0を転送します。

ラダープログラム

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

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

32ビット実数形の浮動小数点転送(EMOV)命令を使用して、D0,D1に定数1.234を転送します。(1行目)

同様に、浮動小数点転送(EMOV)命令を使用して、D2,D3に定数5.678を転送します。(2行目)

メモ
定数値は、頭文字に”E”を付けることで実数データとして扱われます。

浮動小数点減算(E-)命令を使用して、32ビット実数形としてD0,D1からD2,D3を減算した結果をD4,D5に格納します。(3行目)

最後に、浮動小数点転送(EMOV)命令を使用して、D0~D3に定数0を転送します。(4,5行目)

注意
X7がONしただけではD4,D5は”0”になりません。
D4,D5を”0”にするためには、D0~D3が”0”の状態でX2をONさせる(減算させる)必要があります。

3. おわりに

三菱電機製シーケンサQシリーズにおける浮動小数点減算命令について解説しました。

小数点を含む演算をラダープログラム内で行う場合、浮動小数点関係の命令は避けて通れません。浮動小数点減算命令は比較的使用される機会が多い命令だと思います。

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

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

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

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

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

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

コメントを残す

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