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