What's new
What's new

3.5" NPT G76 Cycle

Sith_Machinist

Plastic
Joined
Jan 21, 2024
So guys I need some help ASAP. Our shops programmer is hurt and unable to be at work. Our shop manager is unfamiliar with programming the lathe. And well I am also unfamiliar with hand programming the lathe and our software wont created canned cycles for the G76. So I need some help writing a program for a 3.5" NPT male nipple.
I know the machine uses 2 line G76 programs but I dont know where to start. I havent programmed a lathe in over 10 years.

Any help would be greatly appreciated.
 
I do not know the dimensions you're trying to hit as I have not drawn up the thread with the proper start and end point diameters, but if you have either a decent solid modeler with the ability to properly model a 3.5-8 NPT, then you can get your dimensions from there.
As far as the G76 cycle itself:

G00 X(start.minor.diameter) Z(start.of.thread)
G76 P(ffccaa) Q(depth.of.cuts) R(fin.allowance)
G76 X(end.minor.diameter) Z(end.of.thread) R(taper) P(thread.height) Q(first.pass.DOC) F(feedrate)

ff= # of finish cuts
cc= chamfer size (0)
aa= thread angle (60)
end.of.thread= The Z-length where you program the path to.
end.minor.diameter= diameter @ end.of.thread (from CAD drawing)
start.of.thread= The safe distance in front of the part where you start each threading pass from
start.minor.diameter= diameter @ start.of.thread (from CAD drawing )
taper= (start.minor.diameter - end.minor.diameter ) - for NPT this means R is negative for OD threads, R is positive for ID threads!!!
thread.height= from CAD drawing

For the numbers, the best I can do is this: 3 1/2-8 NPT - Courtesy of ME Thread Pal

312-8NPT-dims.jpg
 
You need to cut the proper taper prior to threading. Once you've used SDs above info, I suggest you back off on your X offset, then ease into getting your finish thread to size.
 
If you are not using the exact full-form insert, the core dia in G76 may need some adjustment.
1705931977758.png

Edit: Figure added
Determining additional infeed would usually require some trial and error, but 1.2 times the theoretical depth of thread can be a good starting point.
 
Last edited:
taper= (start.minor.diameter - end.minor.diameter )
That's not entirely correct when calculating the "R" value to apply for the taper amount in the second G76 Block, for the Taper amount for the R address is expressed in terms of Radius, and it should include the amount of taper in the length of Z stand off from where the Threading Tool will start. A better method is to simply use the following algorithm.


R = (ABS (Z1 - Z2)) x 0.03125
Where:
R = The value to use in the Second G76 Block. The above algorithm will result in a positive, radial value. If the thread is male, a negative of the value is used, if it's a female thread, the value as is will be used.

Z1 = Z Finish Coordinate of the Thread

Z2 = Z Start Position for the Threading Tool

Also, if you want to split hairs, if a Thread Angle of other than Zero is specified in the first G76 Block, the taper amount will be slightly off by the time the tool gets to the Minor Diameter. Accordingly, the amount of Z Shift of the Z Start Point when the tool gets to the Minor Diameter should also be taken into consideration.

Regards,

Bill
 
Last edited:
if a Thread Angle of other than Zero is specified in the first G76 Block, the taper amount will be slightly off by the time the tool gets to the Minor Diameter.
The way G76 is explained in the manual, this is automatically taken care of by the control, I believe.
 
Going through programs on our server and in the machine I found this.
This is for a 3" NPT program.

This was a working program in the machine as its noted in the control

What should I change. And yes I know I have to cut the taper onto the pipe first.

G01 X3.6 Z.2 F.05 M08
G76 P040055 Q0030 R0005
G76 X3.3156 Z-1.2 P1000 Q0020 R-.0438 F.125
 
I do not know the dimensions you're trying to hit as I have not drawn up the thread with the proper start and end point diameters, but if you have either a decent solid modeler with the ability to properly model a 3.5-8 NPT, then you can get your dimensions from there.
As far as the G76 cycle itself:

G00 X(start.minor.diameter) Z(start.of.thread)
G76 P(ffccaa) Q(depth.of.cuts) R(fin.allowance)
G76 X(end.minor.diameter) Z(end.of.thread) R(taper) P(thread.height) Q(first.pass.DOC) F(feedrate)

ff= # of finish cuts
cc= chamfer size (0)
aa= thread angle (60)
end.of.thread= The Z-length where you program the path to.
end.minor.diameter= diameter @ end.of.thread (from CAD drawing)
start.of.thread= The safe distance in front of the part where you start each threading pass from
start.minor.diameter= diameter @ start.of.thread (from CAD drawing )
taper= (start.minor.diameter - end.minor.diameter ) - for NPT this means R is negative for OD threads, R is positive for ID threads!!!
thread.height= from CAD drawing

For the numbers, the best I can do is this: 3 1/2-8 NPT - Courtesy of ME Thread Pal

View attachment 424044
Thank You.
That is exceptional data. Im very sorry on asking dumb questions. I can program some really basic stuff and basic threads but these tapered ones ive never had to program
 
Going through programs on our server and in the machine I found this.
This is for a 3" NPT program.

This was a working program in the machine as its noted in the control

What should I change. And yes I know I have to cut the taper onto the pipe first.

G01 X3.6 Z.2 F.05 M08
G76 P040055 Q0030 R0005
G76 X3.3156 Z-1.2 P1000 Q0020 R-.0438 F.125
First DOC is less than minimum DOC. Normally, this is not done in G76.
 
That's not entirely correct when calculating the "R" value to apply for the taper amount in the second G76 Block, for the Taper amount for the R address is expressed in terms of Radius, and it should include the amount of taper in the length of Z stand off from where the Threading Tool will start. A better method is to simply use the following algorithm.


R = (ABS (Z1 - Z2)) x 0.03125
Where:
R = The value to use in the Second G76 Block. The above algorithm will result in a positive, radial value. If the thread is male, a negative of the value is used, if it's a female thread, the value as is will be used.

Z1 = Z Finish Coordinate of the Thread

Z2 = Z Start Position for the Threading Tool

Also, if you want to split hairs, if a Thread Angle of other than Zero is specified in the first G76 Block, the taper amount will be slightly off by the time the tool gets to the Minor Diameter. Accordingly, the amount of Z Shift of the Z Start Point when the tool gets to the Minor Diameter should also be taken into consideration.

Regards,

Bill
You would be correct, I did forget the radius value, so it's: taper= (start.minor.diameter - end.minor.diameter )/2

Your formula for R is universal, but to get the end diameter correct one would still need to either draw the thread in CAD or do more trig on paper.
 
The way G76 is explained in the manual, this is automatically taken care of by the control, I believe
Perhaps you'd like to point that explanation out. The Tool will never go past the specified Z End Point, yet when a Tool Tip Angle is specified, the Z Start Point is varied. This is clearly verified by observing the actual coordinates displayed.

The only way that the error in the Taper could be "automatically taken care of by the control", as you put it, would be for the control to vary the the amount of "R" as the tool got closer to the finish diameter, for the tool will always finish at the specified X value at the Z finish end of the Thread. The control does not do that and that also can be observed by the coordinates displayed.
 
Last edited:
Your formula for R is universal, but to get the end diameter correct one would still need to either draw the thread in CAD or do more trig on paper
I don't see it that way. To draw the part in CAD you need at least either the Start or End diameter and a length. The R value for the taper is simply a radial value based on a taper amount and a length.

In your Post #2, you show the following line:
G76 X(end.minor.diameter) Z(end.of.thread) R(taper) P(thread.height) Q(first.pass.DOC) F(feedrate)

along with the following explanation for taper

Unless you're referring to a Start Minor Diameter from where the Tool Start off the workpiece in Z, then your following algorithm is still also incorrect, for it seems to not take into account the stand off of the Z Start Position.

so it's: taper= (start.minor.diameter - end.minor.diameter )/2

There are many Taper Treads cut with the G76 Cycle where they weren't drawn in CAD. The only requirement is that the Minor Diameter (Male Thread) is specified at the large end and the Radial Taper amount.

Regards,

Bill
 
Perhaps you'd like to point that explanation out. The Tool will never go past the specified Z End Point, yet when a Tool Tip Angle is specified, the Z Start Point is varied. This is clearly verified by observing the actual coordinates displayed.

The only way that the error in the Taper could be "automatically taken care of by the control", as you put it, would be for the control to vary the the amount of "R" as the tool got closer to the finish diameter, for the tool will always finish at the specified X value at the Z finish end of the Thread. The control does not do that and that also can be observed by the coordinates displayed.
Bill, is it not the case that the final pass of the thread is gospel and everything that comes before is kind of irrelevant?

As in, you can G76 a parallel thread with a Pxxxx60, then go over it again with Pxxxx00 and the final pass is in the exact same location.

Is the same not true when you program a taper thread? Final pass is correct, even if every preceding pass had some small taper error?

I am having a bit of a hard time wrapping my head around what you're saying.
 
Screenshot_20240123-021341.png

I cannot see why the control cannot ensure that all cutting passes are parallel.
(The toolpaths at the start of cutting passes are slightly different in model D)
 
Last edited:
Bill, is it not the case that the final pass of the thread is gospel and everything that comes before is kind of irrelevant?

As in, you can G76 a parallel thread with a Pxxxx60, then go over it again with Pxxxx00 and the final pass is in the exact same location.

Is the same not true when you program a taper thread? Final pass is correct, even if every preceding pass had some small taper error?

I am having a bit of a hard time wrapping my head around what you're saying.
Hello Gregor,
As I stated in my Post #5, the error in the taper occurs if other than Zero is used as the Tool Tip Angle. The Tool Tip Angle is specified so that the cutting is done with the Leading Edge of the Insert. How this is achieved by the Control is by the Z Start Position being varied in with each new DOC; the Z Star Position is moved closer to the Start End of the Thread. As the tool will never go past the specified Z End Point, if the Z Stat Position is made shorter and the R value remains the same, the taper being cut must vary.

Yes, repeating a Final Pass on a Tapered Thread, will have the tool track in exactly the same path as the final path as the final path when the Thread was initially cut, irrespective of what Tool Tip Angle is used, provided that it's the same Tool Tip Angle used to cut the Thread initially. If the Tool Tip Angle specified is Zero, as in your example, then the Taper will be correct, for there is no variation of the Z Start Point of the Tool..

Regards,

Bill
 
Last edited:
View attachment 424134

I cannot see why the control cannot ensure that all cutting passes are parallel.
(The toolpaths at the start of cutting passes are slightly different in model D)
Try it on an actual machine, using actual values and observe actual coordinates. There is another Forum Member that came to the same conclusion and submitted his algorithm for obtaining the correct taper for the final pass. I can't recall the members name, but his Post was not that long ago, certainly within the last 12 months.
 
Last edited:
I have not verified, but ensuring parallelism is mathematically possible. If the control is not doing it, it is surprising.
 
Ok well it seems as if this subject isnt cut n dry. Why is it so hard in 2024 that a machine cant have a predefined NPT section. I just guess ill have to mess around with the numbers. I know doing G92 is super easy because I can control each depth of cut. Where as the G76 is done completely by the control is seems.
 
Why is it so hard in 2024 that a machine cant have a predefined NPT section.

It isn't the fault of the machine, in fact it isn't the job of the machine to thread an NPT on it's own.
It is the super unintuitive idiotic ( to me anyway) description of the NPT standard.
Just flip open the machinery handbook, and you'll find definitions as pipe face, gage notch, pipe end L1, length of hand engagement, length of effective thread, length of wrench makeup, overall external thread length ....
I'm sure someone is going to come by shortly to defend that kind of stupidity, but I will stand by and state that it is a fucked up way to define something.
 
I know doing G92 is super easy because I can control each depth of cut.
This actually is one of the limitations of G92. YOU have to control each depth of cut, which should gradually be reduced for triangular inserts, so as to ensure nearly equal volume removal in all cuts, so that the chip load is nearly uniform in all cuts. It cannot be correctly done manually, as a lot of trigonometric calculations are involved which nobody does. G76 does it for you.
I have discussed the limitations of G92 in my CNC Lathe Handbook ...
1705996941024.png
G76 does not have these limitations, apart from several other useful features.

You may like to read my book, if you are serious about programming. You will learn many things which are not there in similar books in the market, that too at a throw-away price.
 
Last edited:








 
Back
Top