How to impose a User Frame to a Point Register?

  • Hello,


    First of all, thank you for your help! It is my first post here, I hope it to be clear and relevant.


    I am using point register PR[] that can yet be use on any UserFrame and UserTool as it is set to UF:F and UT:F (Visible on the top of the "position" menu on the PR). In order to avoid colision between my robot and it's environment, I would like to set this PR[] to be use only on a specific UserFrame regardless of the active UserFrame.


    For example, I would like to set my PR[1] to UF:1 and UT:1. How can I do it?

    Remark, I know how to set a UserFrame to be the active one. It is not what I am asking here. I want to know how to lock a PR on a specific UF so it is always use on this last one, regardless of the active one.


    :merci:


    MaxGag

  • There is not an exact way to do what you are saying, but you do have some options.


    1. Convert your PR from Cartesian to Joint representation. It will no longer be relative to a user frame but will be locked to an exact position.
    2. Set a point equal to your PR in each program you want to use it. See code below:

    Code
    :  P[1] = PR[1] ;
    :  Uframe_num = 1 ;
    :  Utool_num = 1 ;
    :J P[1] 100% FINE ;


    The benefit of option 2 is that your point will always stay relative to a specific user frame and you can use that PR in multiple programs, you just don't use it directly in a motion statement.

  • Hello HawkME,


    Thank you for your answer even if both option doesn't provide me exaltly what I am looking for.


    However, it is weird that Fanuc put these information (UF:F ; UT:F) in the top of the PR[] position menu even if it unchangeable...


    Regards,


    MaxGag

  • Some situations you want to only use a PR in a certain UF & UT, in which case you set the active frames, but in other situations you want them to be applied to any frame.


    For example, if you are creating a pick and place program and you always want to approach the part straight on 10 mm away. You could then use a PR for a Tool Offset of 10mm in Z direction. Then you can re-use that PR offset for all pick and place operations in multiple programs and any UF or UT setting.


    Fanuc did it this way on purpose so that PR's can be re-used easily. Think of it as a global vs. local variable in computer programming terminology.

  • Hi hawkme,


    How do you convert PR from cartesian to joint or vice versa.
    In my program I define
    PR[2,3] = 0;
    L P[1] 100% FINE OFFSET PR[2];
    How do I know that the 3 is for cartesian Z or for joint 3?


    Also When i simply jog the robot in user frame by pressing shift + J6 my tool tip moves from point A to point B.
    how to write a line of code in TPP such that the above happens? I just want to replace the above jogging motion in program.

  • To see if a PR has Cartesian or Joint representation, just highlight the PR and press Position. If you see X,Y,Z,W,P, R it is Cartesian, if you see J1,J2,J3 ... it is in joint.


    To convert the coordinate representation of a PR:
    1. Set the active UF & UT that you want to PR to be converted in (Very important step)
    2. highlight the PR you want to convert
    3. press Position
    4. press [Repre]
    5. select either joint or Cartesian


    Quote

    Also When i simply jog the robot in user frame by pressing shift + J6 my tool tip moves from point A to point B.
    how to write a line of code in TPP such that the above happens? I just want to replace the above jogging motion in program.


    Are you saying you don't know how to record a point?

  • I am not saying that. What I am saying is that when I Jog my robot after setting up the tool frame and user frame from point A to B it follows a certain trajectory(I just do shift+J6). How do I then write a line of code such that it follows that trajectory or simply performs the operation shift+J6?

  • Ok, I see what you are saying.


    Are you moving in joint or Cartesian? What type of path is the TCP making.


    Since you are jogging with the J6 button, either the TCP should be stationary while the arm moves or joint 6 is the only axis moving.


    Sent from my VS985 4G using Tapatalk

  • Hi HawkMe,


    The TCP is close to being stationary. What I mean is I have attached a pointer to the face plate and jogged the pointer tip which is the TCP origin onto the Z axis of the user frame. And I am pressing Shift + J6 (Coord - user) so that the pointer tip remains on the Z axis of the user frame but the face plate makes a 360 rotation about the Z axis of the user frame.

  • I don't believe there is a way to "record" a path, so you will need to record points and use the correct motion commands available to achieve the path you want. You may be able to just record 2 points and use a motion command to move between them, or you may have to record some intermediate points, depending on the situation.


    It sounds like you are jogging in Cartesian coordinates and rotating the tool orientation about the User Frame Z axis. In this case, you will need to use a Linear move to keep the tool tip in place. But depending on how much you are rotating you may put the J6 axis into a different turn count. The turn count can be determined by viewing the configuration string on the position screen. It will look like "NUT000" or something similar. The last number is the turn count for J6.


    Jog to your starting position and check the config, then jog to the end point and check the config. Does your config string change? If the turn count changes then you will need to add the "Wjnt" motion modifier to the end of your motion statement. An "L" move by default will ignore the turn count and take the shortest path. The Wjnt (wrist joint) modifier will force it to use the turn counts.


    If this does not solve your issue, then please post a screen shot of the starting and ending position screens so I can understand what you are trying to do.

  • Hi HawME,


    Thank you for your response. So basically P1 and P2 have the same Config String NUT000. I did not have to use the turn counts. I used the Wjnt motion modifier for both the positions and successfully achieved the rotation about user frame axis when i ran the program. Thanks a ton. Wjnt is the solution I was looking for :smiling_face:

Advertising from our partners