「インクリメント」命令とは、キーエンスKVシリーズにおける指定したデバイスを1ずつ加算するラダープログラム命令です。
この記事では、キーエンスKVシリーズにおけるインクリメント命令の指令方法とラダープログラム例について解説します。
キーエンスKVシリーズにおける指定したデバイスを1ずつ減算する命令である「デクリメント」命令については、 本記事では対象としていません。デクリメント命令については以下のページで解説しておりますので、宜しければご覧ください。
【キーエンスKV】デクリメント(DEC)命令の指令方法とラダープログラム例目次
1. インクリメント命令の指令方法
インクリメント命令は、毎スキャン実行型と微分実行型(パルス実行型)に大別されます。
毎スキャン実行型とは、実行条件がONしている間、その命令を毎スキャン実行するものです。対して微分実行形(パルス実行型)とは、実行条件がOFF→ONになったときの1スキャンのみ実行するものです。
INC:毎スキャン実行型のインクリメント命令
毎スキャン実行型のインクリメント命令は、扱うデバイスのデータ型によって、さらに4種類に分けられます。
以下が毎スキャン実行型のインクリメント命令です。
- INC(.U):16ビット符号無しBINデータ
- INC.S:16ビット符号付きBINデータ
- INC.D:32ビット符号無しBINデータ
- INC.L:32ビット符号付きBINデータ
扱う「データ長」や「符号付きor無し」などはサフィックスと呼ばれる接尾語を命令文につけて指定します。※インクリメント命令の命令文はINCになります。
KV STUDIOで作成した各々の毎スキャン実行型のインクリメント命令について解説します。
↓が16ビット符号無しBINデータのインクリメント(INC)命令です。
↓命令部分を拡大
このラダープログラムは、実行条件である入力リレーR000がONしている間、データメモリDM0の値を1ずつ加算します。
ここで注意して頂きたいことがあります。↑のラダープログラムは入力リレーR000がONするたびにデータメモリDM0を1ずつ加算するものではありません。
毎スキャン実行型のインクリメント命令では、実行条件がONしている間、指定されたデバイス(↑ではDM0)は毎スキャン1ずつ加算され続けます。※とても高速で加算され続けます。
実行条件がONするたびに指定したデバイスを1ずつ加算する場合には、実行条件を1スキャンパルス化するか、後述する微分実行型(パルス実行型)を使用する必要があります。
↓が16ビット符号付きBINデータのインクリメント(INC.S)命令です。
このラダープログラムは、実行条件である入力リレーR000がONしている間、データメモリDM0の値を1ずつ加算します。
この命令を用いると、データメモリDM0は16ビット符号付きBINデータとして扱われます。
繰り返しになりますが、毎スキャン実行型なので入力リレーR000がONしている間、データメモリDM0は毎スキャン1ずつ加算され続けます。
↓が32ビット符号無しBINデータのインクリメント(INC.D)命令です。
このラダープログラムは、実行条件である入力リレーR000がONしている間、データメモリDM0,DM1の値を1ずつ加算します。
この命令を用いると、データメモリDM0,DM1は32ビット符号無しBINデータとして扱われます。
↓が32ビット符号付きBINデータのインクリメント(INC.L)命令です。
このラダープログラムは、実行条件である入力リレーR000がONしている間、データメモリDM0,DM1の値を1ずつ加算します。
この命令を用いると、データメモリDM0,DM1は32ビット符号付きBINデータとして扱われます。
@INC:微分実行型(パルス実行型)のインクリメント命令
微分実行型(パルス実行型)のインクリメント命令は、毎スキャン実行型と同様にサフィックスによって、さらに4種類に分けられます。
- @INC(.U):16ビット符号無しBINデータ
- @INC.S:16ビット符号付きBINデータ
- @INC.D:32ビット符号無しBINデータ
- @INC.L:32ビット符号付きBINデータ
命令の頭文字に@を付けることで、実行条件がOFF→ONになったときの1スキャンしか実行されない微分実行型(パルス実行型)となります。
KV STUDIOで作成した各々の微分実行型(パルス実行型)のインクリメント命令を解説します。
↓が微分実行型(パルス実行型)の16ビット符号無しBINデータのインクリメント(@INC)命令です。
微分実行型(パルス実行型)の場合、命令文の左側に上向きの矢印が表示されます。
このラダープログラムは、実行条件である入力リレーR000がONするたびにデータメモリDM0を1ずつ加算します。
この時、実行条件がONしている時間は関係ありません。実行条件がOFF→ONになった瞬間に1度だけインクリメント(1を加算)が実行されます。
このように、微分実行型(パルス実行型)の場合は実行条件がOFF→ONになった瞬間の1スキャンしか命令が実行されません。
扱うデバイスのデータ型によるサフィックスの指定方法に関しては、毎スキャン実行型と同様です。
その他の微分実行型(パルス実行型)のインクリメント命令は以下のようになります。
命令の解説は省略しますが、実行条件がOFF→ONになった瞬間に1スキャンだけ実行されるもので、その他は毎スキャン実行型と同じ機能と捉えて頂いて問題ありません。
↓が16ビット符号付きBINデータのインクリメント(@INC.S)命令です。
↓が32ビット符号無しBINデータのインクリメント(@INC.D)命令です。
↓が32ビット符号付きBINデータのインクリメント(@INC.L)命令です。
KV STUDIOにおける命令挿入の方法
インクリメント命令をKV STUDIOの回路上に挿入するには「命令文 インクリメントするデバイス」と回路上で入力します。
例1先ほどの毎スキャン実行型の16ビット符号無しBINデータのインクリメント(INC)命令を挿入する場合、KV STUDIOの回路上でINC DM0と入力してEnterキーを押します。
例2先ほどの微分実行型(パルス実行型)の32ビット符号付きBINデータのインクリメント(@INC.L)命令を挿入する場合、KV STUDIOの回路上で@INC.L DM0と入力してEnterキーを押します。
2.【例題①】毎スキャン実行型でインクリメントする
下記仕様のデータメモリをインクリメントするラダープログラムについて解説します。
入力リレーR001がONすると、データメモリDM0に定数0を転送する。
※DM0は16ビット符号無しBINデータとして扱う。
データメモリDM0の値を「毎スキャン」インクリメントするため、毎スキャン実行型のインクリメント命令を使用します。
データメモリに定数を転送するには、データ転送(MOV)命令を使用します。
キーエンスKVシリーズにおけるデータ転送(MOV)命令については以下のページで解説しておりますので、宜しければご覧ください。
【キーエンスKV】データ転送(MOV)命令の指令方法とラダープログラム例データメモリDM0を16ビット符号無しBINデータとして扱うには、インクリメント命令のサフィックスを.Uと指定します。もしくはサフィックス無しでもOKです。
ラダープログラム
ラダープログラムは以下のようになります。
実行条件をR000とする16ビット符号無しBINデータのインクリメント(INC)命令を用いてデータメモリDM0をインクリメントします。
実行条件をR001とする16ビット符号無しBINデータのデータ転送(MOV)命令を用いてデータメモリDM0に定数0を転送します。
各命令は16ビット符号無しBINデータの命令になるので、サフィックスは指定していません。.Uと指定してもOKです。
シミュレータの動作
シミュレータを実行している様子は以下のようになります。
各デバイスは、黄緑色に塗りつぶされるとONになっている状態です。各データメモリの値はデータメモリの下部に表示されます。
入力リレーR000がONしている間、データメモリDM0は「毎スキャン」インクリメントします。
ただし、ラダープログラムのスキャンが速いため、データメモリDM0の値の表示は飛び飛びになります。※高速でインクリメント(1ずつ加算)している状態です。
入力リレーR001がONすると、データメモリDM0に定数0を転送します。
3.【例題②】微分実行型(パルス実行型)でインクリメントする
下記仕様のデータメモリをインクリメントするラダープログラムについて解説します。
入力リレーR001がONすると、データメモリDM0,DM1に定数0を転送する。
※DM0,DM1は、DM0を下位とする32ビット符号無しBINデータとして扱う。
【例題①】では、実行条件である入力リレーR000がONしている間、データメモリDM0はインクリメントし続けるものでした。今回は実行条件がONするたびに1回だけインクリメントします。今回は「微分実行型(パルス実行型)」のインクリメント命令を使用します。
データメモリDM0,DM1を32ビット符号無しBINデータとして扱うには、インクリメント命令のサフィックスを.Dと指定します。
ラダープログラム
ラダープログラムは以下のようになります。
実行条件をR000とする微分実行型(パルス実行型)の32ビット符号無しBINデータのインクリメント(@INC.D)命令を用いてデータメモリDM0,DM1をインクリメントします。
微分実行型(パルス実行型)であるため、入力リレーR000がONしている時間に関わらず、OFF→ONになった瞬間に1回だけインクリメント(1を加算)が実行されます。
実行条件をR001とする32ビット符号無しBINデータのデータ転送(@MOV.D)命令を用いてデータメモリDM0,DM1に定数0を転送します。
シミュレータの動作
シミュレータを実行している様子は以下のようになります。
各デバイスは、黄緑色に塗りつぶされるとONになっている状態です。各データメモリの値はデータメモリの下部に表示されます。
入力リレーR000がONするたびに、データメモリDM0,DM1の値を1回だけインクリメントします。
入力リレーR001がONすると、データメモリDM0,DM1に定数0を転送します。
4. おわりに
キーエンスKVシリーズにおけるインクリメント(INC)命令について解説しました。
以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。
ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。
各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。
ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。
『doda』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。
「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。