キーエンスKVシリーズにおける「ブロック転送」命令とは、16/32ビットデータを参照先にブロック転送するラダープログラム命令です。
ブロック転送命令を用いることにより、1回の命令で「連続したデバイスの値」を「他の連続したデバイス」にコピーすることができます。(n点→n点)
この記事では、キーエンスKVシリーズにおけるブロック転送命令の指令方法とラダープログラム例について解説します。
キーエンスKVシリーズにはデータ転送(MOV)命令や一括転送(FMOV)命令等がありますが、本記事では対象としていません。
データ転送(MOV)命令については以下のページで解説しております。
【キーエンスKV】データ転送(MOV)命令の指令方法とラダープログラム例一括転送(FMOV)命令については以下のページで解説しております。
【キーエンスKV】一括転送(FMOV)命令の指令方法とラダープログラム例目次
1. ブロック転送命令の指令方法
ブロック転送命令は、『毎スキャン実行型』と『微分実行型(パルス実行型)』に大別されます。
毎スキャン実行型とは、実行条件がONしている間、その命令を毎スキャン実行するものです。対して微分実行形(パルス実行型)とは、実行条件がOFF→ONになったときの1スキャンのみ実行するものです。
BMOV:毎スキャン実行型のブロック転送命令
毎スキャン実行型のブロック転送命令は、扱うデバイスのデータ型によって、さらに2種類に分けられます。
以下が毎スキャン実行型のブロック転送命令です。
BMOV(.U) | :16ビット符号無しBINデータ |
BMOV.D | :32ビット符号無しBINデータ |
扱う「データ長」や「符号付きor無し」などはサフィックスと呼ばれる接尾語を命令につけて指定します。
KV STUDIOで作成した各々の毎スキャン実行型のブロック転送命令は以下のようになります。
↓が16ビット符号無しBINデータのブロック転送(BMOV)命令です。
このラダープログラムは、実行条件である入力リレーR000がONしている間、データメモリDM0~DM4(5ワード)の値をDM10~DM14に一括で転送するものです。#5は一括で転送する点数を指定しています。
このラダープログラムの動作は以下のようなイメージです。
同じ動作のラダープログラムをデータ転送(MOV)命令で作ると以下のようになります。
MOV命令では点数が多くなるにつれてラダープログラムはさらに大きくなります。BMOV命令の場合、一括で転送する点数は命令内の指定値で変えることができるのでラダープログラムは大きくなりません。
↓が32ビット符号無しBINデータのブロック転送(BMOV.D)命令です。
このラダープログラムは、実行条件である入力リレーR000がONしている間、データメモリDM0~DM9(5×2ワード)の値をDM10~DM19に一括で転送するものです。#5は一括で転送する点数を指定しています。
このラダープログラムの動作は以下のようなイメージです。
@BMOV:微分実行型(パルス実行型)のブロック転送命令
微分実行型(パルス実行型)のブロック転送命令は、毎スキャン実行型と同様にサフィックスによって、さらに2種類に分けられます。
@BMOV(.U) | :16ビット符号無しBINデータ |
@BMOV.D | :32ビット符号無しBINデータ |
命令の頭文字に@を付けることで、実行条件がOFF→ONになったときの1スキャンしか実行されない微分実行型(パルス実行型)となります。
KV STUDIOで作成した各々の微分実行型(パルス実行型)のブロック転送命令は以下のようになります。
↓が微分実行型(パルス実行型)の16ビット符号無しBINデータのブロック転送(@BMOV)命令です。
微分実行型(パルス実行型)の場合、命令文の左側に上向きの矢印が表示されます。
このラダープログラムは、実行条件である入力リレーR000がOFF→ONになった瞬間に、データメモリDM0~DM4(5ワード)の値をDM10~DM14に一括で転送するものです。#5は一括で転送する点数を指定しています。
このように、微分実行型(パルス実行型)の場合は実行条件がOFF→ONになった瞬間の1スキャンしか命令が実行されません。
扱うデバイスのデータ型によるサフィックスの指定方法に関しては、毎スキャン実行型と同様です。
その他の微分実行型(パルス実行型)のブロック転送命令は以下のようになります。
命令の解説は省略しますが、実行条件がOFF→ONになった瞬間に1スキャンだけ実行されるもので、その他は毎スキャン実行型と同じ機能と捉えて頂いて問題ありません。
↓が32ビット符号付きBINデータのブロック転送(@BMOV.D)命令です。
KV STUDIOにおける命令挿入の方法
ブロック転送命令をKV STUDIOの回路上に挿入するには「命令文 転送元 転送先 転送する点数」と回路上で入力します。
例1) 先ほどの毎スキャン実行型の16ビット符号無しBINデータのブロック転送(BMOV)命令を挿入する場合、KV STUDIOの回路上でBMOV DM0 DM10 #5と入力してEnterキーを押します。
例2)先ほどの微分実行型(パルス実行型)の32ビット符号無しBINデータのブロック転送(@BMOV.D)命令を挿入する場合、KV STUDIOの回路上で@BMOV.D DM0 DM10 #5と入力してEnterキーを押します。
2.【例題①】データメモリをブロック転送する(毎スキャン実行型)
下記仕様のラダープログラムをブロック転送命令を用いて解説します。
この処理をPLCがRUN中に常時行う。
ブロック転送命令を用いて、データメモリのデバイス値を一括で転送します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。
データメモリDM0~DM4のデバイス値をDM10~DM14に一括で転送する処理を常に行います。
ラダープログラム
ラダープログラムは以下のようになります。
コントロールリレーCR2002を実行条件とするブロック転送(BMOV)命令でDM0~DM4のデバイス値をDM10~DM14に一括で転送します。
PLCがRUN中は常に転送する処理を行うため、ブロック転送(BMOV)命令は毎スキャン実行型を使用します。
3.【例題②】データメモリをブロック転送する(微分実行型)
下記仕様のラダープログラムをブロック転送命令を用いて解説します。
一括で転送する処理はスイッチが押された瞬間のみ実行され、スイッチが押された状態でDM0~DM5のデバイス値が変更されてもDM10~DM15には反映されない。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。
スイッチ(R000)を押した瞬間、データメモリDM0~DM4のデバイス値をDM10~DM14に一括で転送する処理を行います。
スイッチが押された状態でDM0~DM4のデバイス値が変わっても、DM10~DM14のデバイス値は追従しません。
ラダープログラム
ラダープログラムは以下のようになります。
入力リレーR000を入力条件とするブロック転送命令を用いて、DM0~DM4のデバイス値をDM10~DM14に一括で転送します。
今回はスイッチ(R000)を押した瞬間に転送するため、微分実行型のブロック転送(@BMOV)命令を使用します。
4. おわりに
キーエンスKVシリーズにおけるブロック転送(BMOV)命令について解説しました。
よく似た命令で一括転送(FMOV)命令がありますが、動作が異なるので使用する際はご注意ください。(私はよくごっちゃになります。)
以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。
ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。
各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。
ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。
『doda』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。
「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。