I need to place in 3 different container in 3 conveyor work area (one container for each conveyor work area) . I know which conveyor is running, but how I can detect in simple way which conveyor need some item to be fullfilled but it’ll leave the working area ? I cannot stop any conveyor, so I need to fill the container that it’ll will come out the robot area.
Can I know in Rapid or from the PickMaster which is the best place’s container ?
Define the PositionAvailable signals for the place workareas. In my example they are named doPosAvail_1 to _3.
Change the PickPlaceSeq routine,
PROC PickPlaceSeq()
Pick PickIndex{1};
IF doPosAvail_1 =1 THEN
Place PlaceIndex{1};
ELSEIF doPosAvail_2 =1 THEN
Place PlaceIndex{2};
ELSEIF doPosAvail_3 =1 THEN
Place PlaceIndex{3};
ELSE
WaitUntil doPosAvail_1 OR doPosAvail_2 OR doPosAvail_3 = 1;
ENDIF
ENDPROC
Example 2,
Change the Place routine to poll the workareas if there are any reachable positions.
The num placei should be declared at module level to make it global,
VAR num placei:=0;
PROC Place(num Index)
VAR num tf:=TRUE;
Coordinated;
WHILE tf=TRUE
Incr placei;
IF placei>3 placei:=1
GetItmTgt ItmSrcData{PlaceIndex{placei}}.ItemSource,PlaceTargetMaxTim e:=0.05TimeFlag:=tf;
ENDWHILE
Index:=PlaceIndex{placei};
WObjPlace:=ItmSrcData{Index}.Wobj;
MoveLConc,RelTool(PlaceTarget.RobTgt,0,0,-ItmSrcData{Index} .OffsZ),MaxSpeed,z20,GripperWObj:=WObjPlace;
TriggLConc,PlaceTarget.RobTgt,LowSpeed,ItmSrcData{Index}.Va cuumRev1T2:=ItmSrcData{Index}.VacuumOff1,z5Inpos:=ItmSrcDa ta{Index}.TrackPoint,GripperWObj:=WObjPlace;
GripLoad load0;
TriggL RelTool(PlaceTarget.RobTgt,0,0,-ItmSrcData{Index}.OffsZ),Low Speed,ItmSrcData{Index}.Ack,z20,GripperWObj:=WObjPlace;
UnCoordinated;
ENDPROC
Thank you for yours examples; are helpful but I put the question in a wrong way because my problem with 3 place workarea with container(each one in a different conveyor) is the following.
How Can I detect using PickMaster or Rapid that one container is coming out the robot’s working area and it’s not full ?
Your second example is great also if it’s similar to something that I already thought, but for my problem it will be better if I can detect in some way which container (that need an item) is near the exit limit of the robot.
You could enable the start/stop function and look at the doPickStart signal in your sequence. It will be set low when a position is passing the stop limit.