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