[PLC]2つの繰り返し処理(KEYENCE)

PLCで繰り返し処理を実現するには2つの方法が考えられます。
「FOR命令を使用した方法」と「繰り返し回数を自分でカウントする方法」について、
それぞれのプログラムや、その特徴をまとめていきます。

プログラムはKEYENCE KV Nanoシリーズで記述しています。

PLCのスキャンとスキャンタイム

本内容を理解する為に、PLCのスキャンの定義について簡単におさらいします。

PLCはプログラムを繰り返し実行しています。
1回の実行を1スキャンといい、この実行時間をスキャンタイムと呼びます。
スキャンの中にはプログラム実行のほかに、
リフレッシュ処理やEND処理も含まれますが今回は説明を割愛します。

2つの繰り返し処理の特徴

FOR命令を使用した方法

専用の繰り返し命令であるFOR命令を使用して繰り返し処理を実現します。

・1スキャンで全ての繰り返し回数を行う。
 処理の負荷が1スキャンにかかる為、スキャンタイムが伸びる方向になる。
 全ての繰り返し処理完了までの時間は最短になる。
・繰り返しの途中にハンドシェイクなどの信号を挟む余地がない。

繰り返し回数を自分でカウントする方法

自分で繰り返し回数をカウントアップし繰り返し処理を実現します。

・繰り返し回数分のスキャン数が必要になる。
 処理の負荷は各スキャンに分散される為、スキャンタイムに与える影響は抑えられるが、
 「スキャン時間 × 繰り返し回数」の待ち時間が発生するので、繰り返し処理完了までの時間が長くなる。
・繰り返しの途中にハンドシェイクなどの信号を挟む余地がある。

サンプルプログラム

デバイスと命令の説明

KEYENCEに馴染みのない方への簡易説明になります。
詳しくはメーカーのマニュアルを参照してください。

R000~
MR
DM
INC
MOV
FOR
NEXT

入力リレー
内部リレー
内部レジスタ
デバイス値に1を加えます。
左側から右側のデバイスに格納します。
繰返し処理の開始
繰返し処理の終了

FOR命令を使用した方法
LD CR2002
MOV #1 DM0
MOV #0 DM10
FOR #10
LD CR2002
CAL+ DM10 DM0 DM10
INC DM0
NEXT
繰り返し回数を自分でカウントする方法
LDP R000
OR MR000
ANB MR010
OUT MR000
LD MR000
@MOV #1 DM0
@MOV #0 DM10
@MOV #0 DM20
LD MR000
ANB MR011
OUT MR001
LD MR001
CAL+ DM10 DM0 DM10
LD MR001
@INC DM0
@INC DM20
MPS
AND= DM20 #10
OUT MR010
MPP
ANB MR010
OUT MR011

まとめ

それぞれの方法に特徴があり、優劣の差はないことが分かると思います。
使用する場面に合わせて、どちらが適切なのか判断できることが大切だと思います。

コメント