They said this was impossible...
I was told the following couldn't happen but it does (sometimes):
An irb6600 controlled with an s4c+ has a motion supervision error sometimes when poking a piston+liner into an engine block. This is normal if the humans forgot to lube some o-rings thru which the liner passes. The weird thing is that sometimes (maybe one out of four), instead of the PP being located on the MoveL where the "crash" occured, it is located several instructions on down in the routine. The PP actually has jumped past a whole bunch of gripper and move instructions as if it had executed them. But, positionally, it hasn't come close to even completeing the particular MoveL, let alone any of the gripper and move instructions that follow.
Any insights?
ut1880h
Comments
-
This is a normal behaviour because the program is executed ahead of robot motion.
If you have a fine point the execution will not continue until the robot has reached that point. There are also other instructions that does the same like watiing for something.Per Svensson
Robotics and Vision Specialist
Consat Engineering0 -
It didn't complete a MoveL even if subsequent instructions had been forward "executed" (or would "processed" be a more apt term?)
Example (see below): Motion supervision fault occurs at 1, PP setting at 2.
1 MoveL Offs(pLd13LSleeve_1,0,0,20),v200,z10,toolGrip;
MotionSupOnTuneValue:=200;
MoveL pLd13LSleeve_1,v100,fine,toolGrip;
!
rGripper (OPEN_SLEEVE);
!
TPWriteStat " Loading 13 Liter Cap..."Animate;
!
MotionSupOnTuneValue:=100;
AccSet 100,100;
!
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;
!
2 rGripper (OPEN_13CAP);
ut1880h
0 -
1 MoveL Offs(pLd13LSleeve_1,0,0,20),v200,z10,toolGrip;
MotionSupOnTuneValue:=200;
MoveL pLd13LSleeve_1,v100,fine,toolGrip;
!
rGripper (OPEN_SLEEVE);
!
TPWriteStat " Loading 13 Liter Cap..."Animate;
!
MotionSupOnTuneValue:=100;
AccSet 100,100;
!
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;
!
2 rGripper (OPEN_13CAP);Hi,
are you confirm that your robot is giveing supervision on the line 1, it may be stoping on the line in blue color , because the zone is 100 ,so it is confusiong you that position is on the line 1, pl confirm that rGripper (OPEN_SLEEVE); is executed if it is not executed than you are right ,if this executed than make zone =5 and than check the program
warm regards
Pankaj Sharma
panchiin
0 -
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.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.
John
Developer Center0 -
Hi,
The robot motion supervision usually occurs either on red line 1 or on line 3 (referring to a previous post). It hasn't positionally reached pLd13LSleeve_1 nor has it executed the rGripper(OPEN_SLEEVE) routine which would normally open the sleeve gripper. The subsequent MoveLs w/offsets would normally bring the sleeve tool directly up (+z offset) 250 mms out of the engine block after releasing the piston sleeve. The MoveJ would then perform a significant amount of axes re-orientations (positioning the bearing cap tool gripper) while moving about 100 mm in X and 300 mm Y directions above a tray that holds the bearing caps. It would then proceed down to the cap tray in several MoveL w/ofsets to the tray and then execute the rGripper(OPEN_CAP) routine to open the bearing cap gripper.
So - the PP not only "skips" past the open sleeve gripper routine and the offset moves back up out of the engine after opening the sleeve gripper, it also skips past a very pronounced MoveJ re-orientation and re-positioning move plus the MoveLs that would bring it back down to a cap holding tray.
Having the PP skipping past the first set of offset moves is one thing, given the zone values and offset moves, etc, but it also skips past an entire gripper routine (the sleeve grippers don't open) and most significantly (to me at least), past a MoveJ that normally re-orients axes 4, 5, and 6 and also moves linearly (X and Y) over 300mm from where it deposits the sleeve and jams.
Thanks for looking at this. I appreciate the feedback.
ut1880h2008-8-23 13:23:450
Categories
- All Categories
- 5.5K RobotStudio
- 396 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 250 ScreenMaker
- 2.8K Robot Controller
- 316 IRC5
- 61 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 800 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 5 Job listings