OK lets see if we can solve this mystery.
I don’t know if I’m right but lets see.
First one should remember the lesson from basic RAPID programming that an IO signal change directly after a move instruction that uses a zone will be executed before the move finishes. Like this:
MoveL p10,v1000,z100,tool0;
MoveL p20,v1000,z100,tool0;
SetDO do1,1;
MoveL p30,v1000,fine,tool0;
SetDO here will be executed before p20 and depending on the zones and how close, in space, p10 and p20 is it could also be executed before p10.
Which leads us to a common mistake which almost everyone has done at the basic RAPID course, below if the IO is connected to a gripper which goes to p40 to pick something up and then to p50 to drop it of, where will it actually drop it of?
MoveL p40,v1000,fine,tool0;
SetDO do1,1;
MoveL p50,v1000,z100,tool0;
SetDO do1,0;
MoveL p60,v1000,fine,tool0;
That’s right 100mm before p50 while the robot is still moving at v1000 in the direction of p60. :worried:
With that knowledge lets look at the code.
[QUOTE=ut1880h]
MoveL Offs(pLd13LSleeve_1,0,0,20),v200,z10,toolGrip;
MotionSupOnTuneValue:=200;
MoveL pLd13LSleeve_1,v100,fine,toolGrip;
[/QUOTE]
The position for line 1 and 3 are the same with a difference of 20mm and a zone of 10mm, so when executing line 1 the controller will look at the next move instruction and thus execute to the fine point.
So now we are at Line 3.
[QUOTE=ut1880h]
rGripper (OPEN_SLEEVE);
!
TPWriteStat " Loading 13 Liter Cap…"Animate;
!
MotionSupOnTuneValue:=100;
AccSet 100,100;
[/QUOTE]
All of these are non-motion which will be executed at once so now we are at line 12.
[QUOTE=ut1880h]
MoveL Offs(pLd13LSleeve_1,0,0,100),v500,z10,toolGrip;
MoveL Offs(pLd13LSleeve_1,0,0,250),v1000,z100,toolGrip;
MoveJ Offs(pLd13LCap_1,0,0,250),v1000,z100,toolGrip;
MoveL Offs(pLd13LCap_1,0,0,20),v500,z10,toolGrip;
MoveL pLd13LCap_1,v200,fine,toolGrip;
[/QUOTE]
I’m going to take a guess and say that pLd13LSleeve_1 and pLd13LCap_1 are really close. Thus these zones will be calculated before hand and the controller will execute to the fine point. So now we are at line 16.
[QUOTE=ut1880h]
MoveL pLd13LCap_1,v200,fine,toolGrip;
!
2 rGripper (OPEN_13CAP);
[/QUOTE]
This is where it detects the motion supervision and stops. Now since the controller has gone through all to line 16 it will stop on the next command which is line 18 and your pp.
You can easily test if my and Per’s theory is right by changing the zone in all the involved move instructions to “fine” and see where the pp will stop this time. Then you can determine which ones to keep a zone and which to not.
Please let us know how it goes. 