Fanuc Robot programming Tool Offset

  • Hello all,


    I am trying to figure out a way of writing tool offsets and set them directly in PR.

    I am thiking of something like:


    PR[20] = PR[21] TOOL_OFFSET, PR[9]


    Did anyone try to do something like this before? I know I can do offsets by writing:


    PR[20,1]=(PR[24,1]+120)


    By those do not satisfy me as I want them to be tool offsets not just normal offsets.


    I would be very greatful for any advice!

  • Hey,

    I am facing the same problem and would be interested in a clean solution.

    My current workaround is to move to the position and then save it with PR[20] = LPOS


    I don't know what you want to do, but when it comes to shifts in the tool coordinate system, you may also be able to work with a TCP shift.

    PR[999] = UTOOL1

    PR[999,12] = PR [999,12]+PR[9,12]

    UTOOL2 = PR[999]

    Then using Tool 2 if the shift is needed.

    Edited 2 times, last by Tisonus ().

  • Tisonus basically, I want to have a seperate program where I only have to teach manually two positions and the rest of my positions are calculated based on the variables I have recieved from the design drawings. I know I can do that, cause I have done it many times on ABB robots, I just don't know the programming structure for Fanuc Robots..


    so for instance I want to be able to write an offset of my positon from the tool cordination and not the world one. So that my robots move -50mm (Z axis) on tool COORD (which in world would be an X and Z movement) :smiling_face:


    and in the same time I want to keep it in the PR, so in case it's needed I can modify my them w/o problems.

  • Tisonus Excatly like that, but I want them to be assigned to a specific PR, so that I can always see them in PR list and easily modify. So in theory it would be like:


    !Teach PR[23]

    L PR[23] R[1]mm/sec FINE

    PR[24] = PR[23] Tool_Offset, PR[9]

    PR[25] = PR[23] Tool_Offset, PR[10]

    etc.


    But unfortunately, the pendant does not like that..

  • May you can try the following. This is my workaround. Not that clean but I didn't know a better solution.


    UTOOL_NUM=1

    L PR[23]

    PR[999]=UTOOL1

    UTOOL2 = PR [999,12]+PR[9,12] (Caution, Format of Register changes!)

    UTOOL_NUM=2

    PR[24]=LPOS

  • !Teach PR[23]

    L PR[23] R[1]mm/sec FINE

    PR[24] = PR[23] Tool_Offset, PR[9]

    PR[25] = PR[23] Tool_Offset, PR[10]


    Try this and tell us what is you dont like

    !Teach PR[23]

    L PR[23] R[1]mm/sec FINE

    PR[24] = PR[23]

    L PR[24] Tool_Offset, PR[9]

    PR[25] = PR[23]

    L PR[25] Tool_Offset, PR[9]

    Retired but still helping

  • Fabian Munoz what is the point writing it this way if you can simply do that?


    Code
    L PR[23] R[1]mm/sec FINE
    L PR[23] Tool_Offset, PR[9]
    L PR[23] Tool_Offset, PR[9]


    and it's equal to what you have wrote.


    I want to have a procedure where I can set all of my PR's and hold the positions in the specific PR's. So that I write a program that calculates all of them based on the offsets I set. Like I said before, I can do that with normal offset, but how do you do set tool offsets in Fanuc's equations?


    In theory I could do something similar to Tisonus :


    Code
    L PR[23] R[1]mm/sec FINE
    L PR[23] Tool_Offset, PR[9]
    PR[24]=LPOS
    L PR[23] Tool_Offset, PR[10]"
    PR[25]=LPOS


    But it will simply require to go through each position..

    Edited 2 times, last by xBamBamx ().

  • I think it's simply not possible do write it in a clean equation.


    But it will simply require to go through each position..

    thats why I worked with two Tool Frames. In my case, it was not possible to move to the position, so I used the workaround with the second tool frame.


    Here again my code, this time in a working structure:

    Code
    !Teach PR[23] 
    L PR[23] R[1]mm/sec FINE
    PR[99]=UTOOL[1]                'If you are using Tool 1
    PR[99,10]=PR[99,10]+PR[9,1]    'X-Coordinate / need to split, because of format
    PR[99,11]=PR[99,11]+PR[9,2]    'Y-Coordinate  
    PR[99,12]=PR[99,12]+PR[9,3]    'Z-Coordinate
    UTOOL[9]=PR[99]
    UTOOL_NUM=9
    PR[24]=LPOS
    UTOOL_NUM=1
  • Hi guys,

    Not sure if this will help anyone, but i have been studying this thread and similar threads for a while now trying to figure out the best approach for my application, but I figured out a method to Offset the Tool " Z " by setting my User Frame coordinates relative to the fixture i'm working on. So even though the robot was always moving in Tool and everything is taught in Tool, the PR( i , j ) statements i use can reference the Z axis by setting 3 for the " j " as long as i call out the new User frame in the TP program.

    EX:

    1 UFRAME_NUM=1 (new user frame) , default is 0 or (world)

    2 PR[11 , 3] = PR[11 , 3] + R2 (R2 being a register with any value i want to offset with, coming from either the PLC( via a GI ) or put in by hand at the TP)

    3 L PR[11] 100mm/sec FINE


    do this for any position you want to be dynamic, the critical part is setting your User Frame up properly so the robot moves as expected. There are plenty of guides out there on how to set up a solid User Frame.

Advertising from our partners