说明
主要学习内容
- Understand 3+2 programming concepts
- Understand the differences between traditional work offset versus dynamic versus incline plane
- Understand 5-axis programming methods of RTCP versus Inverse Time and how to improve surface finishes
- Gain confidence in 5-axis programming, and discover how certain codes can improve processes and help you select a machine tool
讲师
- Michael CaliguriLike many people I started on AutoCAD and after being in Industry for a few years I transitioned to the CAD/CAM service side of the Industry, having an opportunity to bring a new product to market in 1996, which was SolidWorks. Having a successful partnership with SolidWorks for over 10 years becoming certified as a trainer and support technician. The primary focus for my customers was really manufacturing having provided services and consulting for the manufacturing segment. In 1998 I was fortunate to be introduced to what was Delcam. Who was already an established respected UNIX product for manufacturing. Delcam was transitioning its technology to the Windows platform, so it was an exciting time to have new products with a rich legacy of robust technology. In recent years I eventually was reunited with Autodesk as part of the Delcam acquisition.
MIKE CALIGURI: OK, I think we're ready to get started. All right, so welcome to the "Understanding the 5 Axis Machining Concepts."
So to begin, my name is Mike Caliguri. I'm an application sales engineer for design and software. I've been affiliated with CAM software for at least on the service side of it for about 22 years. So I got affiliated with Autodesk through the acquisition and when Autodesk by Dell CAM. And then as a result, I've kind of expanded into the rest of the Autodesk products.
Some of the key things I want to discuss in here is just kind of covers from key terms, discuss some different machine types and classifications, as well as different ways or concepts to program multiaxis machines, and kind of how CAM software handles these concepts and how it kind of affects the final output. The idea with this was really to be something that was kind of CAM neutral. So regardless of whether you're using, say, Autodesk PowerMILL, which is kind of my main expertise, or another CAM system or an HSM product or Fusion, the same concepts kind of hold true throughout. But it really pretty important if you really want to master the 5-axis world.
So the first thing we're going to cover is just some very general terminology. And one of these things maybe is familiar to you or not is what we call a right-hand rule. So effectively you hold your hand up, just as the image shows. x-axis is your thumb. Your index axis is y. And your middle finger ends up being z.
Usually, I end up using my left hand to get the same effect because it kind of looks like you're maybe flipping somebody off if you're doing that. But, effectively, it's the same thing. Plus, I can use my right hand to kind of demonstrate some things.
So if I start holding my hand up like this what I'm kind of referring back to is the right-hand rule, which is kind of fundamental and a lot of the rest of the things that we're going to discuss. So it's just kind of important to understand this. This is really the same as like the Cartesian coordinate system as well, which is the way all CAD/CAM software fundamentally works anyways.
And about that, specifically as it relates to machine tools, it's typically A, B, and C axis. And going back to this right-hand rule, your A axis always rotates around your x, your B around y, and your C around z. Now, it's pretty important-- and for a lot of people, especially people that maybe were newer to the CAM, or really newer to CNC, I should say, a lot of cases their first exposure to a multiaxis machine might be a Haas.
And it's kind of the way they did it because they started adding just four and five-axis rotary tables to machines. So it all started with the 4-axis rotary, which was an A, regardless of where you mounted it on the machine. And if you bought a dual trunnion table, it became in A and a B axis regardless how you mounted it on the machine. That was just the way the Haas products because, it was all modular, things like that.
But sometimes people get confused when somebody might say, well, I have an AC machine, if somebody says that then that really tells me that you have a rotary around an x and a rotary around a z, which is really the same as like a standard, say, a Haas machine. Now, they've kind of conformed more to industry standard as of late with like the UMC series.
I reference Haas a lot just because they are kind of very synonymous in the industry. And most people have some familiarity with them. And it's a good kind of baseline reference for kind of the way the rest of machines kind of look and behave.
When you start getting into what I would say, quote unquote, "higher end" machines, which are really just kind of more purpose or specifically built machines, whether for aerospace or what have you, they tend to all follow kind of industry standard and concepts a lot more. So a lot of times when we'll be referred to different machines, we're referring back to this matrix to determine what type of kinematic it is.
One of the other things that we talk about with multiaxis machining, which is important to understand is what's called tool vectors, or sometimes it's referred to as unit vectors. And what vectors are is effectively just the orientation of an object. In the case of CNC, what we're typically referring to is either the milling tool or the vector or the orientation of the center line of a rotary axis. So in the case of an x-axis, it would be a product along x.
So in this graphic here, what I'm showing is actually a cutting tool. And typically, when we think of at least a cutting tool, or even any vector, it's really comprised of two values. It's comprised of an XYZ, in this case of the tool tip, or what you see is 0.1 on the screen there. And that's just regular XYZ tip relative to whatever coordinate system you're working in.
And then the other value is IJK. And IJK is effectively equivalent to XYZ. But it's an incremental value from the first point. So typically on a tool vector or any type of unit vector, the IJK value is incremental or some distance from the first position. So you typically have to establish the XYZ first in order for the IJK to be properly defined. So I is to X, J is to Y, and K is to Z is effectively how those work.
So when we have a tool that's tilted, just to kind of elaborate that on a little bit more, if we had a tool that was rotated around, say, the z-axis and then also rotated again about y, we would end up getting an IJK value that would look something like this, where we always assume that the vector length is 1 unit, or 1 inch, if you did the work in inch units, or 1 millimeter. That's the standard kind of unit of measure.
It can be a vector of 10, so long as everything is incremental from the same 10. So the I is 10 millimeters or 10 inches from the X. The J is 10 and so is the K. So it's all kind of the same thing.
And all we're really doing is just defining the attitude or the posture of, in this case, a tool. But it could also be the center line of a rotary axis. It's just kind of important as we kind of get a little further into this to make sure everybody understands what I mean when I say a few things.
Another one that's pretty critical is what's called azimuth and elevation. So a lot of times this comes into more the programming side of determining, again, a tool's orientation, or attitude in space. IJK works, but it's not very man readable. If somebody gave you an XYZ position in space, you could probably visualize where that is in the machine envelope. But if somebody gave you an IJK value, it would be very hard to understand what is the actual orientation of the tool at that given IJK.
So one of the other ways to kind of describe the same thing as what's through a concept called azimuth and elevation. So it's very similar to what's used in like aerospace, just the way a plane flies, and a lot of other things. If you've ever lined up your own satellite dish, for example, they use the same concept to figure out where to point your dish.
And all it really is basically from your x-axis-- again, going back to your right-hand rule-- the azimuth effectively is the rotation around z effectively, but not specifically that. But if you just think about a normal coordinate system, the azimuth is the rotation around that 0 to 360. And the elevation is the tilt off of that plane. So at a azimuth of 0 and a rotation of 45 degrees, it ends up being a rotation around y, but it's not specific to that. If the azimuth is 30 degrees, then the rotation is not about any axis. It's about that position in space.
And, again, it's a little easier to understand versus say IJK, but it still could be quite complicated when you start getting into say azimuth values that go, say, 220 degrees with an elevation of maybe 85. Well, then maybe you plot it out in your head and it's maybe a little bit easier to do, but still could be a little bit harder to understand.
One of the things about azimuth and elevation, just as kind of a point of reference, it's very similar to like what we would call a head-to-head style machine, which we'll kind of get into that here in a little bit. But it's similar to that, but not exactly, at least from the toolbox's standpoint.
And then the final one, which is probably the most complicated one for people to understand, at least it was the last one that I kind of got exposed to as a kind of getting into 5-axis more and specifically when we start writing code processors, is a concept of what's called Euler angles is how I would say that if I saw it, although I was corrected and told it was it's actually called Euler angles named after a mathematician that came up with the concept.
What these are is effectively the same thing that we were discussing relative to a coordinate system is a rotation to define a position in space. The difference about what makes Euler angles, or Euler angles, kind of complicated is there is a lot of different conventions. Specifically with machine tools, all the different variations you see on the right are the different combinations that are available. So this is where it gets a little bit more confusing. But your machine tool, if it's a multiaxis machine and it has a relatively modern control, uses one of those 24 methods for its Euler angles.
What are they? Well, that's where you typically need to find out. A lot of the problems people have getting a 5-axis post processor to work and work consistently and reliably and predictably is they probably don't have those correct quite honestly.
And what they mean-- and we'll just pick a couple of them out, which is the first one, XYZ STATIC is if I wanted to define a coordinate system in space, what it is it basically first rotates around x, because it's the first letter in XYZ STATIC, x first. And then what it does now is it rotates around the original y second, because it's static. It's from the original orientation. So now we're rotating like this from that y, and then we're rotating from the original z. So this can get very confusing.
The ones that are almost easier to understand are the XYZ rotating, which in that case we rotate around x first. Then we rotate around the new rotated y. Then we rotate around the new rotated z in that order.
Now, some machines, especially a lot of FANUC machines and things like that use what's called a ZYZ rotating. So what it will do is rotate around z first, and then the rotated y second. And then it rotates around z a second time, but it's the new rotated z.
Through any one of these combinations, as long as you have one system in place, you can achieve any position in space. Once you understand it, they actually become easier to understand than say tool vectors or azimuth and elevation are, especially you end up twisting your finger up a lot. I sit at my desk a lot doing this when I'm writing post processors trying to make sure that they're correct. But we'll kind of get into this a little bit more. But this is probably the one that's the most important.
So the next thing is to talk about different types of machines. So we refer to these as the machine kinematics. And I put "Multi-Axis" in quotes, because it's probably the best way to refer to it. I sometimes typically slip up and just call 5-axis, even though it might encompass four axis, but either way, but multiaxis.
So I put the official definition of a kinematic on here from the Webster's Dictionary Online. The practical definition of, at least the way I understand it, is really just the axis composition of the machine. So it kind of goes back to what I was talking about before. Is it a AB machine or a AC or a BC machine?
So when we talk about the machine kinematic, that's generally what we're talking about. And there's a lot of room variations to that. But it's usually some composition of that.
So the simplest multiaxis machine is really a 4-axis machine. So most people probably have either seen one of these or probably have one or maybe even operated one or programmed one, which is in many cases it's an add-on rotary table on top of probably a vertical machining center. Most horizontal machines would be just considered a 4-axis machine.
The difference between them would be kind of what we talked about before is that mounted kind of pointing along the x-axis would be considered an A axis mill, whereas if it was a horizontal machine typically that would be considered a B axis mill because now it's rotating around a horizontal machine, being that z is horizontal. But that's now rotating around y.
So a lot of times, especially if you talk to people like guys that write pose or gals that write pose is that they'll ask you is this a B axis machine, a C, or a AC machine. And once you say that, they know exactly what kind of machine kinematic it really is.
Sometimes it gets confusing when you have a machine, whether it's a Haas-- not to pick on them, just because they sell the most machines and they're easy enough to talk about, but you could just as easily by a Hurco machine or some other machine, even an old knee mill and then take an add on a rotary on top of it.
And the nice thing about it, especially in production shops, is you can move these things around. You can convert it from an A axis machine to a B axis machine by just simply taking the rotary and spinning it 90 on a table and remounting it. And there's applications for that either way. But this is probably the simplest.
The next one is probably the most common and the one most people are familiar with is I would call this an AC machine. Now, if it really is a Haas, they're probably going to call it an AB machine, just because A is always the first axis, B is the second one. But in reality, this would be what we would typically refer to as an AC machine.
And the reason why, again, is a kind of assuming that the first rotary, which is the first table that's going to swing, is going to be mounted along the x-axis. And that the platter, or the rotating part that you kind of see there in the center, is rotating around the z-axis. There's a lot of machines, like say the UMC 750, that follow under this category. Even though it's what we would really and properly define as a BC machine, it's only because it's rotating around y and then rotating around z secondly.
The biggest thing with this type of kinematic really is that it's a table-table kinematic, which means both rotaries are in the table, which means no matter which axis rotates, the part's rotating. OK, so that's probably the biggest thing. These are the easiest, probably most versatile kind of 5-axis machines not only to program, but just to purchase in many cases or operate.
The next one, which is what we would call a head-head machine, so much the same way. It could be a BC. It could be an AC machine typically. But these are where both rotaries are actually in the spindle. So we would typically refer to these as a head-head machine.
What's different about this is now the tool axis is no longer stationary. All the rotations are happening into the tool. So the part's stationary in this case.
So the most common application for these are these 5-axis gantry routers. But also a lot of large part metal cutting machines are typically head-head, mostly because the part weight is so massive that the part has to stay stationary because it is maybe several tons in weight. So it's easier to rotate the head around than try to rotate that big part around.
So you typically see this in the metal cutting world on usually larger format machines. But the kinematic could be any one of the other ones we talked about. But it's usually going to be an AC or BC type of setup.
AUDIENCE: There's an example of both of those machines in the exhibit hall.
MIKE CALIGURI: There's an example of both of those where?
AUDIENCE: In the exhibit hall.
MIKE CALIGURI: Oh, in the exhibit hall, that's perfect. The last one, which I chose a turn mill machine here just because it's probably the most common single example of this type of machine, which is what we would call a head-table machine. And I also chose that because a lot of people don't look at like a mill turn machine or turn metal machine, however you want to word that, as the same kinematic as a milling machine, but fundamentally it is, which is one rotary is actually the "Chuck" axis, the late spindle. And the other one's actually the spindle head itself in the case of a B axis.
So a lot of times if you ever talk to anybody about a lathe with live tooling one of the first things they'll ask you is they'll say, oh, does it have a C axis? OK, that tells us a certain amount. That at least lets us know that we can rotate the Chuck and machine off center.
A lot of times, they'll ask if it's a y-axis, which just means that usually the lathe turret, the standard turret, can move in y. But the big question typically is, is it a B axis lathe? And an all that really indicates to us is that it has an upper milling head that's dedicated, because it has an upper b axis. And normally, you're always going to end up with a C axis as well. I don't know that anyone makes a machine that's strictly just a B with no C.
But they also make many just regular metal cutting machines that look like a vertical machining center when it's just sitting there with what otherwise would look like a 4-axis machine. But, in fact, the upper spindle actually does rotate. Everyone from Mazak to DMG and a lot of other people make these. But they're usually made with a certain industry segment or a certain style of parts in mine. For example, like a lot of cylinder head porting machines, for example, might fall into this category.
Then there's the final one, which you're probably very much on the exotic scale of things, but it is probably the final kind of kinematic to be concerned about, which is what's called a nutating. And didn't come up with three more different slides, but the nutating could be a combination of either a head-head, a table-table, or a head-table type setup. So DMG probably has the most of these that I see at least. The upper image you see there where actually the rotary is tilting would be at least a head-head or maybe a head-table type machine, where the bottom one is a table-table.
Now what makes these different or why they're called nutating is because the rotary axis is not orthogonal along one of the XYZs. Usually, they're on some type of angle, usually around 30 degrees to 45, something like that. And then the other rotary axis is mounted on top of it.
What makes them quite confusing, either from a post-processing standpoint or just operating it, is to simply do a simple 90 degree rotation to get to the other side, both rotaries have to move. So a very simple rotation can actually end up translating into a very complex motion on the machine. So either from an operational standpoint or a programming standpoint, they become very hard to visualize where they're going.
There are some benefits to why they make these machines. I'm not going to get into that. Each of the builders have probably a different reason why. Usually, it deals with the robustness of having those things mounted on an angle versus fully hanging over with a 90 degree. So they can usually get a little bit more robustness into the machine. Again, a little bit more on the exotic side, but it's also just a kinematic that you can be familiar with really.
So the next one I want to talk about is just kind of how CAM software talks about multiaxis. So a lot of times in just the years of being on the service end of things, I'll ask someone, hey, do you do 5-axis? A lot of times the answer is yes. So right in my mind, I'm thinking, this guy is doing some simultaneous, what have you.
And there's a lot of different ways that we look at it. And probably the most fundamental one is what we would call a 2+1 really is probably the best way to look at it. I guess that really should say 4-axis, not 2-axis.
But what this really is where we take a 2-axis tool path, and we incorporate a single rotary axis into it. So going back to the first 4-axis example. Typically, the programming of this type of work is usually taking some type of what we would call a 2D tool path and then putting that onto a 4-axis, whether that 4-axis is positional or it potentially even could be a wrap. It's probably the most simplest way of doing different types of things, but really a 2-axis tool path with the inclusion of one rotary axis.
The next one would be 3D surfacing. And what we do here when we think about 3D surfacing is, in this case, we're actually machining a surface or a face of a solid. We're not simply taking a piece of wireframe. Where the 2-axis, you're really just machining a piece of wireframe and then incrementally stepping down, typically in z and then repeating that pattern again, like, say, in the case of pocketing or profiling. With surfacing, we're literally following the surface.
Now, sometimes the lines can get blurred a little bit with this, because if you're 3D surfacing a flat face, it's really no different than what you would do with a 2-axis back and forth. But the way the CAM software thinks about it, it becomes different. And some of this starts correlating back into how we deal with multiaxis programming as well.
The biggest thing that's different about 3-axis, or what we would call surfacing, is that the faces are typically approximated. And the tool path is generated from that, where a 2-axis tool path, the geometry is literally just done to an offset and then just incrementally drop in one axis, like z, and then repeat it again. There's usually not variation between passes.
But the surface approximation usually, typically, results in longer calculation times. In a lot of cases as well, the final code that's output from that tends to be a little bit more complex in the fact that there's a lot more data typically. There's some variation depending on CAM on how those things might look and behave.
Then we have a concept called positioning. And, in this case, we could take either a 3-axis operation or even a 2-axis operation and include a rotational axis to do a position with. So in this particular case, it's probably the most common multiaxis programming out there, where we have that house 4-axis machine. And we're actually just incrementing that to a position and then doing either a 2-axis or 3-axis operation on it.
So these different classifications I'm kind of laying out relates mostly to how CAM software kind of internalizes tool paths. So depending on which one of these you're doing, sometimes you have different options or different techniques available to you.
And then the final one is actually the multiaxis simultaneous. So typically when we talk about multiaxis simultaneous, we're specifically talking about now is something very similar to what we're doing in 3-axis surfacing, where we're taking a surface or a face of a solid, approximating it, and calculating a tool path on it. I say multiaxis because it could be 4-axis, it could be 5-axis. It just kind of depends on what you're doing.
But usually from a CAM software standpoint, it doesn't really matter. In some cases a multiaxis tool path might literally just be one linear axis with one rotary moving simultaneously with the linear. And that's really when we start defining things as being multiaxis is the fact that the linear is in motion, while a rotary is in motion at the same time. And that's when it becomes a simultaneous tool path.
And the most fundamental type of that is really a 4-axis wrap, where you're really just taking and wrapping then onto a cylinder. Sometimes that's the right solution to do to make a part. But normally when we talk multiaxis, we're not talking about that. We're talking about actually approximating a surface and then having the rotary spin while we're moving linearly.
There's a few things that kind of concern about when you're programming multiaxis simultaneous. For one, the calculation times typically do take longer. They're even significantly longer in some cases compared to a 3-axis tool path. They typically generate a lot more code when you post-processing them.
And a lot of times, the CAM software's capability really starts becoming a factor at this point. I don't think there's a piece of CAM software made today that doesn't machine a pocket or drill a hole. So it's kind of an expected level of functionality.
When you get into 3-axis surfacing, sometimes things begin to blur a little bit. And then when you get in the multiaxis machining, the lines really begin to blur between what is needed to produce a job versus what capabilities the CAM software have. Things like impeller blades and port machining are very specific things, but this is usually some of the upper echelon type functionality. So if you start getting into that arena, you have to kind of be aware of what capabilities your CAM software even has to do this type of work anyways.
All right, so when we start talking about multiaxis programming, there's two different really types. We have what we call indexing or positional. It's kind of same thing. And there's different ways you can actually program that. Kind of the most commonly used method, because every horizontal machine on the market for the most part uses this and probably every Haas with an add-on rotary table uses this or a Hurca or what have you, is they do multiple offsets.
So when you start rotating the part, a lot of things start to happen. If your zero is here in the center of my hand and everything's happy machining it vertically, when you rotate it over here, well, you can't just machine here. Something's got to know to compensate that you're now rotated to here.
So normally, what you end up doing is whenever you rotate the part, you have to pick up another work offset. So either G54 or G55 or 56, what have you. And that's a lot of reasons why a lot of horizontal machines sometimes have dozens of work offsets. Literally for every time the table has to rotate, another work offset has to be called. This concept is great, but the only problem with it is is the setup time of the first part could be exhaustive. So every time you rotate, you would have to go indicate in through whatever processes you use, either probe or a dial indicator, and sweep in that next position.
So typically, this process is used with production parts. So even if you spend some time to get it set up, it's usually not that bad as you start replacing part to part, assuming the fixture repeats things like that. But the number of offsets sometimes can be kind of a limitation on how many different positions you can actually rotate to without having to start recycle them.
Another way to kind of handle indexing or positional is to use one work offset and post process everything to that position. The downside of doing it this way is you really have to locate the part on the machine before you post process the code. So the way a lot of shops generally would like to work is they pre-program it hopefully maybe hours or days beforehand. The code's ready to go. Then whenever that job gets to the point where it's ready to be machined, it could be loaded onto the machine, and then off we go. The problem with this is that you really have to locate the part on the machine and then find where the center of rotation is relative to the part itself. And again, we're dealing with that same compensational thing of the part rotating and changing position.
The good thing is that you can have one work offset, which is nice. So you avoid all the multiple indication in it you have here. But typically when you start working off of a concept like this, the fixed ring that you use sometimes becomes a lot more expensive. So getting like self-centering fixturing and things like this in order to hold parts becomes more of a reality.
The other one, which is probably the newest concept is one called dynamic work offset. So what dynamic work offset is is it's very similar to the center of part. However, in this particular case, the machine itself is aware of its own kinematic.
So what that means is that whatever deviation there is between the different axes, in the case of like an AC machine, if the A axis center is here and the C axis center is here, there's a gap. So when we rotate that up, something has to compensate for that. Through the other two methods, either multiple work offsets or center of rotation, those things are dealt with.
With the multiple offsets, it's dealt by the machine control with the different work offsets. The center of rotation, we have to back feed that into the CAM software. That's why we have to post process it after we know where the part is. And then all the coordinates are already compensated when they get on the machine.
What dynamic work offset allows you to do is to really set your work offset wherever you want. The machine is aware of this offset change between itself and where the part is. And it will just automatically compensate for that.
It's not exactly new, but it's becoming a lot more commonplace only because the technology of dynamic work offset is starting to kind of dwindle down from the high end 5-axis machines down to like the Hurcos and the Haases of the world, the things that are more common in the machine tool shop.
The good thing about this is it's a very easy G code call. It's a one line of code. And the control takes care of the rest. The only downside to this is that you really typically need to have a newer control, a more modern control, I would say, that has this option. In a lot of cases, it may be a cost option when you buy the machine.
So the point of kind of discussing this is a lot of times what I get faced with is a guy buys his first 4 and 5-axis machine. He maybe even asked a bunch of people they know, do you think this would be a good machine tool purchase? Yes, great.
They get it going. We get the post going for them. They go to do the first job, and they find out the only way that they could do it is through multiple work offsets.
They're like, oh, this isn't going to work. You know, once I rotate the part, I'm not going to be able to re-indicate that same position. I'm working off a casting, or something like. That's just not going to work.
Or we say, oh, yeah, no problem, we can do what you want. But you're going to have to post process after you've put that part on the machine. It's like, well, I got to make one of these every other week. That setup time is going to kill me on this thing. Now, it's easier just to do it on two machines. That the purpose of why I bought a 5-axis machine.
Then I give them the real bad heartbreak. I'm like, oh, did you guys buy dynamic work offset? No, what's that? And it was an option that they were unaware of. And they've already took delivery on the machine. The lease contract's already been through on the financing and all that. And then they come to find out there's a several thousand dollar option that would make all their pain go away.
So it's good to be aware that if you are looking for a machine and you understand that these different limitations occur, depending on the type of work you're doing, the type of machine you're looking at, may be narrowed based on wanting a dynamic work offset machine. So I say most modern controls, because if you went to buy a new machine today, you could spec out a machine probably by most builders with that function.
However, a lot of times it's not in the base level machine. And I think if you ask anyone that's been around the 5-axis world for any time, they would probably never buy a machine without that now once that they-- I see some heads in the crowd are nodding. Once you have it, you would never go back to it again.
And sometimes I got to be the bearer of bad news. But a lot of times I sell machine upgrade options. But a lot of times people get a little buyer's remorse with their machine tool that they're really proud of when they bought it to find out they didn't buy exactly what they wanted. Or they would have bought the next size up, it would have come with it and maybe they would also get a better spend or more total changer options or something like that if they would known.
The last one, which really kind of gets back to this Euler angle concept that we have, is one called incline plane. And this is probably the most, I would say, advanced way of dealing with this problem. And what we're doing with what we would call an incline plane, or a lot of times people just refer to as G68.2, just because that's kind of the FUNAC-y Acuma, Mazak-y way of calling it out. But every control-- I shouldn't say every, but all the controls that support incline plane sometimes use a different code.
But the idea with this is that instead of using like a dynamic work offset or center rotation or more work offsets, what we're literally doing is we're calling the work plane or the coordinate system that you've defined in the CAM software. So normally, when you're programming a multiaxis part in your whatever CAM software you're doing, you would typically have one coordinate system for whatever the base orientation of that is in the machine.
And then as you start developing features that are maybe up on a face here or some other orientation, you end up defining another orientation or coordinate system or a tool orientation axis to tell it that the tool needs to be pointed here for that. Or in the case of simply drilling, it just picks up the axis of the cylinder.
Well, what ends up happening is that work plane you define in your CAM software actually specifically gets called to the control. So the nice thing about this is is that all of the output once a incline plane is called is local to that coordinate system. With a dynamic work offset, although it kind of fixes all the world's problems a bit, all the coordinates are still relative to absolute world zero, to G54 or v55, whatever you're using, which is OK.
But once the part gets rotated every year, spun this way, you might be a little confused on which ends up at that point. So a lot of times you might look at a coordinate and say, hold on a second, this can't be right, because my part's 10 inches tall. It's rotated over here. Now, I'm seeing a value of minus 5. Well, that would be a crash if it was like this. That's actually a good number over here. But in dynamic work offset, those are the kind of things you see.
With an incline plane, all the values are relative to that plane call out that you specify. Where this really comes in handy is really with hole drilling. If you had a rectangle array of holes, and you set a coordinate system, say, on the first hole. And then you have like an incline plane call, all the hole values now are XYZ relative to that first hole. So if the first hole was X of 4, Y of 2, and then back to x of 4 minus, you would see those exact values in the code.
So what this does it allows the operators to make adjustments, especially with hole patterns, to be able to tweak them in. When you're using something like dynamic work offset, which is great, when you start getting in those situations, it's harder to figure out how to make those adjustments on the machine, because the numbers, again, are relative to absolute zero. And depending on how the parts rotated, your x might end up being y and different things like that. So with incline playing you can kind of control the output or what that code looks like when you post-process it to the machine tool.
The one thing about the incline plane, which I kind of put at the bottom there and underlined it-- and I can't stress that enough-- is you have to know the Euler convention on the machine tool if you're using an incline plane function that uses the Euler convention in order to define that plane. So does it write you're on x first, y second, and then z? Or however that matters.
This is typically also an option. It is typically even also an even more advanced controls. So your FANUC 30s, 31Is, things like that, you're Siemens 840Ds, they all have those. But that's one of the functions that make those machines quite nice.
So kind of going in that with a little bit more depth is this tilting working plane. So just like we talked about with the Euler convention, when you call that, really what you're calling is a translation from XYZ 0 to the actual local coordinate piece, which is really your G54. And then as you define a hole feature, like say the orange work plane there up in the corner, what ends up happening is that you're actually calling the shift between those two positions.
So in the upper graphic there, the difference between the blue coordinate system up to the orange. So you're also calling the shift of that, the XYZ shift. And you're also calling the rotation of that. And again, that's where those Euler angles kind of come in.
The one thing to note is that once you call that, whatever orientation you have for that work plane, say that that orange coordinate system shown there, that becomes the actual coordinate system of the machine tool. So this is what usually throws people off too if they have a machine like this and their post is working great right of the box. It's all good. They're programming parts. They stop the machine mid-cycle. Then they go to jog it. And they go to jog it.
And then what ends up happening is the machine's moving in x and y like this. It's not moving straight up and down. And the reason why is once you define that work plane, that is the orientation of the machine toward that point.
So it kind of goes back into the CAM a little bit where when you define those, you really want to be kind of conscious on how they're arranged. So usually like what they show they would be the absolute worst case scenario, because they've inverted at least x or y. What would be better if they would have spun that 180 degrees, that orange one, and defined the same work plane, the same tilt direction, then at least all the axes would have been pointing somewhat along their normal nominal direction.
So being kind of conscious of that in your CAM software is really pretty important, not just from the way you output it, and the way your operator sees the code, but just from if you have to jog the machine after a cycle stop, and you want to jog the machine. Usually have to go to an MDI and a bunch of commands to turn all this stuff off. If not, I've seen a lot of people crash their machine just simply doing a jog command after one of these have been called, and just not being fully aware which way is up. Because you can't even always be assuming that x is going to go up. It might go horizontal depending on however that coordinate system was pointed.
So these are all the different kind of ways we would deal with basically really positional 5-axis or positional multiaxis machining. So I kind of have another graphic kind of explaining the same thing. I kind of just include this more for the handout as well. But it's just another explanation of really the same concept again. It's a translation and a rotation.
So also just to plug that as well, the handout has all this material. So when it's downloaded, it's got all the graphics and everything in there. So I've laid it all out.
So a couple of just concerns with positional multiaxis is just depending on the type of work you're doing, which options do we need? I'm not going to go through all these, but they're in the handout. Just to know do I need dynamic work offset? Can I get away with multiple positions?
So kind of moving onto 5-axis simultaneous. So the first concept when we're doing simultaneous work is a concept called inverse time. This is probably the most confusing thing when you start getting into multiaxis. What most people typically want to do is they want to just give the machine a feed rate. I want to cut it 100 inches a minute and off we go.
When you start translating that to a 4-axis simultaneous or a 5-axis simultaneous, what that means is it basically says, OK, everyone go at the same rate of speed. The problem with it is much like on a lathe with constant surface footage, if the rotary is down here, it's moving at one speed. But if your tool's out here, it's moving at a different speed.
So by simply giving it a linear distance of feed rate, there's no way to keep those things synchronous. So what ends up happening with a lot of times when people get to do a 4-axis job or a 5-axis job, the first time they just give it a regular old feed right. And what ends up happening is the machine ends up alarming out. It moves super fast. And then it gives it some kind of axis jerk error.
And the reason why is because it's trying to get the rotary to go as fast as it can. And so is the linear. And it just can't keep them all synchronous at that speed.
So what you could do is you can invoke what's called a G93 command, or inverse time. And what it is it's the inversion of time-- whatever that is, right? So it's 1 divided by time is actually the value. So instead of giving it a rate of speed, what we're telling it is how much time it takes to move to the next position. So it's just a different way of defining it.
So with every move segment, we have to tell how much time it takes to get there. And it's not just the time in minutes, it's however many minutes it is-- well, 1 divided by how many minutes those are.
So usually what ends up happening is your feed rates end up being really weird numbers. So if you have a really short segment, the feed rate numbers usually become in some cases really large. And if it's a long segment, sometimes they become really small. It just kind depends on your feed rate.
But one of the side effects of this is that every line of code needs to have a feed rate. And none the feed rates are going to be man readable, quite honestly. The only time that that happens is if you end up moving exactly at one unit of distance-- so either 1 inch or 1 millimeter-- then that's the only time you'll typically see your feed rate actually output in the code in many cases, assuming you're using a whole number feed rate, like 10 or 100, something like that.
But it's one thing that you need most control support, inverse time. Just a lot of people probably have never tried to activate it. But it's one thing that you need to get set up on the machine tool when you start thinking about doing inverse time.
One off factors with that is what the maximum members time feed rate the machine will take. So a lot of times what ends up happening is your machine might cut at 500 inches a minute, but it will only take a feed rate of up to 999, because it only allows four positions in front of the decimal. Well, that might seem like a really fast feed rate, but it might not be. It depends on what the distance of travel you're actually moving.
So one things you'll see happen is that with simultaneous cutting is that sometimes your feed rates are constrained by this amount. But the one benefit that it will provide is it will basically keep the rotary in synchronous with the linear axis. So what ends up happening is you end up getting a really good surface finish, much better than without it. And you avoid like all these kind of axis alarms and things like that occur.
I see a lot of times people just try to cut off 4-axis job without using inverse time. Like it cut great. It was really weird and jerky, but the finish, it was no good. And the reason why is because they needed to use inverse time.
So again, kind of using the center of rotation command, when you output from multiaxis simultaneous, not to go through this again, but just like we did with the positional, we can output the same way with multiaxis. We can also use this in conjunction with G93. So most things can.
The other one is one called vector programming. So instead of using absolute XYZ ABC, or BC, depending on what your machine might be, at the center point of rotation, we can also give it XYZ IJK. And now, we're going back to that where we're describing the tool orientation again.
So a lot of controls will accept vector programming. Not all of them will. But the nice thing is every machine will accept center of rotation if it's got multiaxis.
The problem with it is if I have two machines that are otherwise identical other than one machine is an AC machine and another one is a BC machine, they have a lot of rotary axis limits and things like that. But I want to be able to program and post process one program that can run on both. You can't, because one machine is a BC and the other one's an AC machine. So fundamentally, one's going to reject the other's program.
Now, this is where you would use vector programming. With vector programming, all your feeding it is just the IJK orientation of the tool. And the control figures out which rotaries need to spin in order to achieve that position.
The kind of bad thing about vector programming is that it's very difficult for the operator to look at the coordinates. And that vector position there which way the machine is going to move or rotate. But it is one of the really quick easy ways to develop a post processor and ensure that if you post process something in a machine, it's going to run and work correctly. If your machine supports vector programming and IJK-- and I've done this many times. Usually, if I'm pressed to do a quick test cut for a customer, or maybe at a machine tool partner, I'll just do a vector programming post, because I don't have to deal with anything else. It's going to work.
I can still use that with G93 with the inverse time. When I'm dealing with center of rotation and the, you know, giving in absolute angles, I have to make sure that all my kinematics are correct, the vector of the axis is our correct. Is x positive on the rotary this way or is it flipped this way? There's a lot of different things that come into play as far as which way is it spinning clockwise or counterclockwise. Vector programming kind of eliminates all that.
And the last one, which is kind of really the real magical one is what's called RTCP, which is what I typically call it. But I've added in there TCPC because in the course of making this presentation, I realize that Haas now has a TCPC option. That's what they call it.
But it's basically tool path linearization. Or what this stands for is Rotational Tool Control Point. Or I forget exactly what Haas varied it a little bit, tool center-- Total Control Point Center, or something like that. It's all really talking about the same thing.
The difference with this is is that normally what we do is we give it the same output as the center of rotation, although we're not giving it the center of rotation output. We're just giving it the angles of the desired rotational positions from our G54 effectively. It's a single line call, typically your G43.1 in like the case of most FANUC style machines. It can also be used with G93. So we can still incorporate an inverse time into that.
The difference is it sorts out all the rotational changes with the kinematic. So the good thing about all this is as well is if you have RTCP, if you have two machines that are basically one shell number apart, in most cases, you have to use either center of rotation or vector programming. Well, if you have center of rotation, the centers are not going to be in exactly the same position. A lot of times most customers don't care because they're within a few thou. But they are different. And whatever deviation it is, you're building that into the part.
So when you have something like vector programming, it kind of fixes it. But, again, there's a lot of downsides to that. When you get to like RTCP, you don't have to worry about it again. There's no downsides to it. It's really kind of the best way to program multiaxis. It fixes all the problems with vector programming and center of rotation.
So it's kind of like from the last slide, either dynamic work offset or really incline plane to me is really the better one. But that's maybe 50/50, a matter of kind of opinion. But at least on multiaxis, being able do with RTCP is absolutely the best way to do it.
And to kind of explain that a little bit more what ends up happening is that if you normally give it a position, showing the graph up here on the right, if the tool's in position and you tell it to rotate using, say, center of rotation, what you're basically doing is it's swinging that part over to the next position, which is your B position. Now, it's kind of exaggerated a bit, but in reality, that's what's happening. Even when you're doing center of rotation, that's kind of what's going on.
With RTCP what it actually does it synchronizes, the linears and the rotaries together from a positional standpoint. Where inverse time was doing it from a feed standpoint, this is doing it from a positional standpoint. So as it's swinging from say A to B, what it's also going to do is raise Z up in the air.
So a lot of times what ends up happening is when you use RTCP, you end up seeing the machine do a lot more motion than maybe what you described. As an example, if you had a table-table machine, and you had the table, say, swung up to 90 and the tool's sitting there. And you just told it to rotate the table down 90 back to here, what you'd actually see is the tool go like this with it.
So relative to the tool position, the tool tip is going to stay in the same spot. And that might mean X, Y and Z will have to move. It just kind of depends what's really going on.
So a lot of times when people start using RTCP and I see a lot where we provide a post processor, they run it, it works great, everything's good, but then a machine starts acting really weird because again if they stop it mid-cycle or something like that, and that's still left on, when they start trying to jog it and things like that, it's going to act weird. And it's the same thing, if you stop it mid-cycle and you start jogging an axis, it will start rotating other ones to keep everything relative to the same position, specifically with the rotaries.
So a lot of times when people stop a program, the first thing you might do is zero to head if it's a head to head machine or maybe swing the axis back to zero, just so they can maybe get to the part. When I do that, then now the thing's taking off like this. And a lot of times what you end up seeing with a lot of problems is axis over limits, because technically in order to stay in the same position when you zero that, if this isn't also commanded to move with it to a new position, it tries to take off and space to stay in the same relative spot.
So this also kind of can create some post processor kind of issues if you're trying to get your initial posts sorted out and tested. But without kind of understanding this, it's kind of hard to understand why you might be getting over limits, when all you're doing is commanding a C axis and you get an X axis over limit. It's like x shouldn't be moving. I didn't tell it to move. But that's exactly what happens.
So there's also a lot of concerns with doing things in multiaxis. One of the things when people buy multiaxis machines, typically the part of the machine they want to see all the rotaries moving. A lot of times, even if you have a multiaxis machine with RTCP and all the bells and whistles, a lot of times it's better to really just take an indexed approach. It's easier to program. It's easier to post process. In a lot of cases too, factors like calculation times and things like that should be considered.
Again, these are all on the handouts. But I kind of included them there. So with that said anybody has any questions? I get one.
AUDIENCE: On the slide about RTCP that you would have G43.1. But I didn't see G43.4 or point 5.
MIKE CALIGURI: Yeah, I didn't include those because with every machine, the commands are different and they mean different things. I kind of chose that, because it was the first one. But, yeah, it's all kind of the same thing, because like on some machine it literally RTCP on is the command to turn it on.
So it just kind of varies. I picked-- that was the first FANUC one. I think that's the same command Haas is using I think. Maybe.
AUDIENCE: Do they have a very similar one?
MIKE CALIGURI: Yeah.
AUDIENCE: They use T234, but it's more like the G43.4
MIKE CALIGURI: I see. OK. Yeah. All right. Yeah.
AUDIENCE: What's the difference the TCPC and center of rotation watch simulation I want to do before I send. So post by code I want to run on simulation on that. With TCPC with the control, I use something different, then the simulation does not--
MIKE CALIGURI: You're simulating it in the control?
AUDIENCE: No. I'm simulating before it goes to the machine.
MIKE CALIGURI: Most likely what you're going to see in your simulation is going to match what RTCP is doing not what center rotation is doing. That's the way most of the simulators are written is to mimic that to a certain extent. But this gets into the great divide between what you see on the screen and what the machine does. And--
AUDIENCE: There would be a need to know where my part is positioned on the machine and in fact feed that into my simulation.
MIKE CALIGURI: That's why there's G code simulation software out there. That's the honest answer you know is you need something like a VERICUT or a similar technology that understands the machine where the machine has to get reverse engineered in a virtual environment to be able to mimic all that. If not, it's a big thing to overcome.
Because just as he pointed out, the G43.1 versus G43.4, there's a slight difference in behaviors between those. So whatever simulation, it would have to understand all that about the machine, as well as the kinematic and the deviation between the like the A and B or and the A and C axes, because without any of that you wouldn't-- and honestly even between different controls the TCPs behave differently.
So the way that it behaves like on a Siemens is going to be-- I haven't seen it on the Haas, but I can just about bet it's not going to behave exactly the same way in the Haas. Not to say one is better than the other, it's just they're just going to behave differently. And the only way to really see that is to have a machine, G code simulator, that supports all that as well.
But, yes, that's a real concern. But with RTCP most of the concerns go away if you have the post working and set up correctly. Except when you're moving from tool path A to tool path B, that's usually where your concern area, because a lot of times your post processor might be hard wired to send the Z home in between. That's not a motion you're seeing in simulation, but where the tool is coming from is now a different position because you've hardcoded home retract, for lack of a better term, in the post processor.
So that's usually why you also see a lot of 5-axis posts that in between every tool path, they go to a spot. They turn everything off. They come back dumb. Then when they get in the position, they turn everything that's cool back on again. And that's why they do that. It's just to avoid that. That's a safe way to make sure that everything's going to happen correct. But that is a real concern.
All right. All right, thank you.