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

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

三菱電機製シーケンサQシリーズにおける「浮動小数点転送」命令とは、浮動小数点実数のデバイス値や定数値を他のデバイスに転送(コピー)するラダープログラム命令です。

浮動小数点転送命令を用いることで、実数のデバイス値や定数を「データレジスタ」や「ファイルレジスタ」といったワードデバイスにコピーすることができます。

実数をラダープログラム内で使用する場合、頻繁に使用されるラダープログラム命令です。

この記事では、三菱電機製シーケンサ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)使用できない命令があります。(詳細は後述します)

1. 浮動小数点転送命令の指令方法

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

EMOV:32ビット実数形の連続実行形
EMOVP:32ビット実数形のパルス実行形
EDMOV:64ビット実数形の連続実行形
EDMOVP:64ビット実数形のパルス実行形

EMOVは、Extended moveの略です。

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

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

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

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

32ビット実数形の連続実行形の浮動小数点転送命令は”EMOV”と指令します。

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

10_EMOV命令

このラダープログラムは、X0がONすると32ビット浮動小数点実数データの定数1.2345をデータレジスタD0,D1に転送するものです。

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

32ビット実数形の連続実行形で実数データを転送した場合、転送元・転送先は共に2ワード(32ビット)長として扱われます。


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

10_命令挿入

EMOVP:32ビット実数形のパルス実行形

32ビット実数形のパルス実行形の転送命令は”EMOVP”と指令します。

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

11_EMOVP命令

連続実行形(EMOV命令)との違いは「入力条件がONした瞬間のみ転送命令が実行される」ことです。

X0とX1が両方ONした場合、後に入力された方が優先されます。

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

EDMOV・EDMOVP:64ビット実数形

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

64ビット実数形の連続実行形の浮動小数点転送命令は”EDMOV”と指令します。

64ビット実数形のパルス実行形の浮動小数点転送命令は”EDMOVP”と指令します。

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

12_EDMOV命令
13_EDMOVP命令

64ビット実数形の場合、転送元・転送先は共に4ワード(64ビット)長として扱われます。

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

注意
上のラダープログラム例では、D0~D3を転送先として使用されるため、他の用途で使用できなくなります。

2.【例題】単精度浮動小数点のデバイス値を転送する

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

仕様
スイッチ(X0)を押すと、データレジスタD0,D1に定数1.234を転送する。
スイッチ(X1)を押すと、データレジスタD0,D1に定数0を転送する。
スイッチ(X0)と(X1)が両方押された場合、スイッチ(X1)を優先して定数0を転送する。
スイッチ(X2)を押すと、データレジスタD0,D1の値をD2,D3に転送する。
データレジスタはすべて32ビット長の「単精度浮動小数点」として扱う。

データレジスタは単精度浮動小数点として扱うため、32ビット実数形の浮動小数点転送命令を使用します。

GOTの動作イメージ

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

例題①_GOT

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

スイッチ(X0)と(X1)が両方押された場合、スイッチ(X1)を優先して定数0が転送されます。

スイッチ(X2)を押すと、データレジスタD0,D1の値をD2,D3に転送(コピー)します。

ラダープログラム

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

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

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

連続実行形の場合、入力条件がONしている間は命令が常に実行されます。同時に複数のEMOV命令が実行された場合、ラダープログラム下部の命令が優先されます。

つまり、スイッチ(X0)と(X1)が両方押された場合、スイッチ(X1)を優先してD0,D1には定数0が転送されます。

3. おわりに

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

小数点を含む演算をラダープログラム内で行う場合、浮動小数点関係の命令は避けて通れません。中でも浮動小数点転送命令は良く使用される命令だと思います。

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

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

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

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

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

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

コメントを残す

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