PM2.x doesn’t differentiate items correct [PickMaster 3]

I am working on a demo that will be stacking different items on top of each other. I have set it up as a container with layers. There are two types of item, and they alternate layers.

So, I have two pick items and the container. I have set up the layers with strict sort order.

As I understand the Strict sort order, the robot should pick only Item 1 to fill the first layer. Then, when the first layer is completed, it should pick only Item 2 to fill the second layer.

But, what it does is this:

The robot picks either item and builds the first layer, and then picks either item to build the second layer, instead of only item 1 for the first layer and only item 2 for the second layer. I know that each item is identified properly because I have confirmed this in the detailed vision info.

Both the items in the project (Item1 and Item2) has the same type number. If an item 2 is found accepted, it will with the current configuration have the same type number as an item 1 which is also accepted (both will have type number 1). If both are rejected, both of the items will have type number 2. Even though PickMaster distinguish between the items with different vision models, that information is “lost” when the corresponding item targets are sent down to the work area queues (due to the same type number).

To change type number for the items, simply double-click the item and change the type numbers that are to be assigned to the item target when sent down to the work area queues.

In addition to this it is also necessary to check the type number in the RAPID code. Otherwise the item targets will be retrieved from the work area queue (in FIFO order) without taking into consideration what type numbers they have.

If I understand it correct, the robot is supposed to pick whatever item is needed on the place work area (i.e. the place work area decides what to pick). The following changes would then need to be performed.

  • Introduce a new variable in the module to keep track of what type the next place position is.

VAR num PlaceType;

  • Look for the next type on the place work area (please note “PlaceIndex1”).

PROC PickPlaceSeq()

NextItemTgtType ItmSrcData{PlaceIndex1}.ItemSource, PlaceType;

Pick PickIndex1;

! Pick PickIndex2;

Place PlaceIndex1;

! Place PlaceIndex2;

ENDPROC

  • Pick the correct item type

PROC Pick(num Index)

InCoordRout:=TRUE;

WObjPick:=ItmSrcData{Index}.Wobj;

GetItmTgt ItmSrcData{Index}.ItemSource,PickTarget ItemType:=PlaceType;

!waituntil c1speed=0;

TriggLConc,RelTool(PickTarget.RobTgt,0,0,-ItmSrcData{Index}.OffsZ),MaxSpeed,ItmSrcData{Index}.VacuumAct1,z20,GripperWObj:=WObjPick;

MoveLConc,PickTarget.RobTgt,LowSpeed,z5Inpos:=ItmSrcData{Index}.TrackPoint,GripperWObj:=WObjPick;

GripLoad ItemLoad;

TriggL RelTool(PickTarget.RobTgt,0,0,-ItmSrcData{Index}.OffsZ),LowSpeed,ItmSrcData{Index}.Ack,z20,GripperWObj:=WObjPick;

InCoordRout:=FALSE;

ENDPROC