Selecting item depending on clearance zone [PickMaster 3]

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

Hi

Since the difference between check limit and exit limit is just 40 mm, any item beyond 210 wont be considered.

I suggest you set the Exit limit to 260.
When you are using check limit, the robot will practically use the check limit instead of the exit limit.

/Mats