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)

送料器的运作不会受锁定获取/解除的影响。
任务结束之后,通过该任务获取的锁定会被自动解除。
如果在同一任务中对同一送料器连续2次执行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