[PLC]ターンテーブルのメモリシフトをエンコーダ情報で行う方法

エンコーダ情報によるメモリシフト回路について検討しましたので、
そのプログラム例と考え方を紹介します。

ターンテーブル(インデックステーブルや回転テーブルなどとも呼ばれる)は、
搬送装置の一つでテーブルを一定の角度ずつ回転させ、ワークを搬送する装置です。
自動機などによく使用されているかと思います。

ターンテーブル上のワークに対して、どの位置にワークがあるのか、
そのワークはどの工程まで完了しているのかをPLCのメモリ上で管理する場合があります。
ターンテーブルが回転すれば実際のワークが動くので、メモリ上の位置も動かす必要があります。
今回、その手法について語っていきます。

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

エンコーダ情報によるメモリシフトの利点

エンコーダ情報によるメモリシフトの利点は、
一つの回路で下記の動作に対応できる点です。

・位置決め運転による回転
・JOG操作(送り/戻し)による回転
・動力オフ時(エンコーダは有効)の手回しによる回転

他のメモリシフト手法として位置決め開始や終了でメモリシフトするという考えもあると思いますが、
これだと動作中に停止した場合の処理はどうするか、
JOG操作の場合はどうするかなど検討すべき項目が多く状況に合わせた回路を検討する必要がでてきます。
手回しに対しては対応困難かと思います。
どこまでの機能を求めるかにもよりますが、エンコーダ情報によるメモリシフトはシンプルで
様々な状況に対応することが可能です!

プログラム

前提条件と考え方

エンコーダ情報(位置情報)をPLCで取得できることが前提になります。
ターンテーブルは4分割され、エンコーダは0°~359°の範囲で移動します。
各ポイント「0°」、「90°」、「180°」、「270°」で停止します。

メモリシフトは各ポイントの中間点「45°」、「135°」、「225°」、「315°」で行います。
またその中点で囲まれた範囲を「ゾーンA」、「ゾーンB」、「ゾーンC」、「ゾーンD」と定義します。

各ゾーンの立上りと立下りの信号を監視することによって、跨いだゾーンとその方向を判断します。

メモリの送り条件(現在値増加方向)
ゾーンAの立上り、ゾーンDの立下り
ゾーンBの立上り、ゾーンAの立下り
ゾーンCの立上り、ゾーンBの立下り
ゾーンDの立上り、ゾーンCの立下り

メモリの戻し条件(現在現象方向)
ゾーンAの立上り、ゾーンBの立下り
ゾーンBの立上り、ゾーンCの立下り
ゾーンCの立上り、ゾーンDの立下り
ゾーンDの立上り、ゾーンAの立下り

ラダー回路にすると次のようになります。

デバイスと命令の説明

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

MR
DM

内部リレー
内部レジスタ

プログラムと動作

サンプル用に作成した回路で動作確認は行っていませんのでご注意ください。

LD CR2002
MPS
LD>= DM0 #315
AND< DM0 #45
ANL
OUT MR5200
MRD
LD>= DM0 #45
AND< DM0 #135
ANL
OUT MR5201
MRD
LD>= DM0 #135
AND< DM0 #225
ANL
OUT MR5202
MPP
LD>= DM0 #225
AND< DM0 #315
ANL
OUT MR5203
LDP MR5200
ANF MR5203
LDP MR5201
ANF MR5200
ORL
LDP MR5202
ANF MR5201
ORL
LDP MR5203
ANF MR5202
ORL
OUT MR5300
LDP MR5200
ANF MR5201
LDP MR5201
ANF MR5202
ORL
LDP MR5202
ANF MR5203
ORL
LDP MR5203
ANF MR5200
ORL
OUT MR5310

ゾーンの境界を通過したとき、その方向に応じて「送りパルス」または「戻しパルス」の信号がONします。
それぞれをシフトしたいメモリ回路に繋げれば完成です。

まとめ

いかがだったでしょうか。
ゾーン数を変数化してファンクションブロックなどにすれば、流用しやすいと思います。
欠点として通常は起こりえませんが、PLCの1スキャンで2つ先のゾーンに移動するとメモリシフトが行われません。
後は、電源OFF時などエンコーダが機能していない状態でターンテーブルを手回し等されても当然反応しません笑

コメント