RE: New project...PCI based servo control board



Hi John,

Sounds like we are thinking along the same lines...  And yes, I'm certainly
open to collaboration.  At this stage, I'm envisioning a single PCI card,
with an architecture that is very tightly coupled to the primary CPU.
That's why I've mostly considered the PCI bus, despite the complexity and
cost drawbacks. It has low latency if properly implemented and is well
supported by all OS's Most definitely FPGA based, because I'm sure we won't
get it "right" the first time, at least with regard to feature set.
Actually, I guess I'm thinking that if we can get the initial board design
completed with just a basic set of functions implemented, it could "grow"
over time to support more advanced features.  Initially I was thinking of
primarily including the functionality of the Servo to Go ISA board, with
stepper support being something for the future.  But as Ray says... Twist my
arm...I agree we should try to get as many inputs as possible.  

As you probably know, the PCI bus (and associated drivers) are fairly
complex, at least if one wants to do a full implementation.  Even 32 bit,
33MHz target only VHDL code for a FPGA instantiation is pretty pricey, but
I'm working on some options.  If we can afford a large enough FPGA, there
will be plenty of room for stepper pulse generators and GP I/O.  As you
pointed out, there a large number of trade offs to be made with regard to
how many features we try to include on single board, but that's the fun of a
project like this.  I'm not very familiar with Jon Elson's designs, but I'll
have a look at them.  I think it's fair to say I'm pretty firmly in the
"single board" camp, as I really want a solution that is tightly coupled to
the motherboard. But having said that.. I guess we could consider "daughter"
cards....:)

I'll try to have some sort of preliminary board spec to talk about at NAMES,
capturing as much of everyone's input as I can.  I need to better understand
what the programmers would like to see in way of interfaces.  I'm thinking
that some sort of block I/O, reading or writing to multiple registers with
one transaction would be preferred... But maybe single register is access
fine.  Anyway LOTS to talk about, I hope we can hook up at NAMES.

Best regards

Craig Edwards      

-----Original Message-----
From: emc-at-nist.gov [emc-at-nist.gov] On Behalf Of
jmkasunich-at-ra.rockwell.com
Sent: Wednesday, March 26, 2003 9:42 AM
To: Multiple recipients of list
Subject: RE:New project...PCI based servo control board





Craig Edwards wrote:

> Actually, I started on a project around a year to
> define and build a PCI based servo control board,

> I've tried to solicit some feedback for requirements
> on a couple of other forums, but most were/are
> interested in a more "distributed" sort of solution

> Anyway, I'm thinking this group might be more interested
> in this project; if so, I would like to try to attend
> NAMES just to meet some of you and to better understand requirements 
> for the "ideal" servo / encoder interface board that could be easily 
> used by EMC.

I'm interested, both as a potential customer and a
potential contributer.  Are you aware of Jon Elson's
universal stepper controller and PPMC board set?
The stepper contoller has 4 high speed pulse generators
and 4 encoder counters, as well as some general I/O.
The PPMC set is more modular, and includes an encoder,
input board, analog output board (for analog servo amps),
and generic digital I/O.

One of the problems that face any hardware solution is
the wide range of requirements.  Some folks have analog
servo systems, and need analog outputs with encoder
feedback.  Others are using Gecko style step-and-direction servos, and need
pulse train output, with optional encoder feedback.  Others are using
steppers, and simply need pulse outputs.  Then there are all the secondary
functions: Jog wheels need an encoder input.  Lathe spindles also need and
encoder input, with an index pulse for threading. Rigid tapping on a mill
also needs a spindle encoder. Variable speed spindle drives need an analog
output, even if the rest of the axis drives are step and direction. And
every system needs some amount of digital inputs and outputs, for limit
switches, e-stops, tool changers, spindle and coolant control, and so on.

For example, consider my project.  I am trying to CNC a Shoptask 3-in-1
machine.  I want to do a first class job, with support for threading,
variable speed spindle drive, etc.  My requirements are:

Three main axis (X, Y, Z), with Gecko microstepping drives.
One aux axis (rotary table or index head), also Gecko stepper. Each of these
axis needs a pulse generator, and probably a pulse counter (unless the
generator is open-loop accurate). Each axis also needs at least one and up
to three inputs for limit and home switches.  I also need an encoder input
for a jog wheel, and an encoder input (with index pulse) for the lathe
spindle.  I will be using a VFD for the spindle drive, so I need start,
stop, forward/reverse, and speed reference signals for the VFD, as well as
two signals to control contactors to connect either the mill or lathe motor
to the VFD output.  Finally, the Shoptask millhead can be raised or lowered
(in lieu of a knee), and at a minimum I want an encoder to tell the control
where the head is at.  Control of the head with up and down outputs would be
better.  (It is driven by a reversible gearmotor, and never moves during a
cut.)  I haven't thought too much about coolant yet, but I certainly want to
be able to add it.

So there is my list.  I'd like to collect as much input from others as
possible - what combination of encoders, analog outputs, pulse generators,
digital I/O, etc., are needed for different types of projects?

Does anyone have any creative thoughts on how to mix and
match these functions?  I know of two basic approaches,
and Jon Elson's products demonstrate both.  First, you
can go modular.  Jon did that with the PPMC line, where
one board has 4 analog outputs, one has 4 encoder counters,
one has digital I/O, and so on.  On the plus side, you can
mix and match the stuff you need.  On the minus side, the
cost is high because you need a number of individual boards
as well as a motherboard.  Jon's Universal Stepper controller takes the
other approach.  It has a fixed set of functions in one FPGA, on one board.
That means a lower cost, but if you need one more encoder, or whatever,
there is no simple expansion path (other than adding another whole board).

I'd like to discuss options, and possibly come up with an
open hardware design.  I am willing to do circuit design,
board layout, etc.  Craig also seems willing to work in
this area.  Maybe we can come up with a design that is
both flexible like a modular system, and cheap like a
fixed system...

John Kasunich













Date Index | Thread Index | Back to archive index | Back to Mailing List Page

Problems or questions? Contact