John S. is right, but it is not the single index pulse that is the culprit.
Mach3 has several (waitfor, leadin, leadout, one more..) bugs in the threading cycle, that show up or not, in different ways (seeen 25.4 times easier with metric).
Also, probably all or almost all simple schemes have a *bad* index pulse. It is "fuzzy", and often not consistent, and thus leads to garbage-in, garbage out.
We conclusively proved this on my 12x lathe, with a 0.2 micron step size, running a servo with about 1000 kg lateral force on Z.
We did logging at 633Mhz with a centipede hw board, with nanosecond ! resolution pulses getting into a log file.
After this, Sergey K of Centipede did a new hw board, that gives a cleaned up, triggered, clean, single index pulse.
This is the index board on sale at his site.
This then enabled proving some of the Mach3 bugs, and eventually overcoming some/most of them.
A cold lathe, in the morning, ran at 530 rpm. A warm one about 540 rpm.
A single threaded groove would track within or inside 0.01 mm, in a cold lathe, when the groove was done on a warm one.
This proves that a single index pulse *can* perfectly track, in varying conditions, a single thread.
We used old copper on one test, where the groove was very bright, and a 0.01 mm variation out of groove was perfectly visible.
My lathe is an ongoing experiment in building multiaxis turning center capability, with small shop tooling.
It has been done as good as can be, with cost a secondary consideration.
SO..
single index pulse is fine. Mach3 is not. Some hw boards will thread.
I now have a dspmc, with all kit needed to thread, not yet installed.
I hope to get to it soon.
It apparantly works (and I will be, next, using an encoder, somewhere in the 5000-30.000 pulses/rev range). Or more.
Initially I will use the centipede single pulse index, and am 98% sure it will work.
Afaik, the only real realiable threading solutions on Mach3 are the kfrog, centipede, and dspmc, with some minor PP options working. I have no personal experience with kfrog.
Both the mfct and Hood report threading works with dspmc, and it can go as high as 4 Mhz (as can the centipede).
4 Mhz is desirable, very much.
I believe the SS does not work, and the sw in any case is very buggy and lacks support.
The centipede will not be upgraded for Mach4, according to Sergey, so thats out.
(Centipede has weird (not as in PP) homing, but works repeatably to 2 microns, and could be sw filtered to 1.5 microns avg positional error, with optical switches (which I use on z)).
Conclusion:
ELS can be done (had been proven with hw ELS kit and emc2) with single index, well.
It is hard to do well.
Servos will provide very much better performance.
Threading needs medium speed and very high resolution, and ideally very high acceleration (leadin-out).
This is impossible to do well with steppers - they dont have high dynamic range.
My goals are sub-micron accuracy, and at least sub-micron resolution.
At the moment I have 1 micron fysicval resolution.
The x-axis is 14 x stiffer than stock, and its already a very good light industrial lathe as stock.
I am using a 0.750 inch ballscrew, overconstrained, with screw in tension, on x.
I have still to fit a turning center ground class-1 32 mm ballscrew I have, to the z.
10.000 count servo, at the moment, going to brushless AC servo. At 1:3 to leadscrew, HTD 5 / 15 mm wide belts.
The new screw will get me to better than 1 micron, at 1:3.5 / 1:4 transmission, about 30.000 counts/turn.
I may put a low-backlash precision planetary gear on the screw, at 1:5. This would get me the right acceleration and resolution.
Fwiw..