How to prevent PP to take many lines advences from last real robot target not reached
Hi, I have a problem with my robot ABB IRB 1600-8/1.2 1600-100605:
This robot is used to apply the glue on a shap.But sometime when he have to go to (xpoint, 0,0,0,) then he move from -5mmx to -25mmx instead of staying. Because when the DI10_1 is enable at 20milimeters away from the target point aimed by previously MoveL Offs(xpoint,172,0,-60), the next Xpoint is recorded at anywhere on previously segment instead of the future segment witch is SearchL\Stop, DI10_5, xpoint, p_final, v20, tool1; and whole draw is wrong about 20mm in X direction http://www.dailymotion.com/video/x54tiv3
In concequence, when the shap is too up than expected, and instead to
register Xpoint exactely at 172,0,-60, it register Xpoint at 152, 0,
-xx.
Or do the args: "T_ROB1", "DI10_5", "/MainModule/Routine22/SearchL/1193", "ERR_SIGSUPSEARCH" instead of following the "WHILE DI10_5 = 1 DO"
I would like to prevent to add the wait-time please. On other ABB robot we are using for painting, even on very short segments, we have never seen he PP more than 3 lines in advance from last MoveL/MoveC even if there are 20 lines of comments.
Here is the sample of runtime.
Thank you.
Cheers.
PROC Routine4()
!** SEARSH POSITION X **
MoveL p430, v400, z1, tool1;
WaitTime 1;
SearchL\Stop, DI10_4, xpoint, p420, v20, tool1;
MoveL Offs(xpoint,172,0,-60), v400, z1, tool1; !(robot 20mm away from target instead of 1)
p_final:=xpoint;
p_finalsup:=xpoint; !(I would like the PP stay here while robot is more than 1mm from last robtarget because I used Z1 arg)
p_final.trans.x:=p_final.trans.x+172;
p_final.trans.z:=p_final.trans.z-90;
p_finalsup.trans.x:=p_finalsup.trans.x+172;
p_finalsup.trans.z:=p_finalsup.trans.z-60;
!** check if robot too many near the shap
WHILE DI10_5 = 1 DO
!** memory to alert **
mem_rebut := TRUE;
!** put robot away 5mm
p_finalsup.trans.z:=p_finalsup.trans.z+5;
MoveL Offs(p_finalsup,0,0,0), v20, z1, tool1;
WaitTime 0.10;
ENDWHILE
!** SEARSH POSITION Z **
SearchL\Stop, DI10_5, xpoint, p_final, v20, tool1; !(the PP is here (17 lines in advance) while robtarget is not reashed: thus bug if DI10_5 is enabling, or supsearsherror if DI10_5 albready enable)
!** start GUN**
MoveL Offs(xpoint,0,0,0), v_collage, z10, tool1;
MoveL Offs(xpoint,20,0,0), v200, z20, tool1;
!** TIME START GUN**
WaitTime 0.5;
SetDO DO10_1, 1;
!** DRAWING **
MoveL Offs(xpoint,0,0,0), v200, z20, tool1;
!**MoveL Offs(xpoint,5,170,0), v_collage, z10, tool1;
!**MoveL Offs(xpoint,5,230,0), v_collage, z10, tool1;
MoveL Offs(xpoint,0,265,0), v_collage, z1, tool1;
MoveC Offs(xpoint,20,305,0), Offs(xpoint,55,320,0), v_collage1, z10, tool1;
MoveC Offs(xpoint,100,340,0), Offs(xpoint,130,380,0), v_collage1, z10, tool1;
MoveC Offs(xpoint,150,410,0), Offs(xpoint,180,423,0), v_collage1, z10, tool1;
MoveL Offs(xpoint,250,423,0), v_collage, z1, tool1;
MoveC Offs(xpoint,278,410,0), Offs(xpoint,290,390,0), v_collage1, z10, tool1;
MoveC Offs(xpoint,320,345,0), Offs(xpoint,350,325,0), v_collage1, z10, tool1;
MoveC Offs(xpoint,380,304,0), Offs(xpoint,390,270,0), v_collage1, z10, tool1;
MoveL Offs(xpoint,390,-265,0), v_collage, z10, tool1;
MoveC Offs(xpoint,370,-305,0), Offs(xpoint,335,-320,0), v_collage1, z10, tool1;
MoveC Offs(xpoint,290,-340,0), Offs(xpoint,260,-380,0), v_collage1, z10, tool1;
MoveC Offs(xpoint,240,-410,0), Offs(xpoint,210,-423,0), v_collage1, z10, tool1;
MoveL Offs(xpoint,140,-423,0), v_collage, z10, tool1;
MoveC Offs(xpoint,120,-415,0), Offs(xpoint,100,-390,0), v_collage1, z10, tool1;
MoveC Offs(xpoint,80,-350,0), Offs(xpoint,40,-325,0), v_collage1, z10, tool1;
MoveC Offs(xpoint,15,-310,0), Offs(xpoint,0,-275,0), v_collage1, z10, tool1;
!**MoveL Offs(xpoint,6,-260,0), v_collage, z10, tool1;
!**MoveL Offs(xpoint,6,-160,0), v_collage, z10, tool1;
MoveL Offs(xpoint,0,0,0), v_collage, z1, tool1;
!** TIME STOP GUN **
WaitTime 0.47;
!** STOP GUN**
SetDO DO10_1, 0;
!** END TO PARK **
MoveJ p30, v500, z10, tool1;
MoveL p40, v500, z10, tool1;
MoveL p50, v500, z10, tool1;
! MoveL p60, v500, z10, tool1;
ENDPROC
0
Comments
-
Hello,
Did you test with this:
WaitRob\InPos;
0 -
Hi, I didn't know the WaitRob\InPos;
This instruction has solved the issue.
However, in some case, I have the sensor's latence witch make the error:
ERR_SIGSUPSEARCH
I Have learned that we can force ABB to continue in case of error to make it retry/try next in case of error by using instruction ERROR But when I tried this
Thus, to prevent to have to validate message and to PP to Main I try to insert in the runtime
SearchL\Stop, DI10_5, xpoint, p_final, v20, tool1;
ERROR
IF ERRNO=ERR_SIGSUPSEARCH THEN
WHILE DI10_5 = 1 DO
!** memory to alert **
mem_rebut := TRUE;
!** put robot away 5mm
p_finalsup.trans.z:=p_finalsup.trans.z+5;
MoveL Offs(p_finalsup,0,0,0), v20, z1, tool1;
WaitTime 0.10;
ENDWHILE
ENDIF
But in case of error, the ABB seem to go to P_reply and hit to an obstacle without saying "err supervision de mouvement" (Collision)
How can I manage to continie runtime in case of ERR_SIGSUPSEARCH with prviously instruction please?
Cheers
0 -
The error handler must be placed at the end of the routine (immediately before the ENDPROC) - if an error is generated when running the code it will jump to the end of the routine to check if there is an error handler present if not it will use the built in handler and stop the program.
Is this where you placed your error handler?
0 -
Hi, instead to be at the end of the rountime the ERROR instruction was placed just after the
SearchL\Stop, DI10_5, xpoint, p_final, v20, tool1; because it is only during the SearchL I have ERR_SUPSEARCH
If I understand, should place the ERROR just befor the ENDPROC and write IF ERRNO=ERR_SIGSUPSEARCH THEN ... ENDIF between the error and the ENDPROC
In fact In case of error ERR_SIGSUPSEARCH, I would like to come back directely to the instruction WHILE DI10_5
I would like for avery other errors (like colision) to use the built in handler and stop the program.
Can I use this structure of runtime?
PROC Routine4()
!** SEARSH POSITION X **
MoveL p430, v400, z1, tool1;
WaitTime 1;
SearchL\Stop, DI10_4, xpoint, p420, v20, tool1;
MoveL Offs(xpoint,172,0,-60), v400, z1, tool1;
p_final:=xpoint;
p_finalsup:=xpoint;
p_final.trans.x:=p_final.trans.x+172;
p_final.trans.z:=p_final.trans.z-90;
p_finalsup.trans.x:=p_finalsup.trans.x+172;
p_finalsup.trans.z:=p_finalsup.trans.z-60;
!** check if robot too many near the shap
WHILE DI10_5 = 1 DO
!** memory to alert **
mem_rebut := TRUE;
!** put robot away 5mm
p_finalsup.trans.z:=p_finalsup.trans.z+5;
MoveL Offs(p_finalsup,0,0,0), v20, z1, tool1;
WaitTime 0.10;
ENDWHILE
!** SEARSH POSITION Z **
SearchL\Stop, DI10_5, xpoint, p_final, v20, tool1; !I have often the Error Sup Searsh
!** start GUN**
MoveL Offs(xpoint,0,0,0), v_collage, z10, tool1;
MoveL Offs(xpoint,20,0,0), v200, z20, tool1;
!** TIME START GUN**
WaitTime 0.5;
SetDO DO10_1, 1;
!** DRAWING **
MoveL Offs(xpoint,0,0,0), v200, z20, tool1;
MoveL Offs(xpoint,0,265,0), v_collage, z1, tool1;
MoveC Offs(xpoint,20,305,0), Offs(xpoint,55,320,0), v_collage1, z10, tool1;
!...;
MoveL Offs(xpoint,0,0,0), v_collage, z1, tool1;
!** TIME STOP GUN **
WaitTime 0.47;
!** STOP GUN**
SetDO DO10_1, 0;
!** END TO PARK **
MoveJ p30, v500, z10, tool1;
MoveL p40, v500, z10, tool1;
MoveL p50, v500, z10, tool1;
ERROR
IF ERRNO=ERR_SIGSUPSEARCH THEN
unknow instructions...
MoveL p50, v500, z10, tool1;
ENDIF
ENDPROC
What should I write to make the robot move back directely to the WHILE just befor the SearchL\Stop, DI10_5, xpoint, p_final, v20, tool1;What happen in case of other error with this rountime?
Cheers
0 -
You could put the while loop in the error handler, with the Retry command after it (which would then return execution to the routine and re-execute the SearchL command)?0
Categories
- All Categories
- 5.5K RobotStudio
- 394 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 249 ScreenMaker
- 2.7K Robot Controller
- 309 IRC5
- 59 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 785 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 4 Job listings