PF_Status
編寫回呼函數的回傳值,以及對應系統狀態(如未供應零件等)的處理(主要是錯誤處理)。
格式
Function PF_Status(パーツID As Integer, Status As Integer) As Integer
' (錯誤處理)
Fend
參數
- 零件ID
輸入零件ID(整數值1~32)。
多種零件運作時,輸入主動零件。 - Status
輸入狀態。
回呼函數的回傳值或系統設定的值(請參閱「說明」)。
傳回值
若不指定回傳值,將視為指定了PF_EXIT,這會導致Part Feeding程序終止,因此請務必設定回傳值。
PF_CONTINUE
繼續Part Feeding程序。在一般情況下,請指定此值。PF_EXIT
Part Feeding程序將會終止。指定此值,Part Feeding程序將會立即終止。若要指定此值,視需要編寫將裝置恢復到初始狀態的處理(將機器人原點復歸、關閉馬達等)。PF_RESTART
重設Part Feeding程序並重新從視覺開始執行。PF_RESTART_ACTIVEPART
重設Part Feeding程序並重新從視覺開始執行。僅重新生成主動零件的佇列。
描述
此函數會在其他回呼函數(PF_CycleStop函數及PF_Status函數除外)之後執行。
引數Status中設置前一個回呼函數的回傳值或在Part Feeding程序內部發生的錯誤。編寫與這些值相應的處理。
PF_CALLBACK_SUCCESS
回呼函數正常結束。通常不進行任何處理。PF_CALLBACK_RESTART
PF_Robot回呼函數正常結束,回傳值為PF_CALLBACK_RESTART。通常不進行任何處理。PF_CALLBACK_RESTART_ACTIVEPART
PF_Robot回呼函數正常結束,回傳值為PF_CALLBACK_RESTART_ACTIVEPART。通常不進行任何處理。PF_STATUS_NOPART
料斗未供應零件的狀態。編寫向料斗供應零件的操作。PF_STATUS_TOOMANYPART
從料斗過量供應零件,無法拾取零件的狀態。編寫透過操作員呼叫等方式,從料斗上移除零件的操作。若此狀態頻繁發生,請重新設定料斗。PF_STATUS_BAD_ID
執行PF_Start命令時指定的零件ID不正確。請確認是否正確指定了已註冊的零件ID。多種零件運作時,嘗試在多台送料器上開始。請重新設定各零件。Part Feeding程序將會立即終止。PF_STATUS_BAD_PARAMETER
執行PF_Start命令時指定的零件參數不正確。Part Feeding程序將會立即終止。PF_STATUS_CAL_NOT_COMPLETE
執行PF_Start命令時指定的零件校準未完成。Part Feeding程序將會立即終止。
關於執行送料器校準的方法,請參閱以下內容。
校準PF_STATUS_WRONGPART
無法檢測到送料器上的零件。請確認零件視覺序列能正確檢測到零件。或者,請確認是否混入了其他種類的零件或損壞的零件。
當視覺多次嘗試檢測零件,零件Blob視覺序列檢測到拾取區域內有物體,但零件檢測視覺序列無法識別為正面零件或背面零件時,會出現此狀態值。PF_STATUS_PARTBLOB_ERROR
用於檢測零件Blob的視覺序列或物件無效。Part Feeding程序將會立即終止。請確認用於零件的零件Blob序列和物件。PF_STATUS_PARTSEQ_ERROR
用於檢測零件的視覺序列或物件無效。Part Feeding程序將會立即終止。請確認用於零件的零件序列和物件。PF_STATUS_ERROR
執行PF_Start命令時發生錯誤(系統錯誤)。Part Feeding程序將會立即終止。請確認「視覺」中指定的視覺序列是否正確運作。請單獨執行回呼函數進行偵錯,以確認各回呼函數的動作是否正確。此外,如果嘗試讓2台以上的機器人共享1台送料器,將發生錯誤7730「每台送料器的機器人數量超過最大值。」。
可透過Status回呼函數的回傳值指定運作程序的處理。
若不指定回傳值,將視為指定了PF_EXIT,這會導致Part Feeding程序終止,因此請務必設定回傳值。PF_STATUS_FEEDERINUSE_ERROR
對同一台送料器多次啟動了Part Feeding程序。Part Feeding程序將會立即終止。(已啟動的Part Feeding程序會繼續。)請檢查程式。PF_STATUS_PARTNOTENABLED
零件已停用。
請確認在Epson RC+ 8.0功能表 - [工具] - [料件送料] - [零件] - [零件**] - [一般]中,[啟用]核取方塊已勾選。PF_STATUS_PURGENOTENABLED
清除功能已停用,但執行了PF_Purge函數。
請確認在Epson RC+ 8.0功能表 - [工具] - [料件送料] - [零件] - [零件**] - [一般]中,[啟用]核取方塊已勾選。
注意
在PF_Status函數內,請編寫不會發生新錯誤的程式。否則可能會遞迴執行PF_Status函數,導致錯誤處理無法結束。
不建議在PF_Status函數內編寫送料器控制命令(PF_Center、PF_CenterByShift、PF_Flip、PF_Shift)。
PF_Status的作用是指示系統如何在上一個回呼函數完成後繼續執行(也就是,在PF_Robot、PF_Vision、PF_Control、PF_MobileCam、PF_Feeder之後如何繼續執行)。這是透過將PF_Status的回傳值設為PF_CONTINUE、PF_RESTART、PF_RESTART_ACTIVEPART或PF_EXIT中的任一回傳值來實現的。詳細資訊請參考以下程式範例。
程式範例
以下程式用於編寫錯誤處理。
使用者錯誤是Robot回呼函數程式範例所示的吸附超時。
發生此錯誤時,將關閉機器人的馬達。
' ** User Error **
' 8001 發生吸附超時
Function PF_Status(PartID As Integer, Status As Integer) As Integer
Select Status
Case PF_CALLBACK_SUCCESS
' 成功(通常不進行任何處理)
Case PF_CALLBACK_RESTART
' 從視覺重新開始
PF_Status = PF_RESTART
Exit Function
Case PF_CALLBACK_RESTART_ACTIVEPART
' 從視覺重新開始 -
' 僅生成主動零件的座標佇列和取得影像
PF_Status = PF_RESTART_ACTIVEPART
Exit Function
Case PF_STATUS_NOPART
' 料斗上沒有零件
MsgBox "Hopper empty."
Case PF_STATUS_TOOMANYPART
' 送料器上的零件過多
MsgBox "Too many parts on Feeder."
Case PF_STATUS_BAD_ID
' 指定的零件ID不存在
MsgBox "Bad PartID."
Case PF_STATUS_BAD_PARAMETER
' 零件參數不正確
MsgBox "Bad parameter."
Case PF_STATUS_CAL_NOT_COMPLETE
' 校準未完成
MsgBox "Calibration incomplete."
Case PF_STATUS_WRONGPART
' 送料器平台上的零件可能不正確
MsgBox "Wrong Part."
Case PF_STATUS_ERROR
' 錯誤
MsgBox "Error!! (code: " + Str$(Err) + " ) " + ErrMsg$(Err)
Case PF_STATUS_PARTBLOB_ERROR
' 零件Blob視覺序列錯誤
MsgBox "Part Blob vision error."
Case PF_STATUS_PARTSEQ_ERROR
' 零件檢測視覺序列錯誤
MsgBox "Part Sequence vision error."
Case PF_STATUS_FEEDERINUSE_ERROR
' 正在使用送料器
MsgBox "Feeder is already in use."
Case PF_STATUS_PARTNOTENABLED
' 零件已停用
MsgBox "Part is disabled."
Case PF_STATUS_PURGENOTENABLED
' 清除已停用
MsgBox "Purge is disabled."
Case 8001
' 範例:吸附超時
MsgBox " Vacuum Error!!"
Motor Off
PF_Status = PF_EXIT
Exit Function
Send
PF_Status = PF_CONTINUE
Fend