Developments in MX since July 2002
MX has now reached version 1.0. This change in version number is meant to
reflect the substantial performance improvements achieved due to recent changes
to MX.
Performance improvement work
- Much work has been done to improve the performance of MX.
There is still more work to be done.
EPICS performance improvements
- EZCA was found to be a performance bottleneck. At 17-BM,
reading a scaler value was found to take an incredible
60 milliseconds.
- Eliminating EZCA reduced this time to 1.5 milliseconds,
a factor of 40 improvement.
- Replacing the m68k VME controller with a PPC controller
reduced the time further to 0.5 milliseconds for
another factor of 3 improvement.
- Step scans of EPICS controlled motors now are close to
an order of magnitude faster.
MX network performance improvements
- MX network communication now supports the use of
binary data formats.
- Available formats include raw binary, XDR,
and ASCII.
- The format used is negotiated at run time with the
default being the fastest useable format.
- Clients will first attempt to use raw binary format, falling
back to XDR if that cannot be used, and falling back
to ASCII if XDR cannot be used as well.
- Complicated MCA step scans are now twice as fast with the
new binary formats than they were with the old ASCII
format.
Other improvements
- MX RS-232 and socket communications have been revised
to make better use of buffered I/O operations.
High resolution timing
- A new high resolution timing facility for benchmarking
has been added.
- Makes use of platform dependent high resolution timers
such as Pentium RDTSC, PPC Timebase, etc. to provide
submicrosecond accuracy.
- Implemented for
- x86 Linux (Pentium or above)
- Microsoft Windows (Win32)
- MacOS X
- Sun Solaris
- SGI Irix
- Other Pentium or PPC based operating systems
when compiled with GCC.
MX network protocol improvements
- MX clients now attempt to automatically reconnect to MX servers
after a network connection has been lost. Automatic
reconnection can be disabled if needed.
- MX clients can be told not to attempt connections to particular
MX servers. This allows one to suppress error messages about
the server being down without removing the server's records
in the MX database.
XIA multichannel analyzer support
- MX has successfully acquired data using both the DXP-2X CAMAC
MCA and the DXP Saturn MCA.
- A switchover from XIA's Xerxes library to XIA's Handel library
is in progress.
- The new Handel library together with new firmware will allow
the MCA to compute region of interest integrals inside the
controller itself, rather than requiring MX to read the
spectrum and compute the integral itself.
(This is also in progress.)
CCD camera support
- MX now supports remote control of MarCCD detectors.
- This will allow the integration of the CCD controls into
beamline GUIs.
Motor improvements
- The MX motor record now supports control of servo loop gains and
other commands to reset various faults.
- Support has been added for new motor status functions that report
all the motor status bits and optionally the motor position
in just one network call.
- Many motor and pseudomotor drivers have been modified to be
quick scan capable.
Quick scan improvements
- MX now can quick scan any of the motors controlled by a given
PMAC using only one multichannel encoder (MCE) record.
The feature requires using a slaved PMAC axis to generate
step and direction signals for the MCE.
Datafile and plotting improvements
- MX datafile and plot support has been enhanced to allow the
selection of optional features via special commands.
These commands include:
- x=motor1[,motor2[,motor3...]]]
Specifies one or more alternate X axis motors that
will be displayed or saved instead of the actual
scan motors.
- continuous_plot
For a multiregion scan, all the regions will be shown
on one plot.
- normalize_data
Specifies that the scalers and some analog inputs will
be displayed or written to the data file in
counts per second.
- xafs
Equivalent to specifying the options x=energy,
normalize_data and,
for plots, continuous_plot.
MODBUS
- MX now supports communication via MODBUS/TCP.
- MODBUS is a widely used industrial fieldbus, which gives access
to a wide variety of industrial I/O controllers.
- Initially supported using the Wago 750-841 and 750-842 fieldbus
controllers.
- Omega iSeries temperature controllers can use the serial RTU version
of MODBUS.
SERCAT contributions
- Jim Fait of SERCAT has done a substantial amount of work to develop
improved graphical user interfaces. These include:
- Sergui - This is a brand new WxPython-based protein
crystallography GUI developed for the SERCAT beamlines.
It uses a BluIce-like tabbed-notebook style GUI which
follows the current recommendations of the protein
crystallography user interface working group at APS.
Several other CATs at the APS have expressed interest
in using this GUI.
- Mxplot - This is a BLT-based GUI for scan progress
displays that is intended as a replacement for the
use of Gnuplot. It is anticipated that Mxplot itself
will be replaced by a Python-based version in the
near future.
Miscellaneous
- MX now uses the value hc = 12398.4186 eV-angstroms for
conversions between energy and wavelength as specified by
the NIST web site.