Have a problem with picking the item depending on clearance zone. I have check limit set to 170, exit limit is set to 210. When two parts coming on conveyor close to each other flex picker avoid picking, but if one of the part pass the exit limit, flexing picker see only one part so go to pick. Any ideas or sample codes how to fix this?
PROC SetupIndexes()
VAR num PickNumber:=1;
VAR num PlaceNumber:=1;
VAR num OtherNumber:=1;
FOR i FROM 1 TO MaxNoSources DO
IF (ItmSrcData{i}.Used) THEN
IF (ItmSrcData{i}.SourceType = PICK_TYPE) THEN
PickIndex{PickNumber}:=i;
Incr PickNumber;
ELSEIF (ItmSrcData{i}.SourceType = PLACE_TYPE) THEN
PlaceIndex{PlaceNumber}:=i;
Incr PlaceNumber;
ELSE
OtherIndex{OtherNumber}:=i;
Incr OtherNumber;
ENDIF
ENDIF
ENDFOR
ENDPROC
a__
a__
!***********************************************************
!
! Procedure PickPlaceSeq
!
! The Pick and Place sequence.
! Edit this routine to specify how the robot shall
! execute the movements.
!
!***********************************************************
PROC PickPlaceSeq()
Pick PickIndex{1};
! Pick PickIndex{2};
WaitUntil diPlaceTransfStn1=high or diPlaceTransfStn2=high;
IF diPlaceTransfStn1=1 THEN
PulseDOPLength:=0.2,doPartPickedT1;
Place PlaceIndex{1};
ELSEIF diPlaceTransfStn2=1 THEN
PulseDOPLength:=0.2,doPartPickedT2;
Place PlaceIndex{2};
ENDIF
ENDPROC
!***********************************************************
!
! Procedure Pick 1
!
! Executes a pick movement if enough clearance around part
!
!***********************************************************
PROC Pick(num Index)
VAR selectiondata sel_data;
VAR robtarget draw_target;
VAR num check_limit;
sel_data.ShapeType:=BOX;
sel_data.ConsiderType:=BitOr(ITEMS_TO_USE,ITEMS_BYPASS);
sel_data.GeometricData.x:=24;
sel_data.GeometricData.y:=60;
sel_data.GeometricData.z:=10;sel_data.GeometricData.radius:=0;
sel_data.Offset.OffsetRelation:=ITEM_COORD_DIR;
sel_data.Offset.OffsetPose.trans.x:=0;
sel_data.Offset.OffsetPose.trans.y:=0;
sel_data.Offset.OffsetPose.trans.z:=0;
sel_data.Offset.OffsetPose.rot.q1:=1;
sel_data.Offset.OffsetPose.rot.q2:=0;
sel_data.Offset.OffsetPose.rot.q3:=0;
sel_data.Offset.OffsetPose.rot.q4:=0;
check_limit:=170;
Coordinated;
WObjPick:=ItmSrcData{Index}.Wobj;
GetItmTgt ItmSrcData{Index}.ItemSource,PickTarget
Limit:=check_limitSelection:=sel_data;
TriggL Conc, RelTool(PickTarget.RobTgt, 0, 0, -
ItmSrcData{Index}.OffsZ), MaxSpeed,
ItmSrcData{Index}.VacuumAct1, z20, GripperWObj:=WObjPick;
MoveL Conc, PickTarget.RobTgt, LowSpeed, z5 Inpos:=
ItmSrcData{Index}.TrackPoint, GripperWObj:=WObjPick;
GripLoad ItemLoad;
TriggL RelTool(PickTarget.RobTgt, 0, 0, -
ItmSrcData{Index}.OffsZ), LowSpeed, ItmSrcData{Index}.Ack,
z20, GripperWObj:=WObjPick;
UnCoordinated;
ENDPROC