【キーエンスKV】データメモリライト(DW)命令の指令方法とラダープログラム例

00_【キーエンスKV】データメモリライト(DW)命令の指令方法とラダープログラム例

キーエンスKVシリーズにおける「データメモリライト」命令とは、定数を指定したデバイスに格納するラダープログラム命令です。

データメモリライト命令を用いることにより「データメモリ(DM)やファイルレジスタといったワードデバイスに定数を格納する回路」を作ることができます。

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

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

キーエンスKVシリーズには定数に加えて他のデバイス値を転送するデータ転送(MOV)命令があります。データ転送(MOV)命令については以下のページで解説しております。

00_【キーエンスKV】データ転送(MOV)命令の指令方法とラダープログラム例【キーエンスKV】データ転送(MOV)命令の指令方法とラダープログラム例
メモ
データ転送(MOV)命令はデータメモリライト(DW)命令の機能を兼ねている大変便利な命令ですが、スキャンタイムが(とても些細ですが)長くなります。
・データ転送(MOV)命令:0.09us
・データメモリライト(DW)命令:0.02us~0.03us
※1usは100万分の1秒です。
電気設計人
電気設計人

私は定数をワードデバイスに転送する場合、なるべくデータメモリライト命令に統一するようにしています。

1. データメモリライト命令の指令方法

データメモリライト命令は、『毎スキャン実行型』『微分実行型(パルス実行型)』に大別されます。

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

DW:毎スキャン実行型のデータメモリライト命令

毎スキャン実行型のデータメモリライト命令は、扱うデバイスのデータ型によって、さらに6種類に分けられます。

以下が毎スキャン実行型のデータメモリライト命令です。

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

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

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

KV STUDIOで作成した各々の毎スキャン実行型のデータメモリライト命令は以下のようになります。

↓が16ビット符号無しBINデータのデータメモリライト(DW)命令です。

10_DW命令

このラダープログラムは、実行条件である入力リレーR000がONしている間、10進数の定数5をデータメモリDM0に転送します。

メモ
数値の頭文字が「#」の場合は10進数になり、「$」の場合は16進数になります。

↓が16ビット符号付きBINデータのデータメモリライト(DW.S)命令です。

11_DW.S命令

このラダープログラムは、実行条件である入力リレーR000がONしている間、10進数の定数-5をデータメモリDM0に転送します。


↓が32ビット符号無しBINデータのデータメモリライト(DW.D)命令です。

12_DW.D命令

このラダープログラムは、実行条件である入力リレーR000がONしている間、10進数の定数200,000をデータメモリDM0,DM1に転送します。

メモ
データメモリDMは、1点が16ビットで構成されるデバイスです。32ビット命令を使用する場合は指定したデータメモリを下位として扱われます。
注意
↑のラダープログラムでは、DW.D命令によりデータメモリDM0,DM1が占有されます。DM1はラダープログラム上では使用していないように見えますが、他の用途では使用できなくなります。

↓が32ビット符号付きBINデータのデータメモリライト(DW.L)命令です。

13_DW.L命令

このラダープログラムは、実行条件である入力リレーR000がONしている間、10進数の定数-200,000をデータメモリDM0,DM1に転送します。


↓が単精度浮動小数点型実数データのデータメモリライト(DW.F)命令です。

14_DW.F命令

このラダープログラムは、実行条件である入力リレーR000がONしている間、実数の定数1.234をデータメモリDM0,DM1に転送します。

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

↓が倍精度浮動小数点型実数データのデータメモリライト(DW.DF)命令です。

15_DW.DF命令

このラダープログラムは、実行条件である入力リレーR000がONしている間、実数の定数1.2345678をデータメモリDM0,DM1,DM2,DM3に転送します。

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

@DW:微分実行型(パルス実行型)のデータメモリライト命令

微分実行型(パルス実行型)のデータメモリライト命令は、毎スキャン実行型と同様にサフィックスによって、さらに6種類に分けられます。

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

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


KV STUDIOで作成した各々の微分実行型(パルス実行型)のデータメモリライト命令は以下のようになります。

↓が微分実行型(パルス実行型)16ビット符号無しBINデータのデータメモリライト(@DW)命令です。

20_@DW命令

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

このラダープログラムは、実行条件である入力リレーR000がOFF→ONになった瞬間に、10進数の定数5をデータメモリDM0に転送します。

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

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


その他の微分実行型(パルス実行型)のデータメモリライト命令は以下のようになります。

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

↓が16ビット符号付きBINデータのデータメモリライト(@DW.S)命令です。

21_@DW.S命令

↓が32ビット符号無しBINデータのデータメモリライト(@DW.D)命令です。

22_@DW.D命令

↓が32ビット符号付きBINデータのデータメモリライト(@DW.L)命令です。

23_@DW.L命令

↓が単精度浮動小数点型実数データのデータメモリライト(@DW.F)命令です。

24_@DW.F命令

↓が倍精度浮動小数点型実数データのデータメモリライト(@DW.DF)命令です。

25_@DW.DF命令

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

データ転送命令をKV STUDIOの回路上に挿入するには「命令文 定数 転送先」と回路上で入力します。

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

30_命令挿入1

例2)先ほどの微分実行型(パルス実行型)の32ビット符号付きBINデータのデータメモリライト(@DW.L)命令を挿入する場合、KV STUDIOの回路上で@DW.L -200000 DM0と入力してEnterキーを押します。

31_命令挿入2

2.【例題①】16ビット符号付きBINデータのデータメモリライト

下記仕様のラダープログラムをデータメモリライト命令を用いて解説します。

仕様
スイッチ(R000)を押すと、データメモリDM0に定数5を転送する。
スイッチ(R001)を押すと、データメモリDM0に定数-8を転送する。
スイッチ(R002)を押すと、データメモリDM0に定数0を転送する。
スイッチが同時に複数押された場合、後から押したものを優先する。
データメモリDM0は16ビット符号付きBINデータとして扱う。

スイッチは後に入力されたものを優先する後入力優先回路となります。後入力優先回路を作成するには色々な手段がありますが、今回はデータメモリライト命令を微分実行型(パルス実行型)にすることで後入力を優先する手法を用います。

データメモリDM0は16ビット符号付きBINデータとして扱うため、サフィックスは.Sとなります。

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

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

例題①_タッチパネル

データメモリDM0の数値が一部見難いですがご了承くださいm(__)m

スイッチを押すと、以下のようにデータメモリDM0に定数を転送します。

スイッチ(R000)押下:DM0→定数5を転送
スイッチ(R001)押下:DM0→定数-8を転送
スイッチ(R002)押下:DM0→定数0を転送

スイッチが同時に複数押された場合、後から押したものを優先します。

ラダープログラム

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

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

実行条件によって各定数をデータメモリライト命令でデータメモリDM0に転送します。

後入力を優先するために微分実行型(パルス実行型)、データメモリDM0は16ビット符号付きBINデータとするためにサフィックスは.Sを指定します。

以上より、データメモリライト命令は@DW.Sを使用します。

3.【例題②】32ビット符号無しBINデータのデータメモリライト

下記仕様のラダープログラムをデータメモリライト命令を用いて解説します。

仕様
スイッチ(R000)を押すと、データメモリDM0,DM1に定数50000を転送する。
スイッチ(R001)を押すと、データメモリDM0,DM1に定数80000を転送する。
スイッチ(R001)を押すと、データメモリDM0,DM1に定数0を転送する。
スイッチが同時に複数押されるケースは考慮しなくてよい。
データメモリは32ビット符号無しBINデータとして扱う。(DM0が下位、DM1が上位)

スイッチが同時に複数押されることは考慮しなくて良いので、今回は毎スキャン実行型を使用します。

データメモリは32ビット符号無しBINデータと扱うため、サフィックスは.Dとなります。

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

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

例題②_タッチパネル

スイッチを押すと、以下のようにデータメモリDM0,DM1に定数を転送します。

スイッチ(R000)押下:DM0,DM1→定数50000を転送
スイッチ(R001)押下:DM0,DM1→定数80000を転送
スイッチ(R002)押下:DM0,DM1→定数0を転送

ラダープログラム

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

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

【例題①】と同様、実行条件によって各定数をデータメモリライト命令でデータメモリDM0,DM1に転送します。

今回は命令を実行する順序を考慮しなくて良いため毎スキャン実行型、データメモリDM0は32ビット符号無しBINデータとするためにサフィックスは.Dを指定します。

以上より、データメモリライト命令はDW.Dを使用します。

4. おわりに

キーエンスKVシリーズにおけるデータメモリライト(DW)命令について解説しました。

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

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

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

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

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

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

コメントを残す

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