Error Handler for a Motion Supervison Err
Hello,
I want to add to an Error handler to a routine to supervise if a small collision has took place between my EAOT and a surface that I'm picking and placing.
I know I can ajust the sensibility of the motion supervision but I want to know how to handle and recover from the error generate by this small collision. I don't want to have to jog the robot everytime it's happening.
Patrick
Comments
-
Does anybody have an idea?
Did I explain myself clear enought?
Thanks for your help.
Patrick
Patrick0 -
Hi Patrick,
For what I know, a collision is something to prevent more than recover.
I don't think you can trap the error because this error comes asyncronously with the execution, so task 0 will stop in any case.
Recovering can be optimized writing the robot-homing procedure at the beginning of the program:
Main()
RobotHome;
WHILE TRUE
! Your cycle
ENDWHILE
ENDPROC
Where RobotHome is a procedure that takes the robot home from any position (Use CROBT() or CJOINTT() to analyze the initial position of the robot).
So, If the robot collides, you can reset the PP and restart quick, in principle without manual jogging.
You can also connect a signal to RestartMain system input signal to do this automatically.
I did something like that to recover from Part-Lost condition on a Pick&place application.
I hope this can help you.
Best Regards
Claudio
0 -
Thanks Claudio,
I appreciate. Someone suggested me to use a "shelf routine" to recover from it. What do you think of that? How would it work?
Thanks,
Patrick
The_Green2006-11-15 18:6:49Patrick0 -
Hi Patrick,
Mmm. Shelf routines or "Event routines" are defined in SYS.CFG, and allow you to execute some code in special circumstances, like E-Stop, Stopping the program, restarting, warm-restarting, etc..
The standard configuration for PickMaster, for example, includes following event-routines declarations:
-Routine "ResetEvent" -Shelf "RESET"
-Routine "PowerOnEvent" -Shelf "POWER_ON"
-Routine "RestartEvent" -Shelf "RESTART"
-Routine "StopEvent" -Shelf "STOP"
-Routine "StopEvent" -Shelf "QSTOP"
All of these routines are defined in PPASYS.SYS file. If the robot is stopped during a Pick or Place movement, InCoordRout boolean will be TRUE. Before restarting, the procedure RestartEvent test this boolean: if it's TRUE, a PPA_JUMP_MOVE error is generated.
The error is then processed in the Main procedure, in the error handler:
ERROR (PPA_JUMP_MOVE)
IF ERRNO = PPA_JUMP_MOVE THEN
ClearPath;
GotoRestartPos;
RETRY;
The robot is homed, and the cycle restarts from scratch with a new pick. Excellent RAPID programming.
Probably you can do something similar.
I'm not sure the Stop event will run in case of collision. Probably you can test it.
Also system output for Error and Path failure conditions are useful for you. Try to connect them to simulated outputs and study their behavour.
But again, my opinion is that collisions should be prevented. Sometimes we use springs on the gripper and sensors to measure the compression to determine external forces during place. Did you think that?
Enjoy,
Claudio
0 -
Hi Patrick,
Do you have multitasking on this robot? If you have this option you can restart the system in the background task.
0 -
Thanks again Claudio, I will give a try at what you suggest and let you know.
Rookie, yes, I do have the multitasking on this robot.
Thanks,
PatrickPatrick0 -
sfdsfff[QUOTE=The_Green]
Hello,
I want to add to an Error handler to a routine to supervise if a small collision has took place between my EAOT and a surface that I'm picking and placing.
I know I can ajust the sensibility of the motion supervision but I want to know how to handle and recover from the error generate by this small collision. I don't want to have to jog the robot everytime it's happening.
Patrick
[/QUOTE]0 -
Greetings,
My suggestion is as follows: Connect your MotSupTrigg output to a trap routine. In the trap routine use StopMove, then ClearPath. The difficult part now is to determine how did the robot collide? I am assuming that it most likely would be in the "Z" direction of the tool. So then do something like this--CollisionPos:=CRobT/tool.
MoveL(RelTool CollisionPos,0,0-100),v100,fine,tool;
Home the robot.
Next you have to determine whether your collision was during a pick or place operation and then recover accordingly.
Sorry if syntax is not exactly perfect, just writing from the top of my head. Good luck,
Lee Justice0 -
Hello again,
I have thought more on your situation and have concluded that maybe you should add an error handler in your pick and place routines rather than in a trap. Do the same as I suggested, but then you would know how to handle the question of was the robot picking or placing.
Regards,
Lemster68
Lee Justice0 -
Greetings,
I prefer Claudio's opinion. I think that in any case if robot detected a collision happend, the robot will turned to "Motor Off" state. so without Event routines i don't think it can restart and working.
Peter0
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