I am looking for suggestions on how to program in RAPID two areas of palletizing (as the image shows). Any way to alternate between both infeeders so that the robot works simultaneously in both zones? I need the product that arrives first, regardless of which side (right or left), leave the second as in queue, then be taken and palletized. (With the powerpac of palletizing it is easy to develop it, but point by point I can not deduce it yet)
I hope I have expressed myself correctly and can understand me.
Best regards, I hope your help … Thank you very much!
Some simple conditional logic can decide which infeed to pick from:
WaitUntil diInfeeder1_PickRequest = 1 OR diInfeeder2_PickRequest = 1;
IF diInfeeder1_PickRequest = 1 THEN
…call pick routines
ELSEIF diInfeeder2_PickRequest = 1 THEN
…call pick routines
ENDIF
And if the robot must pass over a half full outfeed to get to the calling infeed use the item count to calculate the offset height of intermid positions:
@DenisFR Wow! That is a way. :bawling: Similarly, you could probably only allow one trigger signal high at a time with some cross connect logic. (other ways too: conveyor logic could hold up the product, the speed of the line might not make it an issue anyways, use a trap or multitasking to create a queue, etc., etc…)
Or maybe just alternate if both are high – not true first-in-first-out but maybe good enough without messing with traps?
Example:
MODULE examplePal
CONST num Mock_diInfeeder1_PickRequest:=1;
CONST num Mock_diInfeeder2_PickRequest:=1;
PERS num PickingFromInfeeder:=1;
PROC exampleBothHigh()
TPErase;
WHILE TRUE DO
WaitUntil Mock_diInfeeder1_PickRequest=1 OR Mock_diInfeeder2_PickRequest=1;
IF Mock_diInfeeder1_PickRequest=1 AND Mock_diInfeeder2_PickRequest=1 THEN
IF PickingFromInfeeder=1 THEN
Infeeder2_Pick;
ELSEIF PickingFromInfeeder=2 THEN
Infeeder1_Pick;
ENDIF
ELSEIF Mock_diInfeeder1_PickRequest=1 THEN
Infeeder1_Pick;
ELSEIF Mock_diInfeeder2_PickRequest=1 THEN
Infeeder2_Pick;
ENDIF
ENDWHILE
ENDPROC
PROC Infeeder1_Pick()
PickingFromInfeeder:=1;
TPWrite “Picking from Infeeder1”;
WaitTime 3;
ENDPROC
PROC Infeeder2_Pick()
PickingFromInfeeder:=2;
TPWrite “Picking from Infeeder2”;
WaitTime 3;
ENDPROC