Aha, the sacred Servo/Stepper/Open Loop/Closed Loop Jihad has made it here!
I have both. There are good arguments for both. In the end, I have a hard time not going for the servos if I can afford it. Just as we can say NASA used stepper-based systems back in the day so therefore steppers are good, we can also say there are almost no stepper-based VMC's made today, so therefore servos are better. In fact, the servos way outperform steppers in most cases, they just cost more, and you may not need (or be able to take advantage of) that extra performance.
We can argue that we don't care about that extra performance, and we may not, but let's not kid ourselves that there isn't even the
potential for the performance or that it won't matter to
anyone.
I agree with most of what kf2qd says, but I don't agree on the cost point. A servo-based system is more expensive, but it isn't $1000 per axis!
For example, my IH Mill runs homeshopcnc servo motors at a cost of $235 (I got the fancier ones, but they have one with encoder for $199 if you're pinching pennies) for 850 oz in motors, which are pretty stout. Equivalent stepper motor might be $130 from the same place, so you save circa $69, the cost of the encoder. Here are my servos:
Add a Gecko servo drive 320 at $114, which is the same price as a Gecko 201 stepper drive, so no incremental cost there.
The last servo specific piece I use is a board from CNC4PC called the "Master Control Board". It manages the servo fault signals from the Geckodrive and costs $48. You wouldn't really need one with a stepper system, although it could be used to manage your E-stop and limit switches. The nice thing it does for servo users is it manages servo fault signals so that a servo fault looks like an E-stop. What does that mean?
A servo fault happens when the encoder indicates that the motor hasn't been keeping up with the commands issued by Mach 3. On a Gecko 320, the fault is triggered if the encoder falls more than 128 steps behind the commanded position. For my IH mill, each step is 0.7 of a tenth, so an error of 128 means that axis is off by about 9 thousandths. Note that this will differ based on the leadscrew pitch, encoder counts, and belt drive ratios for your machine, but it gives you an idea.
In practice what happens is, I run the CNC program, and if the servos don't fault, I know I was within 9 thousands, and probably a lot better, of what the program intended. Equally as important if not more so, the program may have gotten off by nearly 9 thousandths at some point, but with a servo system, it can "catch back up", so the error is localized and doesn't carry through all subsequent moves. If I was running a stepper system, I might be off by a lot more, and the errors become cumulative. Once I'm off, the system never catches back up again. In fact, if I start a whole new part without rezeroing, the error lives on for the new part too!
With the servo fault, I can see by where the machine stopped what it was doing when the error added up to too much. It's pretty easy to turn down the feedrate (potentially just for that part of the program and not the whole program too), restart the program, and try again. If the same happens for the stepper, I have to start measuring the part to find where the error begins manually. I may not even be able to measure the beginnings, because they may have been machined off. In fact, with the stepper, I have no idea if there error is due to lost steps or some other source of error in the machine. This makes tuning up your programs a lot harder with a stepper system than a servo system.
It would be ideal if the controller could actually log where the errors occurred, how far off things got, and even let me set in software the servo fault limit (maybe I want to fault if its off by more than a thou, or perhaps I'd like to be able to change that tolerance at different places in the program). It's be even better if the position signal made the control dynamically slow down or otherwise take steps to "do better". I can't really do that with the rig I describe. I can do a little better with the Rogers board, but it isn't clear to me how to make that board work without even more encoders. It's more of an add on to a stepper system. It's probably not possible at this stage in Mach 3 development to do what I describe at all, but what I do get seems pretty good to me.
In practice, I suspect steppers lose steps a lot more often than most stepper users think. Many people complain that the Gecko 320 is "too sensitive" to servo fault. Given that the fault doesn't happen until they are off a few thou at least and maybe more, those same people are obviously used to running stepper systems that silently get off by that much and keep going.
It can get a lot worse too. Servo faults can be caused because the program runs awry and the cutter is plowing into vises, clamps, tables, and whatever else gets in the way. The stepper will keep chugging through it even after the cutter breaks and there is a smoking ruin. It isn't going to take too much of that sort of thing before the servo will fault and things stop.
So to conclude this rather long essay, do I insist only on servos? No, not at all. I have two machines set up for steppers and one for servos. I'm happy with each. I'm just saying that if I can afford the added expense of servos, I think they're better in every way. I don't see a down side to them other than the cost. That cost is quantifiable. On my mill, it has cost me an extra $210 to buy 3 servos instead of 3 stepper motors, and another $48 for the Master Control Board. I think the extra $258 was well worth it on this mill. Your mileage may vary!
Cheers,
BW