[Date Prev][Date Next][Date Index]

Re: On beamline motor control





re...

> One possible cost/complexity saving is to eliminate manual control of motors
> & do everything through EPICS. Is this a practical solution? Does anyone have
> any experience with driving motors through the knob box? Is it possible to
> `tweek' motors realistically, or would a manual box interface (generating
> pulses locally) be easier to use?
> 
> Tony Cox

Why not implement manual controls through EPICS as well?  Generating pulses
locally is a mess: it confuses higher-level software.

We prototyped manual motor controls in low-level EPICS code, which cooperate
with higher level software that also talks through EPICS.  With a digital-input
board, we implemented EPICS support for a panel of 16 switches with the following
functions:

1) select a motor (or any other multi-valued output device) for treatment
   {12 buttons}
2) read the selected motor's current position, increment or decrement it, and
   poke it back into the motor record, making the motor do a (backlash-corrected)
   move to the new position.
   {2 buttons}
3) read the increment value mentioned in (2), double or halve it (avoid zero,
   of course), and poke it back where it came from.
   {2 buttons}

The original idea was to put the switch panel in the x-ray enclosure,
since a user seated at the computer typically has this sort of
pushbutton tweak panel implemented on an EPICS screen.  Some users
wanted a switch panel at the computer as well.  Some wanted a joystick
instead.

We also tried using the EPICS knob manager to poke values into a motor
record.  This did not work too well because the record got blasted with
lots of intermediate positions as the knobs were turned, and tried to
do backlash-corrected moves to many of those positions, since it had no
way of knowing if more would be coming.  Knobs work great for devices
that respond faster than a user can tell them to go, but, with motors,
latency really kills the feel.

What I'd really like to do is to support an infrared serial (or some
pulse code) link so we can program a TV/VCR remote-control to run
motors and other devices.  Channel numbers might map to motors, volume
might map to tweak-step size or motor speed, and forward/reverse would
make something move.  We'd want a display of some kind.  I've also been
thinking of getting one of those hand-held PC-based controllers with a
40-character by 4 line LCD screen and supporting manual controls via a
serial task under HiDEOS.  At the moment, we're in a holding pattern,
because there's no time to work on any of this right now.

Tim