View Full Version : Lathe programing help

06-17-2003, 07:55 PM
Yes it is me again!!
But this time, I am ready to make parts again, but need a little help in the programing area.
I have included a picture of the parts that I make, along with the stock parts. The shinny one is the one I made out of Titanium.
The radius is made with a radius cutter, but now I have the lathe I should be able to make this much quicker.
When programming a radius hows is that done? I'm sure that this will need numerous cuts to get to the final diameter, but not sure on where to start.
Any advice greatly needed,

06-18-2003, 12:13 AM
Smitty, are you going to write your programs by hand? Are you good with a calculator, and do you understand a bit of trigonometric functions?

I'd highly recommend you get some software to help you out, maybe Bobcad 17 would do for a start, yet be quite cheap.

I haven't gathered from the discussions exactly what TurboCNC expects for arc parameters but here is the general rule: from wherever your machine (tool) is positioned right now, an arc command needs to contain an X and a Z coordinate for the endpoint of the arc coming up, plus it needs an I and a K coordinate to tell it where the center of the arc's radius is located.

If your machine can move a maximum of 90 degrees per arc command, then it needs no G02 or G03 to tell it the direction to move around the circle, this is typical of some controllers. However, usually a G02 or a G03 is needed to command the direction clockwise or counterclockwise movement when the arc is being traversed.

G02 Xx.xxx Zz.zzz I.iii Kk.kkk
is what the generic command would look like. I corresponds to the X coordinate of the arc center, and K corresponds to the Z coordinate of the arc center.

Some controllers will instead accept a R parameter which is the radius, so you would see
G03 Xx.xxx Zz.zzz Rr.rrr

Some controllers are very exacting about the accuracy of the arc center coordinates, and high precision is required for the calculation. The controller checks it current position, looks at the end coordinate of the arc, and then determines whether it can actually get there if the center is where you have specified. If not, then it may give you an error, and not move at all, or else, it will make a correction (linear movement) at the end of whatever portion of the arc it does attempt to do, which will create a gouge or something undesirable in your toolpath.

When you make the calculations for the arc coordinates, you need to know whether the controller expects the arc center coordinates to be in absolute coordinates (from a main part zero point), or incremental coordinates (point to point movement).

In addition, for lathe tools, you need to make a tiny allowance for the tool nose radius of the insert you are cutting with. Since your toolpath is typically planned for a theoretically sharp point, this means in real life, that if you use the "sharp point path" for a final path, the radii you cut will be slightly larger than the specification, let's say by .015 to .031 inch, as these are typical tool radii.

So then, you need to allow for this by drawing your part paths slightly undersize by the amount of the tool nose radius. Or, use tool nose radius compensation at the controller to do this for you on the standard full-scale part profile.

One other trick in lathe programming is of course, that X is usually a diametral figure (Z is not) rather than the actual length of the radius, so a quarter circle starting on the centerline at X0Z0 and moving through a 90 degree sweep on a 1" radius, would be written something like
G02 X2.000 Z-1.000 I0.000 K-1.000. If X were a radius value then you wouldn't have to remember to double the X values all the time.

Now you know why you need some software to give you a hand :)

06-18-2003, 12:49 AM
I see that I am in for some serious work!
Thanks for the help, this might be a little over my head.
Might have to go back tothe radius cutter for now, until I can get a grip on this!

06-18-2003, 09:46 AM
Is that for a RC car Or Truck?

06-18-2003, 09:51 AM
1/8 scale on-road race car. Mugen MRX3
Any idea where I might find a decent program that won't break the bank. I have been reading about Bobcad, and the reviews are not in their favor. I have Vector when I bought the Mill, but it will not load, might give them a call.

06-18-2003, 10:01 AM
I program a lot of lathe parts, but only use turbocnc for my mill.

The parts you have look fairly easy to program using a Cad program to get the points.

Do you have it on a cad program? I might be able to give you some examples or help.


06-18-2003, 10:15 AM
I have Vector when I bought my Mill, but it will not load. I will call them today and see what they can do. Other than that, no CAD programs.
Thanks for the help

06-18-2003, 12:01 PM
Vector is pretty much the same thing as Bobcad, so I've heard. If you have a copy already, there is no harm in trying to get it working.

Bobcad or Vector level programs are plenty good enough, IMO, for hobbyists just getting started in simple nc programming. But, if you can't get Vector working, watch the Bobcad site for 1/2 price specials, which appear quite frequently.

Maybe some of the other guys can vouch for the "bestest, cheapest" CADCAM that they know of.

06-19-2003, 08:46 PM
And the list goes on,
I need to cut a groove in this part, but do not want to cut it all at once. I tried G78, plunged into fast. I also tried G83, but that won't work either, say's that I must be in the same direction of Z, but I am using X.
Any ideas?

06-19-2003, 08:49 PM
As for the CAD program, I called Vector, and they will fix me up! Just need to register the program I have, after they send me the diskette. So, hopefully I can get this running soon.

06-19-2003, 10:50 PM
Well Smitty, glad you're getting fixed up with some software.

Yes, as you have found out, there are limitations to the use of canned cycles on lathes.

The G81, G82, G83, G84 are all designed to operate with predetermined motions in the Z direction, since the assumption is made that you will be drilling a hole, with the drill point positioned right at X0 on the lathe's centerline. These cycles cannot be used in the X direction.

However, there is no real magic to these canned cycles, they are simply a shortcut to a common procedure, but you do have to learn about what axis are active for the duration and what they do.

For "peck grooving" which it sounds like what you are doing, a canned cycle would work if you were cutting a groove in the face of a part held in the chuck. But for the direction you are working in which is X, you'll have to write that one out longhand.

Now I don't want to burden you with information overload, but be aware that you can write a small subroutine to accomplish the peck movements in X. It will not be modal, which means you have to call it every time you want to use it. But, once it is written, you can write your main program very quickly, planning your main program moves to each groove location, followed by one run through the subroutine.

By contrast, canned cycles in the G8x series, remain active until cancelled. This is what modality means. This is not all that useful on a lathe, but on a mill, it allows for one rapid move to occur between each execution of a hole drilling cycle.

important Shut off a canned cycle in the G8x series with a G80, which is the shorthand command for cancelling the active cycle. It is a good idea to place certain commands at the beginning of your program, just to make sure that all such things are shut off before the program runs again. Sometimes, you'll abort a program part way through, and if a G8x cycle was still active, it may go yet again after the first positioning move is read even when your program starts over.

For example, the very first lines of your main program should contain things like
G54 (cancel work offsets, applicable to mills)
G40 (cancel tool radius comp)
G80 (cancel any canned cycle)
G90 or G91 (Tell the machine whether the main program is going to be in absolute or incremental coordinate systems.

So if you want to know about writing subroutines, just post a brief answer describing how you would call up one for your controller :)

BTW, I do not know anything about Turbocnc, so what I have written above is to be understood to be general gcode rules.

06-20-2003, 12:14 AM
You are just a wealth of Inforamtion!! Very glad I have stumbled upon this site for sure!
Now, as for subroutines, how is that accomplished? I do believe that Turbocnc follows most G code rules, so if you feel up to it, show me the way! My groove is .060 deep, but I also am machining Titanium, so I was only going in .005 at a time to be safe.
I was playing around with other codes, and came across G77, now that one alone save me 25 lines.

06-20-2003, 12:45 AM
Smitty, I was browsing the Turbocnc site briefly, but I did not come across a comprehensive table of all the Gcodes and Mcodes that they may have created.

There is a possibility that someone might have written some special routines under what are typically "empty gcode numbers" where no industry standard has yet been created.

Do you have a list of all the G and M codes from your documentation?

Someone else was talking about subroutines with Turbocnc on these forums, but I am not sure if they ever nailed down exactly what parameters went with two special Mcodes that are used to control subroutine calls and returns. These would be M98 to call and M99 to return.

If you can post a sample sub call from your manual, then we won't be giving you any errant advice here. :)

06-20-2003, 12:58 AM
I have all the G/M codes supplied with turboCNC.
The one's that I see important here are M60, M62, ( the only 2 that pertain to Subs)
Where as M60 calls the SUB, and M62 return from sub
Here is the example
N020 M60 #10
Now, as for the N code, does that pertain to the line number I want to call or is it the #10 that I want to call
Seems like that code above is in a loop?

06-20-2003, 01:26 AM
I'll take an educated guess which you can prove out soon enough.

N020 M60 #10

I think the N020 would be your line number where the subroutine begins. The #10 might mean ten repeats of the sub before the return is finally made. You would likely only want 1 repeat per call for your needs here.

For simplicity's sake, I would place your subroutine at the end of your program if possible, after your M2 or M30 or whatever you use to end with. You don't want the main program to stumble into the subroutine accidentally.

Place the M62 at the end of your subroutine code. It should automatically return you to the line following the M60 line.

It is quite simple to use really. :)
One trick: in your subroutine for peck grooving, you will want to switch over to incremental code. So, insert a G91 near the beginning of the sub, and write all your code in incremental (point to point) moves. This is what will make your subroutine portable.
Then, if your main program was in absolute, end your subroutine with:

You can also check your documentation for information on "nesting subroutines" which means placing calls for subroutines inside of other subroutines. There is usually a limit on how many times this is permitted, if it is permitted at all. If you are really sharp, you can sometimes make a really long subroutine into two very short nested subroutines. I did not attempt to do that here:

Your main program contains perhaps:
N25 N100 M60 #1
where the first N25 is the normal line number and the second instance N100 is the sub start line. I could be all wet, too. Maybe the # sign is not repeats, but might be the line number where the sub starts.

N100 G91
N101 F1.
N102 G01 X-.005
N103 X.005
N104 X-.010
N105 X.010
N106 X-.015
N107 X.015
N108 X-.020
N109 X.020
X1. (if this was your starting position in X before you started the sub

06-20-2003, 01:29 AM
Thanks HFD,
I will put all this new info to use tommorrow. Time for bed, can't see anymore!!

06-20-2003, 07:14 AM
The turbocnc.txt manual says that the #10 is the line number of the subroutine.

N020 M60 #10 ;Jumps to line 10.


06-22-2003, 01:08 AM
Would somebody be kind enough to send me a G-code file, with a radius on a lathe. Anything would be fine, just need something to look at, and test, since I have no idea as to where to start.

06-22-2003, 12:23 PM
Hi Smitty,
I don't know what turning center you have but most have canned cycles that walk you through the process. I use a Hardinge CHNC1 with Bobcad17 don't know if you could use it but let me know and I'll send it to you.

06-22-2003, 01:11 PM
Both my Machines are Sherline based.
I use Turbocnc as the program, and have Xylotec driver controller.
Thanks for the help,

06-22-2003, 07:47 PM
Smitty, what format do the arcs have to be written in for Turbocnc?

Details we'd need to know:
Is your main program in G90 absolute mode? If so, then are the arc centers supposed to be in absolute coordinates as well, or incremental (check your documentation).

What if your main program is in G91 Incremental mode? Presumably all coordinates would be incremental under these circumstances.

Does Turbocnc accept workpiece diameter values for X movements, or radius only?

Because of all these different parameters, it would only confuse you for someone to send you a file that is not written in a method compatible with your controller software requirements.

Doesn't anyone else out there use Turbocnc for lathe, or what? Step up to the plate here, you're up :D

06-23-2003, 09:51 AM
I don't know if you will be able to see this picture good enough to tell what I mean.

This is a sample finish cut on a OD using a 0.031 tool radius. If you can read this maybe we can go from here.

If not I can email it.


06-23-2003, 10:19 AM
That came out better than I thought.

I assumed you are using diameter programming. (X values are diameter not radius)

Turbocnc does not use cutter compensation (g41/
G42) so I positioned the tangent point of the cutting tool on the tangent point of the arc to be cut, for the start and end of each radius.


06-23-2003, 11:20 AM
Nice job there, Wjb! That was a lot of work.

You need to check out that second G2, there is something amiss at the end of that line.

06-23-2003, 11:39 AM
that Z should have been a K :


Thanks HFD