多台機器人傳送帶
Epson RC+支援多邏輯傳送帶與機器人。您可在一條傳送帶上使用多台機器人,或在多條傳送帶上使用多台機器人。
本節說明兩或多台機器人搭配一條傳送帶的傳送帶系統,以及一台機器人搭配兩或多條傳送帶的傳送帶系統。
如需支援多台機器人的型號詳細資訊,請參閲以下手冊。
「機器人控制器手冊」
多台機器人傳送帶
使用兩或多台機器人搭配一條傳送帶的多台機器人系統如下所示。在此系統中,第二台機器人(下游)拾取第一台機器人(上游)未能拾取的工件。
即使系統使用數台機器人,卻只使用一台攝影機(感測器)、編碼器與傳送帶。
如何使用多台機器人傳送帶
若要使用多台機器人傳送帶,應設置上游和下游傳送帶。以下為使用多台機器人傳送帶的說明。
請參閱以下內容,並創建傳送帶1和傳送帶2。(將上游端機器人設置為傳送帶1)
在[編碼器]和[視覺序列]中,針對傳送帶1和2設置同樣的編號及序列。
校準傳送帶1。
請參閱以下任一內容,並檢查傳送帶操作。
設定[下游傳送器]為「2」。
校準傳送帶2。
檢查傳送帶2的操作。
清除已註冊至傳送帶的所有佇列資料。
>Cnv_QueRemove 1,all >Cnv_QueRemove 2,all
將工件放在視覺搜尋區域。
執行程式「ScanConveyorStrobed(ScanConveyor)」並註冊佇列。
暫停程式「ScanConveyorStrobed」並移動傳送帶,直到工件進入拾取區域。
停止程式「ScanConveyorStrobed」並移動傳送帶,直到工件進入傳送帶2的拾取區域。
執行以下命令將佇列從傳送帶1移動到傳送帶2。
>Cnv_QueMove 1,0
拾取工件。
>Jump Cnv_Queget(2)
檢查機器人夾具末端是否在工件的中心上方。若機器人夾具末端未在工件的中心上方,則再次校準。
移動傳送帶,並檢查機器人是否跟蹤工件。這時,夾具末端將會偏離工件中心,此為正常現象。
停止跟蹤動作。
``` >Cnv_AbortTrack ```
以下為範例程式。
Function main
Xqt ScanConveyorStrobed '註冊佇列的任務
Xqt PickParts1 '使上游機器人追蹤工件(佇列)的任務
Xqt PickParts2 '使下游機器人追蹤工件(佇列)的任務
Fend
Function ScanConveyorStrobed
Integer i, numFound, state, trigger
Real x, y, u
Boolean found
trigger = 10 '分配控制器I/O的pin10
Off trigger '關閉攝影機觸發器和編碼器閂鎖I/O
Do
'搜尋傳送帶上的工件
VRun FindParts
On trigger ' 開啟攝影機觸發器和編碼器閂鎖I/O
Do
VGet FindParts.AcquireState, state
Loop Until state = 3
VGet FindParts.Parts.NumberFound, numFound
'註冊偵測到的工件至傳送帶1的佇列
For i = 1 To numFound
VGet FindParts.Parts.CameraXYU(i), found, x, y, u
Cnv_QueAdd 1, Cnv_Point(1, x, y)
Next i
Off trigger '關閉攝影機觸發器和編碼器閂鎖I/O
Wait 0.1
Loop
Fend
Function PickParts1
OnErr GoTo ErrHandler
Integer ErrNum
Robot 1
Motor On
Power High
Speed 30
Accel 30, 30
Jump P1
WaitParts:
Do
'拾取區域沒有工件(佇列)時移至待命位置
Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0
'開始跟蹤工件
'使用6軸機器人時
Jump3 Cnv_QueGet(1):Z(0):U(90):V(0):W(180)
'使用 SCARA 機器人時
Jump Cnv_QueGet(1)
Wait .1 '僅Wait時間,機器人以與傳送帶相同的速度移動。
Jump P1 '移至指定位置
'清除拾取的工件(佇列)
Cnv_QueMove 1, 0
Loop
' 移動下游端超出傳送帶1拾取區域的工件(佇列)並移到傳送帶2
ErrHandler:
ErrNum = Err
If ErrNum = 4406 Then
Cnv_QueRemove 1, 0
EResume WaitParts
'傳送帶跟蹤動作範圍錯誤以外的錯誤發生時
'則顯示錯誤
Else
Print "Error!"
Print "No.", Err, ":", ErrMsg$(Err, 1)
Print "Line :", Erl(0)
'發生使用者錯誤
Error 8000
EndIf
Fend
Function PickParts2
OnErr GoTo ErrHandler
Integer ErrNum
Robot 2
Motor On
Power High
LoadPoints "robot2.pts"
Speed 30
Accel 30, 30
Go P1
WaitParts:
Do
'拾取區域沒有工件(佇列)時移至待命位置
Wait Cnv_QueLen(2, CNV_QUELEN_PICKUPAREA) > 0
'開始跟蹤工件
'使用6軸機器人時
Jump3 Cnv_QueGet(2):Z(0):U(90):V(0):W(180)
'使用 SCARA 機器人時
Jump Cnv_QueGet(2)
Wait .1 '僅Wait時間,機器人以與傳送帶相同的速度移動。
Jump P2 '移至指定位置
'清除拾取的工件(佇列)
Cnv_QueRemove 2, 0
Loop
'清除拾取的工件(佇列)
'將下游端超出傳送帶2拾取區域的工件(佇列)清除
'自動從以下錯誤恢復'「指定佇列資料位於設定區域外」
ErrHandler:
ErrNum = Err
If ErrNum = 4406 Then
Cnv_QueRemove 2, 0
EResume WaitParts
'顯示「指定佇列資料位於設定區域外」錯誤之外的錯誤
'錯誤
Else
Print "Error!"
Print "No.", Err, ":", ErrMsg$(Err, 1)
Print "Line :", Erl(0)
'發生使用者錯誤
Error 8000
EndIf
Fend