RobotStudio event

MoveC Error - 50063 circle uncertain

rakshithb174
edited August 2019 in RAPID Programming
Hello,

I am trying to program abb irb140 robot to move along a closed curve (see attached image). Using IRC5 controller with robotware 6.06

My program is as follows:

PROC moveCir_MVFT()
        
        ! Define TriggIO
        ! Map 0 to 120 mm/s of robot speed to 0 to 10 V; Hence 0.08333 
        TriggSpeed tcp_sync,0\Start,0.05,AO_1,0.08333;
               
        ! Move to approach point
        MoveL [[75.000,100.000,2.000],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v130,z1,tool0,\Wobj:=wobj0;
        
        Set DO1_1;
        
        TriggL [[75.000,100.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,tcp_sync,z1,tool0,\Wobj:=wobj0;
        MoveL [[75.000,100.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,tool0,\Wobj:=wobj0;
        TriggL [[175.000,100.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,tcp_sync,z1,tool0,\Wobj:=wobj0;
        MoveL [[175.000,100.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,tool0,\Wobj:=wobj0;
        
        TriggC [[195.000,120.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[175.000,140.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,tcp_sync,z1,tool0,\Wobj:=wobj0;
        MoveC [[195.000,120.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[175.000,140.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,tool0,\Wobj:=wobj0;

        TriggL [[75.000,140.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,tcp_sync,z1,tool0,\Wobj:=wobj0;
        MoveL [[75.000,140.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,tool0,\Wobj:=wobj0;

        TriggC [[75.000,140.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[55.000,120.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,tcp_sync,z1,tool0,\Wobj:=wobj0;
        MoveC [[75.000,140.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[55.000,120.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,tool0,\Wobj:=wobj0;
        TriggC [[195.000,120.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[175.000,140.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,tcp_sync,z1,tool0,\Wobj:=wobj0;
        MoveC [[195.000,120.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[175.000,140.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,tool0,\Wobj:=wobj0;
        TriggL [[75.000,100.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,tcp_sync,z1,tool0,\Wobj:=wobj0;
        MoveL [[75.000,100.000,0.400],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,tool0,\Wobj:=wobj0;
        
        
ENDPROC



However, when I run this, I am getting error message (50063): Circle uncertain

"Description
Task: T_ROB1
The points are misplaced, reason1:
1 End point too close to start point.
2 Circle point too close to start point.
3 Circle point too close to end point.
4 Uncertain reorientation.
5 Circle too large > 240 degrees.

Actions
Check the points of the circle and the end point of the move instruction before. The points of the circle can be verified by stepping trough the circle in manual mode."

I am guessing this error is because the end point of MoveC and the start point of consecutive MoveL are the same. How can I solve this problem? 

Comments

  • MoveL takes you to the Start of the circle.  The first point in the MoveC is the middle position and the next is the End position.  From there you maybe have consecutive MoveC's, where the start position is the End position of the last circle, then Middle and End again.
    Lee Justice
  • lemster68 said:
    MoveL takes you to the Start of the circle.  The first point in the MoveC is the middle position and the next is the End position.  From there you maybe have consecutive MoveC's, where the start position is the End position of the last circle, then Middle and End again.
    So, are you suggesting this?

    MoveL p1
    MoveL p2
    MoveC p3,p4
    MoveC p4,p5
    MoveC p6,p1 

    If yes, I am still getting error at first MoveC "End point too close to start point"
  • Is there a particular order or syntax to be followed for a MoveL command after MoveC?
  • Not quite, MoveL p2, MoveC p3,p4, MoveC p5, p6.
    Lee Justice
  • rakshithb174
    edited August 2019
    lemster68 said:
    Not quite, MoveL p2, MoveC p3,p4, MoveC p5, p6.
    Still the same error. Error occurs in MoveC p3,p4. 

    I can see robot successfully completing p1 -> p2 -> p3 -> p4 (almost). It stops at p4 and gives me the error
  • lemster68 said:
    Not quite, MoveL p2, MoveC p3,p4, MoveC p5, p6.
    Also, in your answer, how does robot move from p4 to p5? Does it make an interpolation (shortest path)? Can movement from p4 to p5 be enforced as Linear or is it implied?
  • I tried following an example from rapid manual (see attached image).



    p1 = (125,170)
    p2 = (175, 120)
    p3 = (125, 70)
    p4 = (75, 120)

    My Program is as follows:

    PROC moveCir_MVFT()
            
            ! Define TriggIO
            TriggSpeed tcp_sync,0\Start,0.05,AO_1,0.08333;
                    
            ! Move to approach point
            MoveL [[125.000,170.000,2.000],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v130,z1,R3DP_Extruder_Tool,\WObj:=BedOrigin;
            
            Set DO1_1;
            
            TriggL [[125.000,170.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,tcp_sync,z1,R3DP_Extruder_Tool,\WObj:=BedOrigin;
            MoveL [[125.000,170.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,R3DP_Extruder_Tool,\WObj:=BedOrigin;
                
            TriggC [[175.000,120.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[125.000,70.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,tcp_sync,z1,R3DP_Extruder_Tool,\WObj:=BedOrigin;
            MoveC [[175.000,120.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[125.000,70.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,R3DP_Extruder_Tool,\WObj:=BedOrigin;
                
            TriggC [[75.000,120.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[125.000,170.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,tcp_sync,fine,R3DP_Extruder_Tool,\WObj:=BedOrigin;
            MoveC [[75.000,120.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[125.000,170.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,fine,R3DP_Extruder_Tool,\WObj:=BedOrigin;
                                 
            
    ENDPROC

    However, I am still getting the same error in MoveC p2,p3

    Am I missing anything here? This example is supposed to be a verified one. Are there any system parameters that needs to be changed?
  • Lemster is much more advanced with this kind of programming than I, so I hope he can chime in.

    You may wish to consider writing a procedure with parameters that contains moves and RelTool displacements.
  • It looks like:

     MoveC [[175.000,120.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[125.000,70.000,0.400*i],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,R3DP_Extruder_Tool,\WObj:=BedOrigin;

    Is the problem because you are going back to the 175,120,0.4 position too soon.  Another intermediate point will be needed so that the circle angle is not too great.
    Lee Justice
  • Narrowed down the problem to zone size in MoveC instructions. Looks like MoveC needs a larger zone size to work properly, increased from z1 to z10 and everything started working as expected
  • Also, it looks like the TriggC is negatively interacting with MoveC to cause the error. With TriggC line commented out and zone size of 10 everything works fine. But, when TriggC line is un-commented (same zone size of 10 used in TriggC as well), I get the original error.

    I am using TriggC to output an analog value proportional to TCP speed. This is used to run an external equipment.

    Any suggestions on how to fix this? 
  • Set up the system output for TCP velocity.  Read up on it in the System parameters manual.
    Lee Justice