Posts by Zie ka Ndlovu

    I am programming a Fanuc welding robot and my table sits at an angle to the cartesian axes of the robot. I have defined the table surface as a user frame and I am welding multiple small circular motions on the table. The circles are offset 130 in the "table x" and 130 in the "table y". I wrote a programme for one circle which I want to call with offsets instead of teaching many individual points.

    What I am struggling with is how to offset the called programme. In the material I have gone through on offsets, I realise that one can use the offset function per individual point, but that would be very tedious to do as I have to add offsets to everything, even my lead-in and lead-out points. I have looked at changing the user frame dynamically. How I did this was:

    - write the original table UF coordinates into a position register (say PR1).

    - write PR1 into PR2 (PR2 is the dynamic PR)

    - write PR2 into UF[2]

    - call programme. The programme uses UF2

    - offset PR2 [2,1 &2,2&2,3] as desired

    - write the new PR2 into UF[2]

    - call programme

    - write PR1 into PR2 to cancel out the offset

    - write the reset PR2 into UF[2]

    - offset PR2 with new values.

    - Write the new PR2 into UF[2]

    - call programme

    .... the cycle repeats.

    The challenge I am facing now is that since the table is at an angle to the robot's cartesian (see attached picture), assuming I need one circle to be 130 mm ahead of the other one only in "table x", I have to go and calculate how much "world x" and "world y" I need to adjust PR2 by.

    Is there a way in which I can have a PR that's already in the table user frame that I can use to adjust only the x in the table UF if I want to offset only in the table x?