As you know, helical interpolation is used to mill a thread. Two axes (X and Y) will move in a circular fashion while the third axis (Z) moves in a linear fashion. The motion looks like a spiraling motion - but the radius of the spiral remains constant. And again, helical interpolation works nicely for thread milling - at least with straight threads.
Unfortunately, helical interpolation doesn't work so well with tapered threads because the radius remains constant throughout the motion. A tapered thread does require a true spiral motion - the radius machined in XY must change during the motion. That is, a circular XY motion just won't do since the (tapered) milling cutter will be moving in the Z axis during the milling operation. If the circular motion is allowed to continue all the way around the thread, a nasty witness mark will be left at the beginning/ending point of the thread.
More and more controls are coming with true spiral interpolation that does allow the milling of tapered threads. And if you have this feature, by all means use it when you must mill tapered threads.
But if your control doesn't have spiral interpolation, you can still emulate the motion if your machine has custom macro B. But since this application for custom macro will break the motion into hundreds (if not thousands) of tiny linear motions, the control may not be able to calculate and move quickly enough. You may have to limit your feedrate - which will take more time to mill the thread. And of course, if your machine does not have custom macro B, you're out of luck.
There is a third alternative, as long as it is allowable to compromise the thread radius as the thread is being milled. In essence, you can break the full circle needed to mill the thread into several motions. Each motion will be a portion of the full circle - say 90 degrees, or one quarter way around the thread. You'll still use helical interpolation, but with each motion, the radius will change. Here are the steps for doing so.
First, determine the needed radius change as the tapered thread milling cutter machines around the thread. If the thread's taper angle is 1.783 degrees (for an NPT thread, for example), this means multiplying the tangent of 1.783 times the pitch of the thread. For a 0.125 inch pitch (8 threads per inch), this comes out to 0.0040 inch (again, the tangent of 1.783 degrees times 0.125). If machining an internal thread in a downward manner (Z minus), this means the radius of the motion must decrease in size by 0.0040 inch during the thread milling operation in order to eliminate the witness mark.
Second, determine how much the radius will change per segment of motion. Do this, divide the radius change amount just calculated by the number of segments you will use to machine the thread. If you will be breaking the motion into four segments as in our example, divide 0.004 by 4 - and the resulting radius change per segment is 0.0010. Also determine the amount of Z axis departure per movement by dividing the thread's pitch (0.125 in our case) by the number of segments you'll be using (four in our case). For our example, the tool will be departing (moving Z minus) by 0.0312 per segment.
Third, program the arc-in movement in the normal fashion. If the thread we're milling is a 4"-8 thread, if it is at a position in X5.0 Y5.0, and if the top of the thread is at Z zero, her are the first few commands for the tool:
N255 T05 M06 (Place 1.0 inch diameter tapered thread milling cutter in spindle)
N260 G00 X5.0 Y5.0 (Rapid to hole center)
N265 G43 H05 Z0.1 (Instate tool length compensation)
N270 G01 Z-1.1 F40.0 (Fast feed below bottom surface - workpiece is 1.0 inch thick)
N275 Y6.0 (Fast feed to center of 1.0 inch approach radius)
N280 G42 D35 X4.0 (Fast feed to beginning of 1.0 inch approach radius)
N285 G02 X5.0 Y7.0 Z-1.1312 R1.0 F5.0 (Arc in motion at cutting feedrate - thread starts at 12 o'clock position)
In line N285, note that the arc-in approach is a ninety degree (one-quarter circle) arc. For this reason, the Z axis departure must be one-quarter of the pitch (0.0312 in our case). To this point nothing is different from a straight thread - except only one quarter of the thread has been milled so far.
Fourth, program each segment, reducing the radius by the amount calculated above (0.0010 for our example). Note that the ending point of the thread in X and Y must reflect this change in radius. Here are the commands for our example. Also, of course, the tool must depart in Z by the amount calculated above (0.0312 in our case).
N290 X6.999 Y5.001 Z-1.1625 R1.999 (Circular mill first segment of thread - tool is at 3 o'clock position)
N295 X5.001 Y3.003 Z-1.1937 R1.998 (Circular mill second segment - tool is at 6 o'clock position)
N300 X3.004 Y5.0 Z-1.225 R1.997 (Circular mill third segment - tool is at 9 o'clock position)
N305 X5.0 Y6.996 Z-1.2562 R1.996 (Circular mill fourth segment of thread - tool is at 12 o'clock position again)
Fifth, arc-out and cancel cutter radius compensation. Since it makes a one-quarter circle motion, the tool must depart by one-quarter the pitch in Z (0.0312 in our case).
N310 X6.0 Y5.996 Z-1.2874 R1.0 (Arc-out motion)
N315 G01 G40 X5.0 F40.0 (Move to center, cancel cutter comp.)
N320 G00 Z0.1 (Retract from hole)
Once again, this does not make a perfect thread. It merely eliminates the witness mark at the thread's beginning/ending point - and makes the thread look good. While you can dramatically improve the quality of the thread by increasing the number of segments (say to twelve instead of four), nothing beats having true spiral interpolation for milling tapered threads. But if your machine doesn't have spiral interpolation yet you must still mill the thread, this alternative may work for your application.