RobotStudio event

Error Handler for a Motion Supervison Err

Options

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

Patrick

Comments

  • Does anybody have an idea?

    Did I explain myself clear enought?

     

    Thanks for your help.

    Patrick

    Patrick
  • claudio
    Options
    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




  • 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:49
    Patrick
  • claudio
    Options
    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


  • Rookie
    Options

    Hi Patrick,

    Do you have multitasking on this robot? If you have this option you can restart the system in the background task.

  • 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,



    Patrick
    Patrick
  •  

     

     

    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]
  • lemster68
    Options

    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 Justice
  • lemster68
    Options

    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 Justice
  • Peter_ABB
    Options

    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.

    Peter