Posts by HawkME

    When you use any PR with Cartesian representation, you absolutely must define both the UF & UT prior to using it for a motion command. I always do this at the top of the program in which they are used, or if I am switching back and forth between frames, I will place it right before the motion command.


    Here are the commands to set the UF & UT.

    Code
    :  UFRAME_NUM=0;
    :  UTOOL_NUM=1;


    You will need to determine the proper UF & UT for that position.


    Also, if you place it before the other Cartesian PR motion's it will change their positions as well. It will leave the active frame set as you define it, so you need to look through the entire auto program sequence to see if it will cause any unintended consequences.

    When you backup the files, you will get everything including servo & mastering variables. Instead of loading all the files, take a backup of your robot then just load the needed files to the other robots. The files you need will depend on what you have done, you will have to determine this. Here are some files you will probably want, but there may be more.


    1. all tp programs (*.tp)
    2. IO configuration (DIOCFGSV.io)
    3. numeric registers (NUMREG.vr)
    4. Position registers (POSREG.vr)



    You can see a list of all the files with descriptions by going to the robot webserver and looking at Variable files and TP program files. You can also use FTP to send and receive files to all of your robots.

    Alright, when you can, please check if PR[100] is in joint or Cartesian representation.


    If it is in Cartesian rep, then the PR will go to different locations depending on what the active UFrame and UTool are set to. I do not see anywhere in the program where this is defined. Since you stated that it moved to the correct position manually, this would make sense as the cause of your issue.


    If your PR is set to Joint representation then it will not matter what the active UFrame or UTool is, it will always go the same location. In this case, there is a different issue.

    It looks like the robot takes alternate routes depending on different situations, but eventually ends up at PR[100]. Please find out the following:


    1. Can you post the positional data for PR[100], I would like to know if it is Joint or Cartesian representation?
    2. When you go to the Position Register Screen, highlight PR[100] and press "F2 move to", does it go to the correct location?
    3. When you run the Home macro, does the program get to the line 41 where the move to PR[100] occurs, or is it getting hung up somewhere?

    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

    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?

    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.

    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.

    There is a timing chart in the manual, but it does not have actual times, it just shows when signals need to overlap, etc. Depending on scan times and RPI setting in the PLC, the actual timings could vary from system to system. The timings I have are fairly conservative, you could shorten them if there was a need to, but you would need to test it on your specific system to make sure it still works consistently.

    I used a dynamically created UFRAME to pick parts out of tray that was found using a vision process. The vision process application and offset frame must be set to 0 for this to work correctly. Sample code below creates UF 7 dynamically, and uses PR[9] as a temporary position register to manipulate the data. I set PR[9,4] and PR[9,5] to zero, these are the w & p rotations, which must be set in the program because your 2D vision process is only going to give you X, Y, Z, and R. (Z is set as a fixed height in the 2D vision process). Instead of hard coding p & r values like I did, you should get them from your existing User Frame.


    You have a couple options.
    1. Apply the offset to each point
    2. Set an offset Condition at the beginning of the subroutine. You still have to add an offset command on each point but it is defined in one place.
    3. Use the voffset combined with your user frame, to dynamically generate a new user frame. Then all of your points will be relative and not need an offset at all. This is a bit more complex, but can work very well if done right.


    Sent from my VS985 4G using Tapatalk

    I use cstopi for an immediate abort in the start up sequence.


    But I also have a DI cycle stop for the operator to stop the program with a push button. After every cycle and during waiting periods the robot checks for the cycle stop push button and will go home then end the program if pressed. This allows me to have a controlled customized end cycle routine. The PLC will hold the end cycle DI on until the robot stops, allowing it to finish it's current task.


    Sent from my VS985 4G using Tapatalk

    I also use Allen Bradley Ethernet IP.


    For starting I pulse an abort for 250 msec, wait 250, then pulse prod start for 250.


    Then I have a handshake where the PLC waits for the robot to be ready and finish any initialization or home routine, then the PLC acknowledges with a 250 msec pulsed DI.


    To stop the robot, hold the stop signal on with the PLC until UO[program running] is off to confirm the robot has ended its program.


    When the fence circuit is closed and power on reset, I wait 500 msec then pulse the robot reset. If you don't have the delay it will not reset always.


    I found these to be very reliable timings. You may be able to shorten the times and still be ok, just test it.


    Sent from my VS985 4G using Tapatalk

    You need to determine what is turning on DI[1001]. BG logic, sensor, PLC, reference position, space check function? Investigate these in the manual. There are many ways to turn on that DI when the robot is in position.What is the DI configured to?


    Sent from my VS985 4G using Tapatalk

    Set variable $ualrm_sev[#]


    The # for which user alarm you want to change severity.


    0 = warning
    2 = pause
    3 = abort
    6 = (default) pause and stop motion


    This can also be set with comment tool from the robot web server if available.


    Sent from my VS985 4G using Tapatalk