Multi-robot Conveyor
Epson RC+ supports multiple logical conveyors and robots. You can use multiple robots with one conveyor, or multiple robots with multiple conveyors.
This section describes a conveyor system that uses two or more robots with one conveyor and a conveyor system that uses one robot with two or more conveyors.
For details on multi robots, refer to the following manual.
"Robot Controller Manual"
Multi-robot conveyor
The multi-robot system uses two or more robots with one conveyor as shown below. In this system, the second robot (downstream) picks up the parts that the first robot (upstream) failed to pick up.
Although the system uses several robots, it uses only one camera (sensor), encoder, and conveyor.
How to use multi-robot conveyor
To use the multi-robot conveyors, set the upstream and downstream conveyors. Instructions for using multi-robot conveyors are described below.
See and create conveyors 1 and 2. (Set the upstream-side robot to Conveyor 1.)
For [Encoder] and [Vision Sequence], set the same number and sequence for both conveyors 1 and 2.
Calibrate Conveyor 1.
Check the operation while referring to either of the following:
- Vision Conveyors
- Sensor Conveyors - "Check the motion"
Set [Downstream Conveyor] to “2”.
Calibrate Conveyor 2.
Check the operation of Conveyor 2.
Clear the all queue data registered to each conveyor.
>Cnv_QueRemove 1,all >Cnv_QueRemove 2,all
Place the part in the vision search area.
Execute the program “ScanConveyorStrobed(ScanConveyor)” and register a queue.
Halt the program “ScanConveyorStrobed” and move the conveyor until the part enters the Pickup Area.
Stop the program “ScanConveyorStrobed” and move the conveyor until the part enters the Pickup Area of the conveyor 2.
Execute the command below to move the queue from conveyor 1 to conveyor 2.
>Cnv_QueMove 1,0
Pick up the part.
>Jump Cnv_Queget(2)
Check if the robot end effector is above the center of a part. If the robot end effector is not above the center of the part, perform the calibration again.
Move the conveyor and check if the robot follows the part. At this point, the end effector will be off the center of part but this is not a problem.
Stop the tracking motion.
``` >Cnv_AbortTrack ```
A sample program is shown below.
Function main
Xqt ScanConveyorStrobed 'Task that registers queues
Xqt PickParts1 'Task for the upstream robot to track the parts (queue)
Xqt PickParts2 'Task for the downstream robot to track the parts (queue)
Fend
Function ScanConveyorStrobed
Integer i, numFound, state, trigger
Real x, y, u
Boolean found
trigger = 10 'Allocates pin10 of controller I/O
Off trigger 'Turns OFF the camera trigger and encoder latch I/O
Do
'Searches for parts on the conveyor
VRun FindParts
On trigger 'Turns ON the camera trigger and encoder latch I/O
Do
VGet FindParts.AcquireState, state
Loop Until state = 3
VGet FindParts.Parts.NumberFound, numFound
'Registers the found part to the queue of conveyor 1
For i = 1 To numFound
VGet FindParts.Parts.CameraXYU(i), found, x, y, u
Cnv_QueAdd 1, Cnv_Point(1, x, y)
Next i
Off trigger 'Turns OFF the camera trigger and encoder latch I/O
Wait 0.1
Loop
Fend
Function PickParts1
OnErr GoTo ErrHandler
Integer ErrNum
Robot 1
Motor On
Power High
Speed 30
Accel 30, 30
Jump P1
WaitParts:
Do
'Waits until a part (queue) enters the Pickup Area
Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0
'Starts tracking the part
'When using the 6-axis robot
Jump3 Cnv_QueGet(1):Z(0):U(90):V(0):W(180)
'When using the SCARA robot
Jump Cnv_QueGet(1)
Wait 1 'The robot moves at the same speed as the conveyor for the Wait time specified to this part
Jump P1 'Moves the picked part to a specified place
'Clears the picked part (queue)
Cnv_QueMove 1, 0
Loop
'Moves the parts (queue) in the downstream side than the Pickup Area of conveyor1 'to the conveyor 2
ErrHandler:
ErrNum = Err
If ErrNum = 4406 Then
Cnv_QueRemove 1, 0
EResume WaitParts
'When an error except the conveyor tracking motion range error occurs,
'Error is displayed
Else
Print "Error!"
Print "No.", Err, ":", ErrMsg$(Err, 1)
Print "Line :", Erl(0)
'User error occurred
Error 8000
EndIf
Fend
Function PickParts2
OnErr GoTo ErrHandler
Integer ErrNum
Robot 2
Motor On
Power High
LoadPoints "robot2.pts"
Speed 30
Accel 30, 30
Go P1
WaitParts:
Do
'Waits until a part (queue) enters the Pickup Area
Wait Cnv_QueLen(2, CNV_QUELEN_PICKUPAREA) > 0
'Starts tracking the part
'When using the 6-axis robot
Jump3 Cnv_QueGet(2):Z(0):U(90):V(0):W(180)
'When using the SCARA robot
Jump Cnv_QueGet(2)
Wait 1 'The robot moves at the same speed as the conveyor for the Wait time specified to this part
Jump P2 'Moves the picked part to a specified place
'Clears the picked part (queue)
Cnv_QueRemove 2, 0
Loop
'Clears the picked part (queue)
'Clear the parts (queue) in the downstream side than the Pickup Area of conveyor 2
'Automatically recovers from the error '"The specified queue data is outside the set area"
ErrHandler:
ErrNum = Err
If ErrNum = 4406 Then
Cnv_QueRemove 2, 0
EResume WaitParts
'Error other than "The specified queue data is outside the set area"
'is displayed
Else
Print "Error!"
Print "No.", Err, ":", ErrMsg$(Err, 1)
Print "Line :", Erl(0)
'User error occurred
Error 8000
EndIf
Fend