PF_ReleaseFeeder

Release the lock acquired by PF_AccessFeeder.
PF_AccessFeeder & PF_ReleaseFeeder lock and unlock access to a feeder to prevent potential collisions on a multi-robot / one feeder system. These commands are required when two robots are sharing the same feeder at the same time.

Example:
Task 1 executes PF_AccessFeeder 1. Task 1 continues.
Task 2 executes PF_AccessFeeder 1, then Task 2 is paused.
Task 1 executes PF_ReleaseFeeder 1, then Task 2 is resumed.

This command can be written in parallel processing (!...!) in motion commands.

Syntax
Format 1: PF_ReleaseFeeder feeder number/ feeder name
Format 2: MotionCommand ! [Dn;] PFReleaseFeeder feeder number/ feeder name!

Parameters

  • Feeder Number
    Specify the feeder number as an expression or a numerical value (an integer from 1 to 4).
  • Name
    Specify the feeder name as a character string.
  • MotionCommand
    Any of Arc, Arc3, Go, Jump, Jump3, Jump3CP, Move, BGo, BMove, TGo, and TMove.
  • Dn
    Specify where in the path of the robot's movement to start parallel processing in %.
    (See Epson RC+ 8.0 SPEL+ Language Reference ! Parallel Processing) !...! Parallel Processing)

Return values
None

Description
The lock can only be unlocked within the same task.
Cannot be executed from a virtual controller or command window.

Examples
This is an example of getting the last part on the feeder and when 50% of the path to the place position is reached, control is returned to PF_Start to start vision imaging and feeder operation.

Function main Motor On
    Do while True
        AccessFeeder 1
    	PF_Start(1)
    Loop
Fend

Function PF_Robot(partID As Integer)
    Xqt Task_PF_Robot(partID)
    PF_Robot = PF_SUCCESS
Fend

Function Task_PF_Robot(partID As Integer)
    AccessFeeder 1

    Integer i
    For i = 1 to numToPick
        pick = PF_GetQue(PartID)
        PF_QueRemove(PartID)
        Jump pick
        On gripperOutput
        Wait 0.1
        If i < numToPick And PF_QueLen(PartID) > 0 Then
            Jump place
        Else
            ' Last part, so release the feeder at 50%
            Jump place !D50; PF_ReleaseFeeder 1!
        EndIf
        Off gripperOutput
        Wait 0.1
    Next i
Fend