【キーエンスKV】一括転送(FMOV)命令の指令方法とラダープログラム例

00_【キーエンスKV】一括転送(FMOV)命令の指令方法とラダープログラム例

キーエンスKVシリーズにおける「一括転送」命令とは、16/32/64ビットデータを参照先に一括転送するラダープログラム命令です。

一括転送命令を用いることにより、1回の命令で「1ヶのデバイス値」を「他の連続したデバイス」にコピーすることができます。(1点→n点)

この記事では、キーエンスKVシリーズにおける一括転送命令の指令方法ラダープログラム例について解説します。

注意
この記事中のラダープログラムはKV STUDIO Ver.11で作成しており、対応機種はKV-N24に設定してあります。
メモ
一括転送(FMOV)命令はKV-8000・KV-7500/7300・KV-5500/5000/3000・KV-1000・KV-nanoシリーズで使用可能です。※2020年10月現在

キーエンスKVシリーズにはデータ転送(MOV)命令やブロック転送(BMOV)命令等がありますが、本記事では対象としていません。

データ転送(MOV)命令については以下のページで解説しております。

00_【キーエンスKV】データ転送(MOV)命令の指令方法とラダープログラム例 【キーエンスKV】データ転送(MOV)命令の指令方法とラダープログラム例

ブロック転送(BMOV)命令については以下のページで解説しております。

00_【キーエンスKV】ブロック転送(BMOV)命令の指令方法とラダープログラム例 【キーエンスKV】ブロック転送(BMOV)命令の指令方法とラダープログラム例

1. 一括転送命令の指令方法

一括転送命令は、『毎スキャン実行型』『微分実行型(パルス実行型)』に大別されます。

毎スキャン実行型とは、実行条件がONしている間、その命令を毎スキャン実行するものです。対して微分実行形(パルス実行型)とは、実行条件がOFF→ONになったときの1スキャンのみ実行するものです。

FMOV:毎スキャン実行型の一括転送命令

毎スキャン実行型の一括転送命令は、扱うデバイスのデータ型によって、さらに6種類に分けられます。

以下が毎スキャン実行型の一括転送命令です。

FMOV(.U):16ビット符号無しBINデータ
FMOV.S:16ビット符号付きBINデータ
FMOV.D:32ビット符号無しBINデータ
FMOV.L:32ビット符号付きBINデータ
FMOV.F:単精度浮動小数点型実数データ
FMOV.DF:倍精度浮動小数点型実数データ

扱う「データ長」や「符号付きor無し」などはサフィックスと呼ばれる接尾語を命令につけて指定します。

メモ
16ビット符号無しBINデータの場合、サフィックスである.UはKV STUDIO上では表示が省略されます。


KV STUDIOで作成した各々の毎スキャン実行型の一括転送命令は以下のようになります。

↓が16ビット符号無しBINデータの一括転送(FMOV)命令です。

10_FMOV命令

このラダープログラムは、実行条件である入力リレーR000がONしている間、データメモリDM0の値をDM10~DM14に一括で転送するものです。#5は一括で転送する点数を指定しています。

このラダープログラムの動作は以下のようなイメージです。

10_命令イメージ

同じ動作のラダープログラムをデータ転送(MOV)命令で作ると以下のようになります。

10_MOV命令のイメージ

MOV命令では点数が多くなるにつれてラダープログラムはさらに大きくなります。FMOV命令の場合、一括で転送する点数は命令内の指定値で変えることができるのでラダープログラムは大きくなりません。

メモ
一括で転送する点数の指定値は1~65535を指定してください。


↓が16ビット符号付きBINデータの一括転送(FMOV.S)命令です。

11_FMOV.S命令

このラダープログラムは、R000がONしている間、16ビット符号付きBINデータのデータメモリDM0のデバイス値をDM10~DM14に一括で転送するものです。


↓が32ビット符号無しBINデータの一括転送(FMOV.D)命令です。

12_FMOV.D命令

このラダープログラムは、R000がONしている間、32ビット符号無しBINデータのデータメモリDM0,DM1のデバイス値をDM10~DM19に一括で転送するものです。

メモ
データメモリDMは、1点が16ビットで構成されるデバイスです。32ビット命令を使用する場合は1点が2ワード(32ビット)長として扱われます。

このラダープログラムの動作は以下のようなイメージです。

12_FMOVD命令イメージ


↓が32ビット符号付きBINデータの一括転送(FMOV.L)命令です。

13_FMOV.L命令

このラダープログラムは、R000がONしている間、32ビット符号付きBINデータのデータメモリDM0,DM1のデバイス値をDM10~DM19に一括で転送するものです。


↓が単精度浮動小数点型実数データの一括転送(FMOV.F)命令です。

14_FMOV.F命令

このラダープログラムは、R000がONしている間、単精度浮動小数点型実数データのデータメモリDM0,DM1のデバイス値をDM10~DM19に一括で転送するものです。

メモ
単精度浮動小数点型実数は32ビットデータとして扱われます。つまりデータメモリDMの場合は、指定したデータメモリを下位とする2点を占有します。


↓が倍精度浮動小数点型実数データの一括転送(FMOV.DF)命令です。

15_FMOV.DF命令

このラダープログラムは、R000がONしている間、倍精度浮動小数点型実数データのデータメモリDM0~DM3のデバイス値をDM10~DM29に一括で転送するものです。

メモ
倍精度浮動小数点型実数は64ビットデータとして扱われます。つまりデータメモリDMの場合は、指定したデータメモリを最下位とする4点を占有します。

このラダープログラムの動作は以下のようなイメージです。

15_FMOV.DF命令イメージ

@FMOV:微分実行型(パルス実行型)の一括転送命令

微分実行型(パルス実行型)の一括転送命令は、毎スキャン実行型と同様にサフィックスによって、さらに6種類に分けられます。

@FMOV(.U):16ビット符号無しBINデータ
@FMOV.S:16ビット符号付きBINデータ
@FMOV.D:32ビット符号無しBINデータ
@FMOV.L:32ビット符号付きBINデータ
@FMOV.F:単精度浮動小数点型実数データ
@FMOV.DF:倍精度浮動小数点型実数データ

命令の頭文字に@を付けることで、実行条件がOFF→ONになったときの1スキャンしか実行されない微分実行型(パルス実行型)となります。


KV STUDIOで作成した各々の微分実行型(パルス実行型)の一括転送命令は以下のようになります。

↓が微分実行型(パルス実行型)16ビット符号無しBINデータの一括転送(@FMOV)命令です。

20_@FMOV命令

微分実行型(パルス実行型)の場合、命令文の左側に上向きの矢印が表示されます。

このラダープログラムは、実行条件である入力リレーR000がOFF→ONした瞬間に、データメモリDM0の値をDM10~DM14に一括で転送するものです。#5は一括で転送する点数を指定しています。

このように、微分実行型(パルス実行型)の場合は実行条件がOFF→ONになった瞬間の1スキャンしか命令が実行されません。

扱うデバイスのデータ型によるサフィックスの指定方法に関しては、毎スキャン実行型と同様です。


その他の微分実行型(パルス実行型)の一括転送命令は以下のようになります。

命令の解説は省略しますが、実行条件がOFF→ONになった瞬間に1スキャンだけ実行されるもので、その他は毎スキャン実行型と同じ機能と捉えて頂いて問題ありません。

↓が微分実行型(パルス実行型)16ビット符号付きBINデータの一括転送(@FMOV.S)命令です。

21_@FMOVS命令


↓が微分実行型(パルス実行型)32ビット符号無しBINデータの一括転送(@FMOV.D)命令です。

22_@FMOVD命令


↓が微分実行型(パルス実行型)32ビット符号付きBINデータの一括転送(@FMOV.L)命令です。

23_@FMOVL命令


↓が微分実行型(パルス実行型)単精度浮動小数点型実数データの一括転送(@FMOV.F)命令です。

24_@FMOVF命令


↓が微分実行型(パルス実行型)倍精度浮動小数点型実数データの一括転送(@FMOV.DF)命令です。

25_@FMOVDF命令

KV STUDIOにおける命令挿入の方法

一括転送命令をKV STUDIOの回路上に挿入するには「命令文 転送元 転送先 転送する点数」と回路上で入力します。

例1 先ほどの毎スキャン実行型の16ビット符号無しBINデータの一括転送(FMOV)命令を挿入する場合、KV STUDIOの回路上でFMOV DM0 DM10 #5と入力してEnterキーを押します。

30_命令挿入


例2)先ほどの微分実行型(パルス実行型)の32ビット符号付きBINデータの一括転送(@FMOV.L)命令を挿入する場合、KV STUDIOの回路上で@FMOV.L DM0 DM10 #5と入力してEnterキーを押します。

31_命令挿入

2.【例題①】定数を一括転送する

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

仕様
スイッチ(R000)を押すと、データメモリDM0~DM4に定数”0”を転送する。
スイッチ(R001)を押すと、データメモリDM0~DM4に定数”50”を転送する。
※1)各データメモリは16ビット符号無しBINデータとして扱う。
※2)スイッチが同時に複数押されることはないこととする。

一括転送命令を用いて、データメモリに定数を一括で転送します。

タッチパネルの動作イメージ

タッチパネルの動作イメージは以下のようになります。

例題①_タッチパネル

スイッチ(R000)を押すと、データメモリDM0~DM4に定数”0”を転送します。スイッチ(R001)を押すと、データメモリDM0~DM4に定数”50”を転送します。

ラダープログラム

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

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

データメモリDM0~DM4に定数を転送するために、一括転送命令を使用します。

転送先であるDM0~DM4は5ワードであるため、命令内の転送する点数は#5と指令します。

3.【例題②】デバイス値を一括転送する

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

仕様
スイッチ(R000)を押すと、データメモリDM0~DM4にDM10のデバイス値を転送する。
スイッチ(R001)を押すと、データメモリDM0~DM4にDM11のデバイス値を転送する。
※1)各データメモリは16ビット符号付きBINデータとして扱う。
※2)スイッチが同時に複数押されることはないこととする。

【例題①】ではDM0~DM4に定数を転送しましたが、今回は他のデータメモリのデバイス値を転送します。

タッチパネルの動作イメージ

タッチパネルの動作イメージは以下のようになります。

例題②_タッチパネル

スイッチ(R000)を押すと、データメモリDM0~DM4にDM10のデバイス値を転送します。

スイッチ(R001)を押すと、データメモリDM0~DM4にDM11のデバイス値を転送します。

ラダープログラム

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

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

入力リレーR000を入力条件とする一括転送命令を用いて、DM10のデバイス値をDM0~DM4に一括で転送します。

入力リレーR001を入力条件とする一括転送命令を用いて、DM11のデバイス値をDM0~DM4に一括で転送します。

各データメモリは16ビット符号付きBINデータとして扱うため、16ビット符号付きBINデータの一括転送(FMOV.S)命令を使用します。

4. おわりに

キーエンスKVシリーズにおける一括転送(FMOV)命令について解説しました。

よく似た命令でブロック転送(BMOV)命令がありますが、動作が異なるので使用する際はご注意ください。(私はよくごっちゃになります。)

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

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

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

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

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

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

コメントを残す

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