センサーコンベヤーのプログラミング
通常、センサーコンベヤーを操作するのに2つのタスクが使われます。1つのタスクは、ワークがセンサーを作動させるのを待ち、ワークをコンベヤーキューに加えます。もう1つのタスクは、コンベヤーキューにある追従開始領域内のワークをチェックします。ワークが追従開始領域内にあるとき、ロボットはワークをハンドリングします。その後、ハンドリングしたワークを指定された場所に置きます。
サンプルプログラムは、ロボットが追従開始領域外のワークをトラッキングした場合も、自動で復帰する仕様となっています。
Function main
Motor On
Power High
Speed 30
Accel 30, 30
Xqt ScanConveyor 'キューを登録するタスク
Xqt PickParts 'ワーク (キュー)をトラッキングするタスク
Fend
Function ScanConveyor
Double lpulse1 '1つ前のラッチパルス
lpulse1 = Cnv_LPulse(1) 'ラッチパルスをlpulse1に登録
Do
'ワークがセンサーを通過した場合のみ、キューに登録
If lpulse1 <> Cnv_LPulse(1) Then
Cnv_QueAdd 1, Cnv_Point(1, 0, 0)
lpulse1 = Cnv_LPulse(1) 'lpulse1を更新
EndIf
Loop
Fend
Function PickParts
OnErr GoTo ErrHandler
Integer ErrNum
Cnv_Mode 1,1 'トラッキングモードを選択
WaitParts:
Do
'ワーク (キュー)が、追従開始領域内に入るまで待機
Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0
'トラッキング開始
'スカラロボットを使用する場合
Jump Cnv_QueGet(1)
Wait 0.1 'Wait時間だけ、ロボットはコンベヤーと等速度で移動します
Jump P1 '指定した場所に移動
Cnv_QueRemove 1, 0 'ピッキングしたワーク (キュー)の消去
Loop
'追従開始領域より下流のワーク (キュー)の消去
'エラー「追従開始領域外のワークにトラッキング動作を行った」から自動復帰
ErrHandler:
ErrNum = Err
If ErrNum = 4406 Then
Cnv_QueRemove 1, 0
EResume WaitParts
'エラー「追従開始領域外のワークにトラッキング動作を行った」以外のエラーを表示
Else
Print "エラー発生!"
Print "No.", Err, ":", ErrMsg$(Err, 1)
Print "Line :", Erl(0)
'ユーザーエラー発生
Error 8000
EndIf
Fend