Fanuc multi uframes with PLC selection

  • fairly new to fanuc programming, no schooling, kind of fell into the new position at my place of work due to my 10 years of welding experience and interest in the robots the bought used. I'll start with the details of our setup.


    R2000iA 165F

    R-J3iB

    Lincoln Powerwave 450

    PLC screen for operators to select what stations and parts to run (setup by maintenance)

    2 work tables, 1 on each side of the robot

    4 small part weld jigs(square plate) per table, each Jig location is a separate UFrame (8 total). operators will know them as station 1-8.


    End Goal is to have 40 different small parts welded by the robot as needed in production runs. Management wants the ability to take any 1 of 40 parts (jigs) and place it in any 1 of 8 stations (UFrames) and weld those parts.


    so in a production scenario the operator (not a programmer or tech) would load parts into jig. then select station number on PLC screen and within that station number they would choose the weldment part number they loaded into jig. hit go and it would weld.


    Currently we only have 8 parts in production, 1 per station. on our teach pendant we have a PNS number associated to each station. in that PNS number we call out the uframe, utool and call out a program number for that weldment. The PLC needed a PNS number for each station button, my maintenance guy said it needed to be this way, not sure why exactly.


    so in order to reach the end goal of 40 parts on any station the PLC screen would need to list all 40 weldments numbers under each station button tab for the operator to select. This would also require me to make copies of our programs so that every weldment has a separate copy with a different PNS number. This seems like a very confusing way to achieve the goal they envisioned for this robot and extra cluttered. Without giving the robot some sort of vision to differentiate between jigs and select to correct program to run i don't know of any other way to achieve the end goal. my concerns about this matter have been kind of brushed off so any info from others is helpful.


    like i mentioned above, I'm new to this programming stuff so if there's some trick or better way I'm all ears. I was handed this stuff after someone got it off the ground a few months earlier. they to had no programming schooling and it's all been trial and error so I may be trying to patch up a system that should have been thought out better, I don't know.


    thanks.

  • You don't have to use multiple PNS at all to achieve your goal, and you definitely don't need to make extra unnecessary copies of your programs.


    You have 8 stations and 40 parts so you could create 8 UFs and 40 part programs. Each program would only use PRs, no local points that way they are relative to whichever UF is selected.



    Simply have the PLC send 2 numbers to the robot, station number and part number.


    You could have 1 main program that sets the

    the UF based on station number and then calls the part sub program based on part number.


    I think the big concept you are missing is the ability to call programs from another program. So keep it simple, 1 main program and 1 program for each part for a total of 41 programs.


    You just have to make absolutely certain that you can teach the UF of each station exactly the same way and that each fixture is accurate and identical so the you get the same result at each fixture.

  • that's good to know, great info. I'm still learning and am getting into the registers and position registers but still don't fully understand how to properly utilize them. I have a pretty good grasp on things but I feel like there are gaps to be filled in my learning. I'll do some digging in on PRs and figure that out before we get to deep into our current path. I'm a big fan of doing things right the first time to minimize future rework and have been trying to slow down the current speed of the path we're on until we get on the right tracks. thanks for laying out your response in a understandable way, helps me a lot.

  • Yes, PR's will move relative to the current selected UF. P's are fixed to the originally taught UF.


    (There is a way you can use P points.You would have to always use the same UF and set it equal to one of the other 8 taught UFs in the program. )

  • that makes sense. I made a test program using 4 PRs in UF4 which is to the left of the robot if your are looking at the robot head on, zero position. My program translated to UF1,2 and 3 just fine, all of which are to the left of robot. I tired to run the program on UF,5,6,7 and 8 (to the right of the robot) but it contorted in a way where damage to the weld cable was going to happen. what could be the reasoning behind this? does it have to do with the NUT/FUT config?

  • Probably due to the turn numbers, the 3 numbers after nut/fut.


    Don't use joint moves for any of the positions that work in multiple frames. If you need to use a joint move to get to the different stations put those moves in your main program and do them as regular P points in that frame.

  • the X+, and Y+ directions in all of our UFs when they were taught were the same but if i physically picked up the jig from the left side like i was the robot and walked(spun) around to the right side my X+ and Y+ have now switched so my UFs on my right side table would need to be touched up, orient origin remains the same but X and Y direction changes. am I correct? is this how it should have been set up? I used my sort of test UF 5 and tried this. My test program translated from the left side to the right side with no contorting issues. I always felt like this was set up wrong when i took the job, just didn't add up but wanted to understand more before i jumped to conclusions.

  • What you are saying sounds correct, but without seeing a sketch I don't know.


    You need to label the UF teach points, origin, x and Y. Then you can't get it wrong.


    Whichever physical spot is x+ will always be X+ no matter where you put it or if you spin in circles and stand on your head.

  • here is our layout. UFs are labeled 1-8. all UFs were taught with the pictured X and Y directions. my programs from UF1-4 don't translate to UF 5-8 location. I changed UF5 so X+ was towards the wall and Y+ was towards the robot and my program from the other side translated with the exception of 1 movement which worked when I changed the T value from NUT.

  • If the fixtures are rotated 180 degrees then it makes sense to change the x and Y directions as you stated.


    There is no negative direction when teaching user frames, only positive. And if you don't follow the right hand rule you will flip the world upside down.

  • I'm going to go ahead with resetting my UFs the proper way with the righthand rule. Is there a way to keep my existing points the same even though I'll be changing my current X+ and Y+ directions. or am I looking at redoing my programs?

  • Yes. You can do it by using the Frame Offset Utility, under the utilities menu.


    Just convert your programs to UF 0, with keeping position data set to yes, the when you update your frame, convert them back.


    Another method would be to go through your whole program, and convert every point to joint representation, and then convert it back once you are done updating your frames. Depending on the size of your program though, that might be a bit tedious.

    Check out the Fanuc position converter I wrote here! Now open source!

    Check out my example Fanuc Ethernet/IP Explicit Messaging program here!

  • HI,

    I know many ways to do it.

    Weld offset, leader frame, modify your frame position, offset frame...

    But since you have all your welding programs done I would suggest this:


    1- Use the function "Frame offset" to set all your program into a common frame.

    2- Using simple PR manipulation, relocate this frame to the JIG location, just before welding.

    3- Call your welding program


    this way, you will keep a low volume of programs.

    If you have to alter a welding program, you won't have to do it in all the other same.

Advertising from our partners