PF_Robot
編寫機器人從送料器取得零件並放置到指定位置的動作。
請務必編寫此函數的內容。
格式
Function PF_Robot(零件ID As Integer) As Integer
' 機器人運作
Fend
參數
- 零件ID
輸入零件ID(整數值1~32)。
多種零件運作時,輸入主動零件。
傳回值
請指定以下值來控制PF_Robot函數結束後的Part Feeding程序。(各常數在PartFeeding.inc中定義。)
PF_CALLBACK_SUCCESS
通常指定此值。當零件座標佇列中沒有剩餘資料時(多種零件運作時、主動零件沒有資料時),會繼續Part Feeding處理。
佇列中有剩餘資料時(多種零件運作時、主動零件有資料時),會在不改變零件座標佇列內容的情況下重新啟動PF_Robot回呼函數。PF_CALLBACK_RESTART
無論座標佇列中是否有剩餘資料,都會繼續Part Feeding程序,並重新生成座標佇列。這於每次拾取零件時進行成像以提高零件拾取精度的情況下有效。PF_CALLBACK_RESTART_ACTIVEPART
無論座標佇列中是否有剩餘資料,都會繼續Part Feeding程序,生成僅限主動零件的座標佇列。非主動零件的座標佇列不會變更。這於省略非主動零件的視覺處理以加快速度的情況下有效。使用者定義錯誤編號(8000 - 8999)
當需要啟動PF_Status回呼函數進行錯誤處理時設定。設定的值會作為PF_Status回呼函數的引數被傳遞。
描述
本函數中編寫以下處理:
- 從座標佇列取得零件座標(使用PF_QueGet函數)
- 將機器人移動至送料器上的零件座標位置
- 操作末端夾具等來抓住零件
- 將機器人移動至零件放置座標
- 操作末端夾具等來釋放零件
- 刪除1個座標佇列(使用PF_QueRemove命令)
一般來說,會在迴圈處理中執行步驟1~6,處理座標佇列中的所有資料。座標佇列中包含前一次視覺動作檢測到的零件座標列表。座標為局部座標。多種零件運作時,會為每個零件ID生成座標佇列。
本函數啟動時選擇的機器人是在零件的Robot#中指定的機器人。使用多台機器人運作時,如有需要,可使用Robot陳述式切換機器人。
有關詳細資訊,請參閲以下手冊。
「Epson RC+ 8.0 SPEL+語言參考 - Robot」
注意
- 建議從參數取得零件ID。
- 在多台機器人環境中變更所選機器人編號時,請注意不要變更為錯誤的機器人編號。
程式範例
以下程式是使用簡單的真空末端夾具處理所有零件的範例。
拾取零件時,使用真空感測器監視吸附狀態。
無法吸附時,最多重試3次。仍無法吸附時,傳回使用者錯誤碼8001作為回傳值。
' ** IO Label (Output) **
' O_Adsorb 吸附
' O_Desorb 釋放
'
' ** IO Label (Input) **
' I_Adsorbed 吸附感測器
'
' ** Point **
' PlacePos 零件的放置位置
'
' ** User Error **
' 8001 發生吸附超時
'
Function PF_Robot(partID As Integer) As Integer
Byte retry
' 處理所有座標佇列,或進行迴圈處理直到有停止請求
Do While PF_QueLen(partID) > 0 And PF_IsStopRequested(partID) = False
' 將機器人移動至拾取位置
Jump PF_QueGet(partID)
' 真空ON & 確認吸附(重試3次)
On O_Adsorb
retry = 3
Do While retry > 0
Wait Sw(I_Adsorbed) = On, 0.5
If TW = True Then
' 超時時,關閉吸附後重新開啟
Off O_Adsorb
Wait 0.1
On O_Adsorb
EndIf
Loop
If TW = True Then
' 重試後仍無法吸附,因此錯誤結束
' 錯誤處理在Status回呼函數中進行
PF_Robot = 8001
Exit Function
EndIf
' 將機器人移動至放置位置
Jump PlacePos
' 真空OFF & 釋放真空
Off O_Adsorb
On O_Desorb
Wait 0.1
Off O_Desorb
' 從座標佇列刪除1個資料
PF_QueRemove partID
Loop
PF_Robot = PF_CALLBACK_SUCCESS
Fend
← 通用事項 PF_Control →