Unable to Perform a Move Instruction After Cyclic Brake Check

  • I have an IRB7600 running RobotWare v6.12.00. I have a local procedure that I want to automatically execute a cyclic brake check when the PLC gets the SC1CBCPREWARN signal. The robot will move to position and execute the brake check, however it will not perform any move instructions after, even though the system still says running. My first thought was that the CPU was reading ahead too far and trying to execute the move instruction while still performing the brake check, so I added a WaitRob \InPos instruction after the call for the brake check, but this didn't fix my problem. I also tried the \ZeroSpeed switch but that didn't work either. I tried calling the regular BrakeCheck, but with SafeMove 2 installed I am required to use CyclicBrakeCheck. The CBC routine is able to finish and I make sure not to interrupt it while it is executing. The SC1CBCOK signal is being sent as well once it finishes.


    Here is a basic version of what I'm trying to run:

    Code
    MoveJSync pPreBrakeCheck, v1000, z200, toolhand1\WObj:=wobj0, "rMoveInSync";
    MoveJSync pAtBrakeCheck, v100, fine, toolhand1\WObj:=wobj0, "rMoveInSync";
    WaitRob \InPos;
    CyclicBrakeCheck;
    WaitRob \InPos;
    !PP will get stuck here despite the system saying "running"
    MoveJSync pPreBrakeCheck, v1000, z200, toolhand1\WObj:=wobj0, "rMoveOutSync";
    rGoToHome;
  • After doing a lot more tests and looking through the documentation I found a solution.


    The first thing I changed was the second MoveJSync command into a MoveJ and called rMoveInSync on the next line according to ABB's recommendations for stop points.


    Next, to fix my movement issue I used the StopMove and StartMove instructions:

    Code
    MoveJSync pPreBrakeCheck, v1000, z200, toolhand1\WObj:=wobj0, "rMoveInSync";
    MoveJ pAtBrakeCheck, v100, fine, toolhand1\WObj:=wobj0;
    rMoveInSync;
    CyclicBrakeCheck;
    StopMove;
    WaitTime 1;
    StartMove;
    MoveJSync pPreBrakeCheck, v1000, z200, toolhand1\WObj:=wobj0, "rMoveOutSync";
    rGoToHome;

    Using the StopMove and StartMove instructions now allows the program pointer to actually execute the movements back to home and finish the procedure. This is not the most elegant solution and I'm still not sure why the problem exists in the first place, but for now it is solved.

Advertising from our partners