Archived Posts from this Category
Archived Posts from this Category
This is one given away as a teaching tool by Fanuc. You can see the X Y and Z axis, and you can also see the A, B, and C rotary axis.
it is a common trap to get into to think that each axis is a line, and the triad can add to that confusion; just looking at the X axis, think of it as not a line of motion but a direction. Anything anywhere moving parallel to the X axis is moving in an X direction. The triad shows the positive direction, but if you pick up a jack, you will find it’s almost the same piece.
The Jack has six “Directions” corresponding to the six sides of a cube, and those six directions are x,y,z positive, and x,y,z negative.
What the triad does represent is Origin. The X, Y, and Z axis all originate in the same spot, and the triad helps you to visualize that. Think of the corner of a box represnting the origin, while the edges of the box represnt X, Y, and Z.
But a robot doesn’t have straight axis, or any mechanical way to move in a straight line. Witness:
The robot has six axis, and each axis is a rotary and not a linear axis. So it can’t move in a straight line. Right? Wrong. Comp[lex algorithms allow the robot to move according to a cartesian coordinate system. Imagine that the triad above was at the center of the base of the robot. The robot can easily and accurately move in a straight line, moving all the axis to do so. It can move in X, Y, and Z as easily as jogging a machine tool, and it can do so within very nearly machining tolerances.
This is where it gets weird. The robot also has some kind of an end effector- a gripper, maybe, or a welding torch. That gripper might be double ended, it might even have three grippers all at 120 degrees to each other. Jogging this gripper into position using the basic “Triad” at the base of the robot gets you back to etch-a-sketch type moves again.
Except the robot has the math in it, to put a ‘Virtual” triad in the center of every gripper, so that you can switch from the robot base triad to the gripper triad to move the robot based on the orientation of the gripper or welding torch.
Now let’s think about what the robot is working on. It’s almost impossible to have the robots base triad lined up perfectly with the table of a machine, or the conveyor bringing parts into the cell, so there are OTHER virtual triads that you can place literally on every component in the system. And you can use vision to change those tiads (Called “Frames”) in real time. And you can manipulate those frames either by using sensory apparatus in the system, or by simply calculating and moving numbers into the frame.
A classic example of this is a process called ‘Through Arc Seam Tracking” or “Tast”. Through arc monitors the amp draw of the robot as it weaves around a weld, and when it “Wobbles” the torch back and forth, if the current on one side of the “Wobble” is bigger than the current of the other side of the “Wobble”, it will modify the path of the weld in real time to make sure the weld metal is deposited in exactly the correct location. And this is only a hint at what the programming is capable of doing. More on that later.
The above diagram shows (In the most basic of terms) how the system works. The CNC itself is what does the work, but the CNC gets it’s instruction from the G cote interpreter. In most cases this is written directly on bare metal, as opposed to a piece of software that needs to be loaded.
This part of the control takes the g code, interprets it, and moves the servos to cut the part. It also does everything else. What is everything else? i’m glad you asked. Though, very soon, you won’t be.
Everything else consists of things like
Tool changes, and all the associated motion and real world interface (Actuators, switches, encoders)
Safety equipment (Doors, estops, etc)
Fixturing (Clamps, chucks, tailstocks, pallet changers, barfeeders, etc)
So: The control is busy. The actual code is only a small part of what the cnc needs to do, because all the rest of it has to be 100% deterministic, in other words, has to happen in real time. When you hit Estop, you don’t want the control to tell you “OK< I'll be right there, I have to finish this line first and then I'll stop" Above the interpreter is the G code. You can write G code directly into the machine, or you can use a CAM system of some kind or another to write G code for you. This is commonly done in cases where the code is so complex that it would take forever to write. So why not compile the code, SiG asks? Well to completely understand this, you have to understand the times that a handwritten or CAM created code is error free out of the gate: 0. Tool paths are a thing, but tools are too. I have been working with the very best NC programmers in the industry for thirty years, and I can tell you, they are constantly tweaking code, refining it, changing it to be better. Simple example:On a machine with an really slow tool change, say, four or five seconds, you center drill all the holes first, then change tools once, and then do all the drilling, then maybe tap or ream or whatever. On a machine with a fast toolchanger, say a half or a quarter of a second chip to chip, you center drill, drill, ream, tap, whatever, without moving, because it is faster to stay directly over the hole and just go to the next needed tool. And it is completely common to take a cutting program off one machine and put it on another, if that machine can be made to process the part faster. The technology of the machines changes very regularly as well, and it is possible and common that the machine is altered to suit some new purpose- accessories are added like drill/reamer combinations, high pressure coolant that allows much faster drilling cycles, fixtures that hold the part more firmly so deeper cuts can be made. If the programs were compiled they would have to be modified and recompiled every time a change was made. And that happens with astounding frequency in every shop in North America. Even on old, established processes. Additionally, it requires about an eighth grade math competency to learn and comprehend G code, and make minor changes on the fly. Again, in the early days, compiled code was a thing, but it was found to be so cumbersome and so impractical that it fell out of use very quickly. Landfills are full of controls that were designed to work like that. There are still places where compiled code is used in Robotics, but they are very few and far between and are only used for very specific purposes. More on that eventually. First we have to talk about N dimensional geometers.
Why does this have to be done in real time? Why can’t you compile this and just run it?
Thirty years ago I worked for a company who sold CNC woodworking machines. They carried a big, full cnc line, and a small, Italian made machine that mostly drilled holes. To give you an idea of what I mean, Ikea uses many of this exact machine to make their adjustable shelving units. That machine uses a compiled code processor. It doesn’t do much machining, because compiled code isn’t up to the task, really. And there are several really good reasons why- at least for metalworking machines.
One of them is this. Watch this video all the way through.
Note the cutting times? yeah. Those are hours. 5 hour rough cut. 11 hour first pass. 15 hour second pass. 15 hour roughing level two. and so on and so forth.
Now, this is a true 5 axis machine in the video, which is still, in reality, a very simple mechainsm, and from a CNC programmer’s standpoint, still relatively simple. You just have to make sure your tool isn’t going to heel, that you have clearance for everything, that your tool is set with sub-micron precision, that the forging is bolted down and dialed in with sub micronic precision, and that the power to the machine isn’t going to go out for, oh, four or five days. The tooling, though, that’s another issue.
See, in order to make this all work, the finished pass (and in some cases, the roughing tools) have to be the same tool- on some critical components, changing a tool in the middle of a cut immediately scraps the part. So if you have to make a part that has a single tool that lasts for a 15 hour finishing pass, how do you keep it from wearing? You don’t. If it wears, how does that not change the profile of the part as it cuts? Offsets.
The most critical ability of a machine tool is it’s ability to do offsets. See, most of the time, a CNC part is programmed to it’s actual profile, and you have to tell the machine what the diameter of the tool is, and the machine offsets the path of the tool by it’s radius and cuts exactly the part you expect. On a five axis machine, this includes the diameter of the tool at it’s nose, the diameter of the ball, and the taper of the tool if it has one (Most do, to some degree)
At it’s most simple, the machine will stop the machining process every so often and use built in measuring tools to measure the tool and offset that amount. Tooling these days has predictable wear patterns in certain materials, and the machine can offset on the fly as the tool wears. Remember the ball we kicked? yes, it does happen that the geometry of the machine is changed in real time as conditions change. Oh, and let’s talk about changing conditions a moment. As a machine moves, the friction of the ways, ballscrew, gears, brakes, all causes temperature rise. Some machines- especially five axis machines- cannot be even operated without a specific warmup time. And when you are cutting, on something critical, even a three axis machine will have temperature monitoring equipment embedded into the castings at various locations through the machine, and that processor that’s keeping track of the circular path in real time will adjust the path, in real time, based on the tool wear and the increasing or decreasing temperature conditions in the machine. And we are STILL only talking about two axis, though the complexity involved in going to three axis or even five (Common in machine tools) is not really dramatically different. BTW, the turbine rotor in the video above is a classic example of how a curve can be interpolated in 5 axis at once.