|
machctl is a real-time control system for high-resolution
servo and stepping motors. It is used to drive robots, industrial automation
equipment and machinery such as milling machines and lathes. It is
particularly well suited to machine control over a network.
The machctl distribution includes a server daemon, machctld,
a number of utilities as well as our BSD kernel patches.
Our graphical CAD/CAM package,
cadtools,
can interact with a machctld server over a network connection.
cadtools can compile part programs to machctl's internal format
(additionally, a G-Code interpreter is also being developed).
The most complex task handled by machctl is the generation of motion
control signals (ie. step and direction signals), which
is actually handled in the kernel with all system interrupts disabled.
We have zero context switch overhead, so compared to motion control
systems running on real-time operating systems (such as the Linux-based
EMC2),
we can generate extremely stable signals at higher frequencies, with
much reduced hardware requiements.
Our approach is described
here.
Part of the machctl system is implemented in the kernel.
The kernel drivers are currently available for
OpenBSD.
Adding support for FreeBSD and NetBSD is going to be trivial.
The machctl daemon communicates with the kernel part through a
character-special device.
Here is a video of machctl on a 486 CPU
running a 640 oz-in stepper up to 860rpm using a 10-microstep Gecko
controller.
|