Re: EMC


Dick,

You wrote quite a while ago:

>     Since writing you last, I have made contact with both Matt Shaver
> and Jon. Both have been very helpful. Discussions with them have led to
> several questions for you. Was EMC designed for DC servo motor control,
> AC servo motor control, or both?

It was originally designed for brush DC servomotor control, with +/- 10
volt amps and quadrature encoder feedback, but we added stepper motor
control recently. We haven't done brushless DC servomotors (for which we
would do commutation), nor AC servo motors.

>     I know it has stepper control. Can stepper control and AC or DC
> servo control be combined and integrated without great difficulty?

Yes, is should be easy to combine steppers with DC servos. I haven't
done this but I know how I set things up and it would only take a couple
of hours to try it out and only a little more time to make it easily
configurable.

Currently I have a section of code in emc/src/emcmot.c with a compile
flag (STEPPERS) defined to use either steppers or servos. I would need
to make this a real flag to be used on a per-axis basis.

The way we do stepper code is to run a task at a 100 microsecond period
that pops out pulses for each axis when needed. Since this is
synchronous, the pulse time intervals doesn't vary smoothly. It looked
OK to me but some others have tried a scheme where the task itself wakes
up when the next pulse is needed, and they say it's better. I'm going to
try this out and see. I don't care either way and if it's better and the
code is available then I'm all for it.

>     Is a printed copy of EMC documentation available? Any descriptive
> literature available other than documentation?

Printed copies of the EMC documentation are not available, in the sense
that I can mail you paper. It's all on the Web, at:

	http://www.isd.cme.nist.gov/projects/emc/emcsoft.html

Matt Shaver is writing up some more documentation for his customers.

>     Also, as my project evolves, I find I need more axis of control than
> three. To accomplish my needs I now find I need three axis coordinated
> in real time (or it's equivalent). Additionally, I need to control up to
> 3 to 5 more axis to control the positioning of auxiliary cutting tools.
> Originally I had thought to control these movement functions with I/O
> controlling compressed air to air cylinder actuators. The problem I ran
> into is that certain movements needed to either stop in mid travel for a
> short period of time, or need to be infinitely variable. These
> positioning functions would occur while the x, y, and z axis are not in
> a cutting mode - although x, y, and z could be in traversing from one
> location to another.
>     So, this brings me to the rather serious question of, can two EMC
> programs be run simultaneously and interfaced so as to accomplish this?
> If not, how much work, in hours (in your best estimate or guess) would I
> have to undertake to accomplish same, assuming I could have it done at
> all?

I plan to add full 6-degree-of-freedom motion planning to the EMC after
I fix some bugs that have been  bothering everyone (single step mode is
flaky, we need to add in our improved motion planning, and some others I
have written down somewhere). This would support coordinated control of
a 5-axis mill, for example, or a robot arm.

If you have quasi-coordinated motion, this is a different thing. For
example, you may want to vary the output of some tool from 0.0 to 10.0
as a motion proceeds from beginning to end. Here the output value is not
really a position or orientation (roll-pitch-yaw, for example), but is
some process variable. In general you could have a full
6-degree-of-freedom robot arm with a tool on the end for which there is
no unused position/orientation value you could fake as a process
variable.

One way you could do this now is to use the motion planner's
distance-to-go value divided by the segment's distance as a 1-to-0
variable, that you could run through a function and attach it to a
process variable. We'd need some way to flag when to use this and to
give other parameters to the function, but it should work fine. Would
this suffice for your application? How would you want to program this in
G/M codes?

--Fred



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

Problems or questions? Contact