Numbering motions points with registers?

  • Hello everyone,


    Is it somehow possible to number motion points using registers? On Kuka robots I've done this using a trigger and when the motion point was reached, a step counter was then updated. I can easily say R[1]=1 after the point but I'm worried with the robot reading 3 lines ahead that the registers will have the wrong values for shorter motions.


    I need to create a program that returns the robot to Home position regardless of where the robot is. To do this I need to number each point so that the robot knows where it is and will either go forwards or backwards in the program, depending on gripper status, to Home position. I need to find a way to do this so that the register numbers only update when the position coordinated have been reached and motions should be continuous.


    Any ideas on how to do this? :wallbash:

  • Is it possible to use FINE moves. Im assuming you are using CNT. I've modularlize code so after a certain task then increment the register. Ive use this in auto collision recovery so it knows where to go back into a place point based on the register count.

  • No as that will affect cycle time and the movements will be jerky. The only FINE point will be pick/drop positions. Movements have to be CNT. This program is exactly for error recovery and getting robot back to Home position for new cycle.

  • The register will update too soon when you use CNT movements. I had to build a program which was called with distance before 0 mm or time before 0 sec. You can use an AR[] to write the value in the register, which is used in the called program.


    This improved the updating of the register a lot, but it is still not perfect.

  • Instead of using a register, use the robots location.
    Use LPOS then break down the location. X, Y, Z. You know how to retreat from each location so when X = this value the robot must not Z up until X is this value. So then you move X to a safe location to move Z then run it home.


  • Instead of using a register, use the robots location.
    Use LPOS then break down the location. X, Y, Z. You know how to retreat from each location so when X = this value the robot must not Z up until X is this value. So then you move X to a safe location to move Z then run it home.


    That is exactly the way I do it. This is the safest way as well because if an operator manually jogs the robot from its location during a faulted stated then the register method is completely useless and can cause damage to equipment.


    (Never trust operators to following directions)


    Here is a quick example of the LPOS method for just the Z coordinate.


    1: UFRAME_NUM=2 ;
    2: UTOOL_NUM=2 ;
    3: ;
    4: PR[3:MOVE SAFE]=LPOS ;
    5: ;
    6:L PR[3:MOVE SAFE] 100mm/sec FINE ;
    7: ;
    8: R[190:MOVESAFE Z]=PR[3,3:MOVE SAFE] ;
    9: ;
    10: IF R[190:MOVESAFE Z]>(-590),JMP LBL[1] ;

Advertising from our partners