RobotStudio event

Continuing after catching Error 50442 (Robot axis configuration error) in an interrupt handler

Options
Hello,

this is a follow-up to my previous question concerning the detection of Singularities here.

In my program a MoveL instruction is executed which triggers a Robot axis configuration error. This is a MOTION_ERR with Error number 442. So I set up an interrupt handler like this:

VAR intnum movementErrorNum;

TRAP errorHandler
    ClearPath;                                 ! <---- the program ends up here and hangs.
    StartMove;
ENDTRAP

PROC main()
    IDelete movementErrorNum;
    CONNECT movementErrorNum WITH errorHandler;
    IERROR MOTION_ERR \ErrorId:=442, TYPE_ERR, movementErrorNum;
    doWork();
ENDPROC

FUNC doWork();
    ! ....
    MoveJ home;
    MoveL singularityPosition;                      ! This instruction can cause an axis config error.
    MoveJ home;
    ! ....

The goal of this is to be able to skip the bad MoveL instruction. The positions are generated externally and if one cannot be reached, it's okay to skip that point. When I test this code in Robot Studio 6.05 the program pointer reaches the first line of errorHandler, but Error 50442 still appears in the Output window and the program stops. How can I keep the program running and resume execution? This should by restarting the program at some point after the MoveL instruction.

Thank you in advance for your help :)
MG

Best Answer

  • soup
    soup ✭✭✭
    Answer ✓
    Options
    If this is a configuration error rather than a singularity, does ConfL or ConfJ help?

    Did this robot come from an integrator or directly from ABB? I'm pretty sure error numbers between 5000 and 9999 are custom error numbers used by integrators rather than from the factory.

Answers

  • soup
    soup ✭✭✭
    Options
    Why not catch the issue before you do a bad MoveL and have to handle the error by checking for singularity via math (as @Adnan suggested in your previous post)?

  • Because while that catches singularities, I still run into these other issues. No axes are coaxial when I get this error.

    My use case is this: The robot holds a paint brush and paints on a 700mm * 500mm canvas which is mounted in a 65° angle in front of it. A software generates brush strokes for the arm to execute, so it produces a painting. These strokes are generated based on visual feedback during the painting process, so I have to check them as they come in.

    The other robot we use (Reis RV-60) has a feature where it can simply reject a bad movement before starting to move without terminating all program execution. Does RAPID have a similar feature somewhere? I would prefer to be able to catch these errors before they occur, but currently I don't see any way to do this.
  • I called ABB and they told me to use ConfL \Off for the problematic movements. Apparently this does solve my issue for now, as all test cases where the movement failed before works now. The hotline also mentioned that this could lead to unexpected movements and that one should always test for potentially hazardous movements. The RAPID Reference explains the configuration issues in Chapter 3.17.

    soup: We bought the robot (IRB 1200) directly from ABB and the error seems to be coming from them. The type MOTION_ERR is indicated by the leading 5, then the error code 0442. Thanks for your help and also the pointer to ConfL.

    For people who might read this in the future: There is no way to catch the error via an interrupt or an error. :(


  • soup
    soup ✭✭✭
    Options
    Sorry, I read your error as 5000 rather than 50000. Good luck!