spec

Software for Diffraction

changes

highlights of modifications for spec release 5.07

March 4, 2008 - RELEASE 5.07.04-9

Fix For Crashes With Unresponsive Motor Controller

A bug, where spec would crash when a motor hit a limit or a move was aborted with ^C with some models of motor controller, but only when multiple controllers were configured but not all units were present, has been fixed. The problem was first noted with socket-based Galil motor controllers.

February 17, 2008 - RELEASE 5.07.04-8

New motor_par()/counter_par() Option

A new "added?" option for the motor_par() and counter_par() functions will return a value of 1 if the parameter passed as the third argument has been added as an optional parameter. Both built-in optional parameters, such as "home_slew_rate" and non-built-in parameters, added with the "add" option or configured on the new parameter screen of the configuration editor, are recognized. The "added?" option is the first argument after the mnemonic.

Update For the Delta-Tau PMAC/PMAC2 Controller

It is now possible to configure many of the I variables for the Delta-Tau PMAC/PMAC2 controllers as non-built-in optional parameters using spec's configuration editor. These values will be programmed in the controller during hardware initialization. For parameters named in the range "I00" to "I99", the motor channel number will be inserted between the "I" and variable number. For parameters in the range "I7mn0" to "I7mn9", the m will be replaced with the channel number divided by 4, and the n will be replaced with the channel number modulus 4 plus 1 (that is, values in the range 1 to 4). For parameters that are named with an I followed by a number greater than or equal to 100, no substitutions are made with respect to the I variable name. In addition, I variables associated with the non-built-in optional parameter screen of the controller entry will be sent to the controller with no substitutions made to the parameter name.

Fix For Newport XPS Motor Controller

A bug in the code to support the Newport XPS motor controller, which prevented having more than two motor groups and having more than two motors in a motor group, has been fixed.

February 15, 2008 - RELEASE 5.07.04-7

Micos Controller Fix

A minor update to the recent rewrite of the Micos support addresses a problem in passing very small values to the "setclwindow" command.

Update For Newport ESP-300 Motor Controller

spec no longer considers an axis reported by the Newport ESP-300 motor controller with ID type "unknown" as unusable.

February 4, 2008 - RELEASE 5.07.04-6

Fix For Detel S21DC Counter/Timer

A bug in the recently added support for the Detel S21DC counter/timer from GE Inspection Technologies, where counting to fractions of a second was broken, has been fixed.

Fix For Compumotor ViX Motor Controller

A bug in the recently added support for the Compumotor ViX motor controller, where setting the dial position (to zero - the only possible setting) would generate a spurious time-out error message, has been fixed.

February 2, 2008 - RELEASE 5.07.04-5

Updates For Micos Motor Controllers

A number of problems with the spec support for the Micos Pegasus, Pollux and Pollux2 motor controllers have been addressed. Setting of the optional "dc_settle_time" and "dc_dead_band" parameters (via the Micos "setcltime" and "setclwindow" commands) has been fixed. A new non-builtin parameter "home_distance" is recognized and will be used as the argument to the "nrefmove" command, if set. Otherwise, the default value of +/-100 is used. A number of other issues have been addressed, mostly concerned with syntax differences in the Venus-2 language among different models.

Fix For Configuration Editor New Parameter Screen

A problem where non-integers could only be entered in string mode in the value field of the new parameter screen on the edconf configuration editor has been fixed.

January 30, 2008 - RELEASE 5.07.04-4

Fix For Screen Plot Inconsistency When Plotting Multiple Counters

Previously, if more than one counter was chosen to be plotted via the plotselect macro, the last counter specified was used to calculate the derived values displayed on the screen plots (full width at half max, maximum value, center of mass), while the macros which refer to corresponding values, such as pl_CFWHM (also known as CEN), pl_COM, pl_MAX, etc., would use the first counter, leading to confusion. The plotting macros have been revised so that the first counter specified with plotselect is used to calculate the values displayed at the top of the screen plots.

Merged counters and plotselect Macros

The functionality of the counters and plotselect macros has been combined, so that when invoked without arguments, both ask for which counters to plot and which counters to assign to the DET and MON global variables. Note, though, when invoked with arguments the behavior of the two macros is unchanged in order to preserve backward compatibility. As a reminder, the counter assigned to DET will be the last column in the data file during scans. The MON counter will appear as the #M data file entry, and will be the second to last column in the scan data file. Also, the MON counter is used to calculate the value for the MON_RATE global variable.

Fixed Issues With tty_fmt()

Long standing (but unreported) formatting issues with the tty_fmt() command, such as it breaking lines prematurely under certain combinations of text and space characters, have been addressed.

New Server Mode For Alternate Motor-Limit Behavior

The standard behavior of spec when a motor hits a limit is to stop all currently moving motors, clear the input buffers and reset to the high level prompt. In the original server mode, however, when a motor hits a limit, the server does not stop other motors and reset to the top input level. A new server mode is now available that behaves as normal non-server mode with respect to motor limits. This new server mode (called a "mode-2 server") is activated by starting spec with a -S2 flag rather than the original -S flag. Note, a -S1 flag will also now be recognized and is equivalent to a plain -S.

Macro Motor "get_status" Update

Additional bits are interpreted in the macro motor "get_status" return value. Returning a value with bit 0x10 set indicates an emergency-stop situation and bit 0x20 set indicates a motor fault, which are both currently treated in a similar manner to hitting a limit, with all motors stopped and control returned to the top level prompt. See the mac_hdw help file.

New Support For FZD Sergen Motor Controller

Support for a new motor controller developed at the Foschungzentrum Dresden Rossendorf is included in this spec release. The name of the controller is Sergen, and communication is over a serial interface.

Fixes For fivec and sixc Geometry Calculations

A very old sign error in the calculation of the AZIMUTH variable from motor positions (via the calcHKL macro) in the fivec and sixc geometries has been fixed. Note, the error only affected the value displayed on the screen or printed to the data file. The value used to calculate motor positions (via the calcA macro) wasn't affected. Also, the sign of the CHI angle found via the calcA macro at a particular singular point in the PHI-fixed mode was also sometimes incorrect, and that has been fixed.

Renaming From ESRF To TACO

The built-in functions esrf_io(), esrf_db() and esrf_dc() are now available as taco_io(), taco_db() and taco_dc(), although the original names will remain supported. Also, the library named libESRF.a, included with the spec distribution, has been renamed libTACO.a.

Fix For ACS MCB-4B Motor Controller

A spurious error message with the text "Motor is stopped" that sometimes appeared when aborting a move on the ACS MCB-4B motor controllers has been eliminated.

November 8, 2007 - RELEASE 5.07.04-3

Timing Adjustment For Built-In PCI-GPIB Support

A small increase in the length of a delay during the I/O port programming for GPIB write operations seems to have fixed a time-out problem on at least one system that uses a PCI-GPIB rev 1 board.

November 4, 2007 - RELEASE 5.07.04-2

Update For Compumotor SX Encoder Option

The support for the Compumotor SX motor controller has been updated to work properly with a relative encoder. When configured for an encoder (CMSX_E in the config file), moves will be relative rather than absolute, position read back will be from the encoder and the set_dial command will set both the encoder and the commanded position.

November 1, 2007 - RELEASE 5.07.04-1

New Parameter Screen For Configuration Editor

A new configuration screen is available in the edconf hardware configuration editor to add values for motor and counter parameters and device controller parameters that aren't built into spec or aren't included as standard optional parameters. The new p command displays the additional parameter screen. Usage is available from that screen with the ? and H commands. The ability to edit additional optional parameters will be useful with macro hardware and with future built-in support for non-standard configuration parameters.

New output Property For spec Server

A new output property is available in the spec server. A client can register to have string events sent that mirror output sent to specific files or to the screen. This property is not useful for spec clients, but may be of interest to third party client programs that communicate with a spec server. See the server help file for details.

Redundant Server Motor Position Events Eliminated

The spec server will now only send motor position events to clients when the value of the position changes. Previously, position events were sent more frequently.

settings File Now Updated After sync

After executing the sync command from user level, spec will update the motor settings file whether or not any values have changed. The motivation is to insure positions of calculational pseudomotors will be updated before a subsequent invocation of the edconf hardware configuration editor, as is the sequence in the standard config macro.

Fix For Short Integer Array Assignment

A compiler bug on a number of Linux platforms, where assignments of values greater than 32768 to data array elements of type short were improperly truncated rather than converted to negative values, has been addressed.

Updates To Trinamic Support

The support for the Trinamic QUADpack and SIXpack motor controllers has been updated. spec now supports configuration of most of the controller's parameters, making most home search operations possible. See the new trinamic help file for details.

Update To Accommodate OMS Position Maintenance

Although spec doesn't currently include commands to program an OMS motor controller for position maintenance, it is possible for users to activate the mode via the motor_par() command pass-through feature. To accommodate such users, spec will now program OMS moves (on controllers that support it) with the IP (interrupt when in position) command rather than the ID (interrupt when done) command for axes configured with encoders. When not using encoders, the IP command behaves the same as ID.

Update For TACO ESRF General CCD Device Server

spec's built-in support for the the TACO general CCD device server has been updated to work with three-bytes-per-pixel cameras. Previously, spec would crash if used with such a camera.

October 16, 2007 - RELEASE 5.07.03-5

Micos Update For Encoder

When a Micos motor controller channel is configured to use an encoder, spec will now check bit 0x20 of the status (position out of target window) in addition to the busy bit (0x01) for move completion. In addition, the "dc_dead_band" parameter will now set the Micos setclwindow value and the "dc_settle_time" parameter will now set the Micos setcltime value.

Fix For Mclennan Segmentation Fault

A bug, where spec could crash if configured for a Mclennan motor controller on a serial interface that couldn't be opened, has been fixed.

September 21, 2007 - RELEASE 5.07.03-4

Support For XIA DXP USB Interface

This spec release supports the USB interface on the XIA Saturn DXP device.

Hangup Signals (After the First) Masked On Exit

In release 5.02.03-5, the spec code was modified to catch the SIGHUP (hang-up) signal generated, for example, by window managers when the terminal window containing the spec process was closed. On receipt of the signal, spec saves its state to the state files and exits. In some environments multiple hang-up signals arrive, which could end up corrupting the state file. In this release, subsequent hang-up signals are blocked.

Better Time-Out Recovery For Built-In GPIB-ENET

Due to reports that the recently introduced built-in support for the National Instruments GPIB-ENET had problems with subsequent communications after a timeout while attempting to communicate at an address not present on the bus, this spec release now issues an interface-clear (IFC) message after timeouts, which clears the problem. Note, this IFC-after-timeout feature has only been added to the built-in GPIB-ENET support.

New GPIB Feature For Detecting Listeners

For selected GPIB controllers (currently NI GPIB-ENET and PCI-GPIB), writing a null string to a GPIB device with gpib_put(addr, ""), will now return 1 if a listener is present at address addr or zero if no listener is present. A -1 is returned if the feature is not available with the configured GPIB controller.

Fix For Phytron Segmentation Faults

A bug, where spec could crash if configured for a Phytron controller but no controller was present, has been fixed.

Improved Error Recovery For Mclennan Multiplexed Controllers

The support for the Mclennan PM381 and PM608 multiplexed motor controllers has been updated to avoid certain communication errors and to better recover from those that do occur.

August 29, 2007 - RELEASE 5.07.03-3

New Argument For Macro Hardware Functions

When more than one instance of a macro-hardware counter or motor controller was configured, calls to the macro function that apply to all channels would be made for each such unit with the mnemonic argument set to the string "..". However, all such calls looked identical. spec now includes the controller unit number as the last argument in such calls. See the mac_hdw help file for details.

Fix For Phytron Motor Controllers Over Ethernet-Serial Connection

A problem that prevented Phytron motor controllers to be accessed via Ethernet-to-serial devices has been fixed.

Bug Fixes For Built-In PCI-GPIB Support

A bug in the new built-in support for the National Instruments PCI-GPIB cards, where the end-of-string character for EOS-mode reads was not always programmed correctly, has been fixed. Another bug, where the gpib_put() function didn't return the number of bytes written, has also been fixed.

Another Fix For Built-In GPIB-ENET Support

A bug in the recently added built-in support for the National Instruments GPIB-ENET module, where reading a message longer than 255 bytes could produce a segmentation fault, has been fixed.

July 26, 2007 - RELEASE 5.07.03-2

Fix For Built-In GPIB-ENET Support

A bug in the recently added built-in support for the National Instruments GPIB-ENET module, where reads having a byte count with bits 7 or 15 set (128 or 32768) could produce errors or segmentation faults, has been fixed.

Preliminary Support For AllMotion EZStepper Motor Controllers

This spec release contains initial support for the AllMotion, Inc. EZStepper motor controllers. Steppers and steppers with encoders are supported over a serial interface.

July 20, 2007 - RELEASE 5.07.03-1

Assignment Allowed To Built-In Associative Arrays

In the associative-array assignment feature introduced in spec release 4.05.09 that allowed usage such A0 = A, where both A0 and A are associative arrays, assignment to the built-in associative arrays such as A[], S[] and UB[] was forbidden. Now such assignment is possible. Only elements that match existing elements of the built-in array can be assigned, and only number values are allowed. Elements of the right-hand side array that don't exist in the built-in array or are string valued are silently ignored.

Fix For chg_offset() For EPICS and spec Server Motors

A problem in changing the user offset for calculational pseudomotors (see the mac_hdw help file) where the associated real motors were EPICS motors or spec server motors has been fixed. Previously the chg_offset() call (as used by the set macro) did not send commands to the EPICS data base or the spec server to indicate the user-offset change to the real motors when the chg_offset() was invoked for the calculational pseudomotor.

Fix For Detecting spec Server Connections From Self

The code added in spec release 5.07.02-4 to detect a spec server connecting to itself as a client (which is not allowed) produced false positives under some conditions when the server and client were on the same host. That problem should be fixed in this release.

Debouncing Filters for NI 6601/6602

This spec release implements support for the digital debouncing filters available on the National Instruments PCI 6601/6602 counter/timer cards. See the ni660x help file for details.

Update For Tsuji Counter/Timers

The support for the Tsuji counter/timers has been extended to include model NCT08-01 in addition to model CT16-01B. In addition, a bug which reported incorrect elapsed time for intervals over 2,147 seconds has been fixed.

Update For GE Fanuc VME Driver Support

The support for the Linux kernel drivers for the GE Fanuc (formerly SBS, formerly Bit-3) PCI-to-VME model 61x/62x controllers (and compatible models) has been updated to work with the version 3 drivers. Note, spec still includes driverless support (no kernel drivers are installed) for these controllers.

June 30, 2007 - RELEASE 5.07.02-10

EPICS Monitors Available

Process variable monitors for user-level epics_get() calls are now available using the new epics_par() "monitor_set", "monitor_check" and "monitor_clear" options. Monitors eliminate unnecessary network traffic for process variables that are checked often but change seldom. See the epics help file for details.

EPICS Put Callbacks Implemented

A new wait-time option for the user-level epics_put() function allows spec to wait until the specified channel-access put has been processed. The optional third argument to epics_put() specifies the maximum wait time. See the epics help file for details.

EPICS 3.14 Signal Handling Improved

Previously, due to the threaded implementation used with EPICS 3.14, signal handling in spec, particularly that associated with a ^C interrupt from the keyboard, could easily cause spec to hang in the EPICS library code. spec now blocks signals during key calls to the EPICS channel access library, which should prevent most, if not all, such problems.

June 7, 2007 - RELEASE 5.07.02-9

New "disable_limit_checks" Optional Motor Parameter

A new "disable_limit_checks" optional motor parameter is available. Its value can be set on the second optional motor parameter screen of the configuration editor or with the motor_par() function. A nonzero value disables software limit checks for the designated motor.

New CCDS Built-In Global Variable

A new read-only CCDS built-in global variable is available. Its value is the number of CCD-type devices in the config file, similar to the existing MCAS, MOTORS and COUNTERS global variables.

Increase In Number of GPIB Controllers

Up to eight GPIB controllers can now be configured. The previous limit was four.

Limit Values Limited

The edconf configuration editor tests for corruption of the settings file by checking that none of the dial limits or user offset values are greater than 1e40 in absolute value. Previously, if a user explicitly set the motor limits or offset to values outside that range, the next time the configuration editor was invoked, it would discard the settings file. Now, both spec and the configuration editor silently limit the values of the limits and the user/dial offset to a magnitude of 1e20.

Macro Hardware Value Precision Fixed

Previously, numbers returned by macro-hardware macro functions for commands such as "position" and "counts" were rounded to six significant digits. The precision is now kept to fifteen significant digits.

Fix For Newport NSC200/PZC200 Motor Controllers

A bug that would misassign unit/crate/channel numbers for Newport NSC200/PZC200 motor controllers if the motors weren't numbered consecutively in the config file has been fixed.

Preliminary Support For Detel S21DC Counter/Timer

This spec release includes preliminary support for a counter/timer from GE Inspection Technologies, model Detel S21DC, for use over a serial interface.

May 4, 2007 - RELEASE 5.07.02-8

Fix For Macro Hardware Config Bug In Recent Release

A new feature introduced in release 5.07.02-6 associated with the edconf hardware configuration editor had the unintended consequence of changing the order in which parameters associated with macro-motor and macro-counter controllers were saved. The order has been restored in this release.

April 27, 2007 - RELEASE 5.07.02-7

Non-backwards Compatible Update For Trinamic Motor Controllers

The units of the optional generic motor parameter misc_par_1, have been changed from mA to percent of maximum for the Trinamic motor controller peak current setting. Percent of peak current is a more logical choice for the parameter, as both the old QUADpack and the new SIXpack-2 models have switch-selectable peak-current settings which can't be read by software, so the actual mA value was a best guess by spec in any case.

Fix For CANnes Bug In Last Release

A bug introduced in release 5.07.02-6, where the CANnes PCI card CAN baud rate wasn't set from the value in the config file, has been fixed.

April 23, 2007 - RELEASE 5.07.02-6

Built-In Support for National Instruments PCI-GPIB Modules

This spec release contains a preliminary version of built-in support for both the rev 01 and rev 02 National Instruments PCI-GPIB cards. The rev 01 support introduced in release 5.07.02-1 has been replaced with the new support that works with both revisions. With the built-in support, there is no need to install kernel drivers for GPIB. See the nigpib help file for details.

New Configuration Option For PCI Cards

Most PCI cards do not have switches to select an address. Previously, for such cards, if more than one of the same type was configured, spec assigned the cards unit numbers in the order the cards were discovered. It is now possible to configure bus:slot numbers in the ADDR field of the configuration editor to distinguish among identical PCI cards. If the ADDR is set to zero, spec will behave as before. In this spec release, only the NI PCI-GPIB (built-in) and CANnes PCI cards support the bus:slot addressing. Subsequent spec releases will include support for the feature for other PCI cards.

Updated Support the XIA DXP Modules

Several updates have been made to the support for the XIA DXP modules (both the CAMAC and the parallel port models). The dead-time calculation returned by the mca_par() "dead" option has been modified based on information provided by a user who did a careful reading of the XIA documentation. The value returned is now

100 * [1 - (ocr * livetime) / (icr * realtime)]

where ocr is the output count rate and icr is the input count rate. The previous calculation was

100 * (1 - livetime / realtime)

In addition, mca_par() options "elapsed_real" and "elapsed_live" have been introduced as synonyms for the current "real" and "live", respectively.

Fixes For Trinamic Motor Controller

Problems identifying the Trinamic model (QUADpack vs. SIXpack vs. SIXpack-2) have been addressed. Also, support for spec's "lim+" and "lim-" chg_dial() homing options has been added.

April 5, 2007 - RELEASE 5.07.02-5

Fix For Newport XPS Controller

A bug in the code for the Newport XPS motor controller, where the list of configured positioners obtained from the controller was not parsed correctly, has been fixed.

April 1, 2007 - RELEASE 5.07.02-4

Built-In Support For National Instruments GPIB-ENET

This spec release includes experimental built-in support for the National Instruments GPIB-ENET Ethernet-to-GPIB modules. With the built-in support, it is not necessary to link spec with any NI modules or install any additional drivers. See the nigpib help file for more information.

Installable On 64-Bit Platforms

spec should now install cleanly on 64-bit platforms, assuming the 32-bit compatible library packages are installed. Note, though, spec remains a 32-bit application.

spec Client/Server Updates

Previously, if a spec client's initial connection to a spec server was by port number, then that server exited and a new server with a different spec name became available at the same port number, the client could refer to the new server by the old name. That behavior is no longer allowed. Note, if the initial connection is by name and not by port number, a server reconnecting with the same name at a different port will be considered the same server.

Also fixed, an attempt by a spec server to connect to itself as a client (which wouldn't work well, in any case) is detected and prevented with an error message displayed.

New Sync Option For Certain Motor Controllers

A new option is available to deal with limits when there is a position discrepancy on the few models of motor controllers that only allow the position registers to be set to zero and don't retain the current position if the power is cycled. If the controller position register is zero (likely due to a power reset) and the spec software dial position is nonzero, if the user chooses the option to adjust the user offset (to maintain the user position), there is a new option available to offset the dial limits by the same amount. spec suggests not offsetting the limits, but rather after adjusting the user offset, move the motor to zero and reset the dial position to zero (or do a home search). Such a procedure will restore the dial positions to what they were before the motor controller was reset.

Multiple CANnes PCI Cards Should Now Work

Support for the CANnes PCI cards has been fixed to allow more than one card to be used at a time.

Updates For Trinamic SIXpack-2

The support for the Trinamic QUADpack and SIXpack motor controllers has been updated to accommodate the newer SIXpack-2 model. The 0x45 command (to set power-down mode) is no longer used. (The command isn't supported by the SIXpack-2 and can possibly cause problems with the EEPROM data integrity on the older models.)

Fix For gmci, w21v, id10b, gonio and pi1go Geometries

Code that incorrectly restricted reciprocal space access in the gmci, w21v, id10b, gonio and pi1go geometries with the message "Q > 2k" has been fixed. A factor-of-two error resulted in Q magnitudes greater than k, rather than greater than 2k being rejected.

Bug Fix For ESRF TACO MAR Image Plate Scanner

An old bug in the support for the ESRF TACO MAR image plate scanner where spec would crash unless a particular preventive image_par() command was issued has been fixed.

Fix For ESRF TACO MAXE Motor Device Server

The acceleration calculation in spec for the ESRF TACO MAXE device server has been updated so that the higher slew rates used with motor controllers newly supported by the MAXE no longer result in an integer overflow.

March 16, 2007 - RELEASE 5.07.02-3

Increase In Maximum Number Of Serial Devices

The maximum number of serial devices that can be associated with spec's built-in hardware support has been increased from twenty to forty.

Fix For Software Timer On spec Server

A problem when using the software timer in interrupt mode on a spec server where macro-hardware counters are also configured, where the server command thread would hang at the end of a count period, has been fixed.

Fix For Recent Multiport II Support

Problems in the Canberra Multiport II MCA support introduced in release 5.07.01-11 and associated with setting the number of points (and possibly other parameters) on modules with more than one MCA device have been fixed.

Fix For ESRF TACO/TANGO Camera Device Server

Problems in using a new TANGO device server with the image_par() commands "file_dir", "file_prefix", "file_suffix", "file_inum" and "overwrite", associated with the ESRF general-CCD and image-plate support in spec, have been fixed.

Fix For XIA Huber Slit Controllers (HSC)

spec support for the XIA HSC motor controllers has been updated to accommodate the changed serial number format used in the device's more recent firmware releases.

March 6, 2007 - RELEASE 5.07.02-2

Multiple GPIB Controller Syntax Update

When using multiple GPIB controllers with the generic GPIB functions gpib_put(), gpib_get(), etc., a new addressing option unit.address is available in addition to the existing "unit:address" syntax. See the gpib help file for details.

Multiple GPIB Controller Improved Presence Tracking

spec now keeps better track of the presence of individual GPIB controllers of the same type. Previously, a segmentation fault was possible if a configured controller of a particular type was accessed but not installed, while another of the same type was configured and usable.

New Option To Set Data Bits For Generic Serial Devices

A new ser_par() option "data_bits" can be used to set the number of data bits for generic serial devices. Although the default values set by spec work for almost all serial devices, specific values can be set, if necessary, with this new option. See the serial help file for details.

Preventive Fix For ESRF/TACO Error Message Display

The code that prints error messages from the ESRF TACO device servers has been updated to avoid segmentation faults possible when unexpectedly long error messages are returned by the TACO devices.

Old Motor Position Rounding Bug Fixed

An old bug, where a very particular combination of motor step size, position and user offset could lead to a motor being moved by single steps while other motors are commanded to move, has been fixed.

Recently Introduced Bug With MCA "auto_run" Fixed

A bug introduced in release 5.07.1-11 and associated with the new support for the Canberra Multiport II MCA, but affecting the behavior when using mca_par() to set "auto_run" mode for any MCA, has been fixed.

February 4, 2007 - RELEASE 5.07.02-1

Built-In Support For Additional Older NI GPIB cards

This release of spec contains the option to use built-in support for the National Instruments PCI-GPIB (rev 01) and AT-GPIB (ISA) controllers. With the built-in support, there is no need to install kernel drivers from National Instruments or the open source drivers from Source Forge. See the nigpib help file for details.

January 29, 2007 - RELEASE 5.07.01-11

Support For the Canberra Multiport II MCA

Support for the Canberra Multiport II MCA over both Ethernet and USB interfaces is included is this spec release. See the MPII help file for details.

January 11, 2007 - RELEASE 5.07.01-10

Support Compumotor AX/OEM750 Updated

The support for the Compumotor AX and OEM750 motor controllers has been updated to use separate configuration entries (CMAX and CM750 controller types) so that spec can handle the small differences between the controllers correctly. Choosing the OEM750 controller type will allow spec to properly set the motor speed.

November 28, 2006 - RELEASE 5.07.01-9

Support For Newport PZC200 Motor Controllers

Preliminary support for Newport's PZC200 motor controller is included in this spec release.

Encoder Support For Galil Controllers

Encoder support is now available for Galil motor controllers. Choose controller type GALIL_E on the motor screen of the configuration editor, and set the optional encoder steps-per-degree parameter if the encoder step size differs from the commanded-position step size.

Further Fixes For Hecus ASA-32 MCA

Problems reading back data from the Hecus ASA-32 MCA ISA cards on fast computers are addressed in this spec release by performing a series of heuristic tests on the data and retrying the read if any of the tests fail. Due to limitations within the board's firmware, there is no fail-safe way to ensure the data has been read back correctly.

Update For IMS MDrive Plus Controllers

The support for the IMS MDrive motor controllers has been updated to be compatible with the newer firmware on the MDrive Plus models.

November 24, 2006 - RELEASE 5.07.01-8

Fix For Trinamic Motor Controller Serial Interface

A problem using the serial interface on the Trinamic motor controllers has been fixed.

Additional Fix For start_all Macro Motor Calls

A problem with the update in spec release 5.07.01-4 that eliminated unnecessary "start_all" calls of the macro motor _cmd() function had an unwanted side effect of preventing the calls when the "read_mode" optional motor parameter was set to include the PREMOVE flag. That problem has been fixed.

November 7, 2006 - RELEASE 5.07.01-7

Fix For Hecus ASA-32 MCA

Problems using the Hecus ASA-32 ISA card MCA on faster computers have been addressed with this spec release by slowing down the I/O port access.

motor_par() Bug Fix

A bug, where an out-of-range motor number used as the first argument to motor_par() could cause a crash with the new "add" option, has been fixed.

November 3, 2006 - RELEASE 5.07.01-6

Preliminary Support For IMS MicroLYNX Motor Controllers

This spec release includes preliminary support for the IMS MicroLYNX motors controllers over a serial interface.

Home Search Improvement

For motor controllers with home-search support where the direction of the home search can be specified, if the "home" option (rather than "home+" or "home-") to chg_dial() is used, spec chooses the direction of the home search based on the current dial position. Previously, spec chose the search direction to be towards zero. With this release, the the search direction is chosen to be towards the home position given as the optional third argument to chg_dial() or if that is unset, the "home_position" optional parameter from the config file. If neither is set, then the search is towards zero, as before.

November 1, 2006 - RELEASE 5.07.01-5

Server Events Added For motor_par("disable")

The spec server will now send events to clients when the "disable" argument to motor_par() is used on the server to change the enabled/disabled state of the associated motor. The spec client will keep track of the enabled/disabled state from both local commands and remote events, and the motor must be enabled with both in order to be moved. The return value of motor_par() with the "disable" argument will have bit two set if the motor has been disabled by a remote event.

Home Search Update Delta-Tau Controllers

Home searches are now implemented for the Delta-Tau PMAC motor controller.

New user_filecheck() Hook In newfile

The standard newfile macro contains a new macro hook user_filecheck() which can be used to test or modify the file name to be used as the data file. See the macros/file.mac file in the spec distribution for an example.

Debugging Crash Fixed

A bug, where spec might crash when the debug level was set to 0x40000 (print input context on execution-time errors), has been fixed.

XIA-HSC Bug Fix

A bug introduced in spec release 5.06.02-8, where a reconfig could cause spec to crash if a serial node associated with XIA HSC-1 Huber slit controllers couldn't be opened, has been fixed.

October 22, 2006 - RELEASE 5.07.01-4

Improvement For Macro-Hardware Motors

A problem associated with configurations with multiple macro-hardware motor controllers, where all the prefix_cmd() functions were called with the "prestart_all" and "start_all" commands when any of the macro-hardware motors were moved, even if no motors associated with a particular prefix were being moved, has been fixed.

October 13, 2006 - RELEASE 5.07.01-3

Fix For Recently Broken chg_dials() With Macro Motors

A programming error in spec release 5.06.05-9 that made it impossible to change dial positions for macro motors has been fixed.

EPICS Install Updated

The path for the directory containing the EPICS libraries (the epics_home parameter in the install_data file) can now either be the directory containing the subdirectory named base (as before), or the base directory containing the subdirectory named lib.

October 4, 2006 - RELEASE 5.07.01-2

New Check For Calculational Pseudomotor Limits

spec now checks whether moves of real motors will send any associated calculational pseudomotors outside of the configured limits. Calculational pseudomotors motors are either associated with geometry code (such as the pseudomotors associated with kappa geometries) or implemented via the macro hardware feature (see the mac_hdw help file). In previous releases, limits for calculational pseudomotors were ignored.

Update For x11filt

The x11filt process uses the X library XListFonts() call to obtain a list of possible fonts matching a pattern, using either the default built-in pattern or one obtained from the Font property, as explained in the x11 help file. Previously, the returned list was limited to 512 items. That limit has been raised to 8192 to accommodate the increased number of possible fonts on a modern X installation. Also, a new font debugging property, FontDebug, is available for the x11filt program. See the x11 help file for details.

Fix For Old Mac Science (Now Bruker) MXC Controllers

Code added for support of a new model of the Mac Science (now Bruker) MXC controller in spec release 5.02.04-1 generates an error with prior models that don't support an added MXC command PM (which sets speed and acceleration). spec now silently checks whether the command is available and and will stop sending it if the device doesn't support it.

Preliminary Support For Compumotor ViX Motor Controller

This spec release contains preliminary support for the Parker Compumotor ViX motor controllers over a serial interface.

September 20, 2006 - RELEASE 5.07.01-1

New Invocation Option To Specify Start-Up Command Files

A new -C file start-up option is available to specify command files to be read after all the standard start-up commands files, but before the optional spec.mac file in the current directory. Up to 32 such files may be specified on the command line. See the spec help file for details.

Fixed Timeout Behavior For data_pipe()

The "timeout" parameter added to the data_pipe() function in release 5.06.04-1 was not implemented correctly. This release fixes that problem. By default, the data_pipe() processes block as long as necessary. With this release, setting the "timeout" parameter will prevent the process from taking any longer than the timeout value. Also, if the process exits on its own (perhaps due to a crash), spec will print a message indicating that is what happened. The default timeout of zero will maintain the traditional blocking behavior. See the data_pipe help file for details.

One More Fix For Updated motor_par()

A remaining bug, where some of the standard optional motors parameters could not have values set if the parameters weren't configured in the config file, associated with the new motor_par() features added in release 5.06.04-1 and mostly fixed in release 5.06.04-9, is completely fixed in this release.

Update For Compumotor 6K Motor Controller

The support for the Compumotor 6K motor controllers has been made a bit more robust by flushing out the read buffers before new commands are sent.