Hey Steve,
Having said the above, another way, but more expensive, is to drive the entire contraption via PLC brain, you could use "High Speed counters" or Stepper/motion cards to drive or read, or drive/read your motors. You can use inexpensive AC or DC motors, and put an Encoder on the motor or on the moving part, your choice, and read its distance via the High speed counter, you can set all kinds of very good positioning that way. The next level up would be stepper (or servos), controlled via a motion card on the PLC (with Encoder feed back). Many of these cards you can select various "Motion Profiles" and set up motion/velocity tables, with set positions that can be called. (this applies to both linear and rotary motion).
I have a pair of Mitsu servo motors actuating the carousel and the arm. The whole thing is controlled by a processor running C code. After thinking about Hood's excellent suggestions, I reasoned that writing some code to generate a step stream and run the servo drives would be shorted time-wise than the learning curve for a new type of industrial drive. The AB seems quite a lot more intuitive that the Mitsu, which is extremely complicated to use in that way, but the code to run the drives was relatively simple and I have the carousel routines finished and tested. The arm is the same servo drive (just a newer model) so the same code, slightly modified will do that job as well.
Ultimately I am thinking about following HimyKabibble's lead in implementing a Kflop and connecting 'satellite' task specific processors to it, but that's a big meal that I don'thave time for at the moment, so I elected to pile the ATC code on top of my existing InTurn™ 4th axis motor controller since it is already tied in and talking to MACH. The little processor has it's hands full as it is, but a tool change happens 'in a vacuum' so to speak when everything else is on hold, so it will probably be fine.
IF your real, real hell bent for leather, then you could just use analog cards, with linear rheostat for feed back coupled with a PID loop per motion axis/device...
Many, Many ways to kill that cat, even do PID loops in a plugin if you like the pain....
Scott
Running in the dark . with scissors . . and my hair on fire . . is pretty much normal condition for me . .