PF_AccessFeeder

PF_AccessFeeder用於多台機器人/1台送料器的系統中,防止機器人之間的碰撞。在有2台機器人同時共享同一個送料器時,必須使用此命令。PF_AccessFeeder取得存取送料器的機器人鎖定。
若已取得鎖定,PF_AccessFeeder會暫停任務,直到鎖定被釋放或達到指定的超時時間(選項)。
機器人完成使用送料器後,使用PF_ReleaseFeeder陳述式解除鎖定,以將送料器釋放給其他機器人。
如需詳細資訊,請參閱以下內容。
PF_ReleaseFeeder

範例:
在任務1中執行PF_AccessFeeder 1。任務1繼續執行。
在任務2中執行PF_AccessFeeder 1時,任務2會暫停。
在任務1中執行PF_ReleaseFeeder 1時,任務2會恢復執行。

本命令用於多台機器人配置的互斥控制。

格式
PF_AccessFeeder 送料器編號/送料器名稱[, 超時]

參數

  • 送料器編號
    以運算式或數值(1~4的整數值)指定送料器編號。
  • 送料器名稱
    指定送料器標籤(字串)。
  • 超時
    以運算式或數值(整數)指定鎖定解除等待的超時時間(秒)。選填。

傳回值

描述
若指定了超時,可透過TW函數的回傳值判斷結果。
有關詳細資訊,請參閲以下手冊。
「Epson RC+ 8.0 SPEL+語言參考- TW 函數」

  • 鎖定已釋放或已取得鎖定(False)
  • 已達到超時(True)

送料器的動作不受取得/釋放鎖定的影響。
任務結束時,該任務中取得的鎖定會自動釋放。
在同一任務中,若對同一送料器連續執行兩次PF_AccessFeeder,將會出現錯誤。
無法從虛擬控制器及命令視窗執行。

使用範例
以下是2台機器人拾取1台送料器上的零件的範例。
機器人1取得送料器上的零件,並移動到點位place1。
當機器人1達到移動路徑的50%時,機器人2開始移動以取得零件。

Function Main

    MemOff PartsToPick

    Motor On

    PF_Start 1

    Xqt Robot1PickPlace
    Xqt Robot2PickPlace
Fend

Function Robot1PickPlace
    Robot 1
    Do
        If MemSw(PartsToPick) = On Then
            If PF_QueLen(1) > 0 Then
                PF_AccessFeeder 1
                P0 = PF_QueGet(1)
                PF_QueRemove 1
                Jump P0 /R
                On 5
                Wait 0.5
                Jump Place ! D30; PF_ReleaseFeeder 1 !
                Off 5
                Wait 0.25
            Else
                MemOff PartsToPick
            EndIf
        EndIf
        Wait 0.1
    Loop
Fend

Function Robot2PickPlace
    Robot 2
    Do
        If MemSw(PartsToPick) = On Then
            If PF_QueLen(2) > 0 Then
                PF_AccessFeeder 1
                P0 = PF_QueGet(2)
                PF_QueRemove (2)
                Jump P0 /R
                On 5
                Wait 0.5
                Jump Place ! D30; PF_ReleaseFeeder 1 !
                Off 5
                Wait 0.25
            Else
                MemOff PartsToPick
            EndIf
        EndIf
        Wait 0.1
    Loop
Fend

Function PF_Robot(PartID As Integer) As Integer
    Select PartID
        Case 1
            MemOn PartsToPick
            Wait MemSw(PartsToPick) = Off
        Case 2
            MemOn PartsToPick
            Wait MemSw(PartsToPick) = Off
    Send
    PF_Robot = PF_CALLBACK_SUCCESS
Fend