spec

Software for Diffraction

changes

highlights of modifications for spec release 5.10

August 7, 2012 - RELEASE 5.10.02-17

Blank Lines Allowed Again In config File

Recent updates inadvertently led to blank lines in the config file generating error messages in spec. That issue has been fixed.

Fix For Off-by-one Motor Number Display In Certain Messages

An issue with the support for the EPICS motor record and the Newport Agilis controller, where several motor-related messages (including hard-limit reports) gave a channel number off by one, has been fixed.

Fix For Recently Introduced Crash When Using ISA Am9513 Card

Changes in the Am9513 support in the previous spec release introduced a bug that could cause spec to crash when using other than PCI models. That bug is fixed.

June 27, 2012 - RELEASE 5.10.02-16

Large File Support On 32-Bit Platforms

The 32-bit architecture versions of spec are now compiled with large file support. It should now be possible to use the spec built-in output functions to add data to files larger than 2.15 gigabytes.

Fix For Attocube ANC350 Support

A bug that was part of the original spec ANC350 support, where actuators with particular values for the the step-width parameter would be marked unusable, has been fixed.

Additional Fixes For Am9513 Use With Multiple PCI Cards

The support for multiple PCI Am9513 cards has been fixed. It is unclear whether a configuration with multiple PCI Am9513 had ever been working. Such a configuration does work in the current release. In addition, the ADDR field of the configuration editor can be used to set the PCI bus and slot IDs to distinguish among multiple cards.

June 18, 2012 - RELEASE 5.10.02-15

Fix For Am9513 With Multiple PCI Cards

A recently introduced bug, where spec would hang if using more than one Am9513 PCI card, has been fixed.

Fix For Inserting Motors In Configuration Editor

A bug associated with inserting a new motor channel on the Motor screen of the configuration editor has been fixed. Previously, any existing non-standard optional parameters would be copied from the neighboring motor channel to the inserted motor and changing the value of one of those parameters for either of the motors would change the value for both motors.

Fix For spec Standard Output With libedit

A "feature" added to the upstream libedit source in early 2011 disabled command-line editing if the linking program's standard output was not a tty device. For users who piped spec's output through a program such as the tee utility to make a copy of spec's standard output to a file, the spec prompt would not be seen and command line editing would be disabled. The libedit version now distributed with spec disables that feature of the standard libedit distribution, restoring the previous behavior. As usual, the version of libedit used with spec can be downloaded at certif.com/downloads/extras. Note, to make a log of spec's tty output, CSS recommends using a tlog file rather than the tee utility.

May 29, 2012 - RELEASE 5.10.02-14

Fix For wait() With Some MCA Models

An issue when using the wait() function to determine when counting had finished with certain MCA devices active with "auto_run" mode on and "soft_preset" mode off has been fixed. The problem was due to spec considering the MCA done after sending the halt command, but prior to the device acknowledging it had stopped. The EPICS MCA was particularly affected. The code for the SEIKO EG&G MCA 7700, the Bruker Vantec-1 and the Ortec PCI MCS had the same defect, but the consequences were unlikely to be noticed.

Fix For Number of Channel Configuration For Some Controllers

A recently introduced issue with channel configuration for certain controllers where channels are numbered starting from one in the configuration file has been fixed. The last channel configured would generate a "not enough channels on unit" message unless the number of channels on the Devices screen of the configuration editor was increased by one. Affected controllers were the Attocube ANC300, EPICS motor record, JVL SMI20B, Munich BR-tronik IPS, Newport Agilis, PI E-712 and Sigmatech FC-501A.

May 19, 2012 - RELEASE 5.10.02-13

Fix For GPIB-ENET Reads

A bug, introduced in the spec release 5.10.02-3 update to support the GPIB-ENET/1000 modules, where GPIB-ENET reads would fail if the read count had bit 7 or 15 set, has been fixed.

May 17, 2012 - RELEASE 5.10.02-12

Fix For Signal Handling When Using TANGO GPIB

A bug, where spec could crash when the new TANGO GPIB device server was configured and software signals associated ^C or the software timer were raised, has been fixed.

Fix For Channel Count For TACO VCT6

A recently introduced issue, where it became necessary to configure the number-of-channels parameter on the Devices screen of the configuration editor with one more channel than needed when using the TACO VCT6 device server, has been addressed.

May 12, 2012 - RELEASE 5.10.02-11

New "timestamp" Option For epics_par()

A new "timestamp" option is available with the epics_par() function to return the EPICS timestamp associated with a process variable. See the epics help file for details.

Fix For Using Named Pipes As Output Devices

A problem with spec hanging when opening a named pipe when no process had the named pipe open for reading has been fixed.

New "bl18b" surf Geometry

A new liquid surface diffractometer geometry for beamline BL18B at the Photon Factory is included in this spec release.

May 8, 2012 - RELEASE 5.10.02-10

Fix For EPICS Crash

On certain platforms, use of epics_put() with the optional third argument to have the code wait for a callback to indicate the value has been sent resulted in a segmentation fault. The crash might also appear when reading using the built-in EPICS serial device support. The problem has been fixed.

Update To Recognize New Model Tsuji Counter

This spec release will recognize the new Tsuji model CT08-01D counter/timer.

May 5, 2012 - RELEASE 5.10.02-9

Fix For Recently Introduced Bug With PCI Am9513

The configuration updates included in spec release 5.10.02-1 introduced a bug that could cause a segmentation fault when a PCI Am9513 was configured. This release fixes that problem.

TACO Serial Driver Support Reversions

The changes to the support for TACO serial driver introduced in spec release 5.10.02-3 to display additional error messages have been removed. However, an issue where HDW_ERR could be incorrectly set when reading a serial device has been fixed.

April 6, 2012 - RELEASE 5.10.02-8

Fix For Slow Reads Using Built-In NI PCI-GPIB Support

A timing issue with spec's built-in support for the National Instruments PCI-GPIB controller, where GPIB reads of large blocks of data (on the order of 10,000 bytes or more, depending on the transfer rate) could take much longer than necessary, has been fixed.

April 2, 2012 - RELEASE 5.10.02-7

More Controllers Allowed In Configuration

The maximum number of motor controller and timer/counter entries on the Devices screen of the configuration editor has been increased from 40 to 64. In addition, a bug where the configuration editor could crash if there were more than the allowed number of controllers in the config file has been fixed.

Fixed decode() Function

A bug, where the newly added decode() function did not allow assignment of its return value when the return value was an associative array, has been fixed.

Updates For Micos MMC-100

A problem where spec would consider a move complete too early with the newly added Micos MMC-100 support has been fixed. In addition, a new "initialize" motor_par() option is available to locate the limit and home position of a stage. See the mmc100 help file.

Update For New Struck SIS1100ecmc Model

The hardware signature of Struck's new SIS1100ecmc 2G link PCIe-to-VME adapter is now recognized by spec's driverless built-in support.

Fixed ANC300 Support

A bug in the newly added support for the Attocube ANC300, where spec could crash if a controller was configured but not connected, has been fixed.

OMS Motor Controller Updates

spec will now allow up to ten channels per controller for the OMS MAXnet controller in order to work with the new models. Also, a bug, where the "init_sequence" parsing did not recognize the BD command to configure digital I/O direction, has been fixed.

OMS Motor Multiplexing Fixed and Updated

The configuration updates in spec release 5.10.02-1 broke the old motor multiplexing support in the OMS code. The code been brought up to date and is working again. In addition, the support now allows a multiplexed channel for each controller module. Previously, only one multiplexed channel was allowed among all the controllers. With multiplexing, one OMS channel can drive up to sixteen motors. spec uses five digital output lines on the OMS controller to control external hardware that switches the motor driver power lines among the multiplexed motors. See the new section on multiplexing in the oms help file for details.

March 14, 2012 - RELEASE 5.10.02-6

Fix For Serial Support On Linux

Some kernel-level serial device drivers on Linux did not work with the updated code in spec to set baud rates introduced in spec release 5.08.06-4. In particular, problems have been seen with drivers for Prolific PL2303 USB-to-serial adapters and for the Rayon Multiport PCI cards. This spec release should fix the issue.

March 11, 2012 - RELEASE 5.10.02-5

Support For Micos MMC-100 Motor Controller

This spec release includes preliminary support for the Micos MMC-100 Modular Motion Controller System. See the mmc100 help file for implementation details.

Updates For OMS Support

Values for the standard optional motor parameters "dc_integration_limit", "dc_veloc_feedforward" and "dc_accel_feedforward" will now set the KU, KV and KA OMS parameters, respectively. The non-standard optional motor parameter "pid_offset" will program the KO OMS parameter. A new "closed_loop" motor_par() non-standard optional parameter can disable/enable closed-loop mode during a session or from the config file. When using servo motors, the code will now query the encoder status during moves to detect moves interrupted by a slip if slip detection is enabled. For firmware versions greater than 1.30, spec now will send the new commands for a number of deprecated commands.

Fix For USB-4300 "get_bit" Command

An issue where the "get_bit" option to the counter_par() function for the Measurement Computing USB-4300 series timer/counters didn't return the correct value has been fixed.

Fix For Allowed GPIB Addresses

Previously, spec allowed GPIB device address 31 to be passed to the GPIB controller support code. The maximum valid address is 30, and spec now respects that.

Support For TANGO GPIB Server

spec supports release 1.0 of the TANGO GPIB device server. All of the existing GPIB support, including the user-level commands such as gpib_get() and gpib_put(), along with the built-in support for motor controllers, counter/timers and other devices that use GPIB should work if the "TANGO GPIB server" interface is selected in the hardware configuration editor.

New TANGO Options To Obtain Attribute Information

Additional options are available to the tango_get() function to display or return all available descriptive attribute properties. See the tango help file for details.

Fix For NI 6601/2 Unavailable Channel Access

A bug, where spec could crash if an unavailable National Instruments 6601 or 6602 counter channel was accessed with counter_par(), has been fixed.

January 5, 2012 - RELEASE 5.10.02-4

Fix For Linked Configurations

A issue when using linked config files that was introduced in spec release 5.10.01-9 where in some configurations spec would quit immediately after reading the hardware configuration with a message of the sort "user(): Not configured for motor ..." has been fixed.

December 28, 2011 - RELEASE 5.10.02-3

Support For NI GPIB-ENET/1000

spec will now work with the National Instruments GPIB-ENET/1000 using spec's built-in support. The programming for the GPIB-ENET/1000 is a bit different than that for the GPIB-ENET/100 and the GPIB-ENET models, which continue to be supported.

Restored Compatibility With NI Linux Drivers

spec can now be linked with release 2.9.0 of the National Instruments GPIB drivers on Linux, although use has not been well tested and isn't recommended. Use of spec's built-in GPIB support is preferred. See the nigpib help file for details.

Update For Newport SMC100 Controller

A too short serial timeout for the Newport SMC100 controller has been fixed.

Update For Newport NSC200 Controller

Checks on maximum values for the velocity and acceleration when using the Newport NSC200 motor controller have been removed, as the maximum values built into the software were too low for some actuator models. spec will now program the values requested. Users should make sure the configured values do not exceed the specifications for the particular actuator model.

Preliminary Support For the Attocube ANC300

This spec release contains preliminary support for the Attocube ANC300 controller. The current release is only for controllers with one active channel. Updated support will be provided when the ANC300 firmware is updated to accommodate easier programming of multi-channel configurations.

Update For Attocube ANC350 Support

spec now recognizes the "targetground" parameter for the Attocube ANC350 positioner.

Trinamic Check-For-Reset Feature Updated

The check-for-reset feature for Trinamic motor controllers, implemented in spec release 5.09.01-1, will now also restore motor position when restoring parameters.

TACO Serial Driver Update

Some error messages associated with the TACO serial device that had been suppressed are now shown.

Update For Miscellaneous State File Data

Some internal improvements have been made for the handling of certain miscellaneous data that is saved in the user state file. Such data includes spec_par() parameters and some persistent hardware parameters. In most cases, the data will now be properly restored if saved by one computer and read by another of different endianess, such as an Intel PC (little endian) and a Sun SPARC station (big endian).

New Option For show_state Command

The show_state command now includes a new +/-x option to show or not show miscellaneous values, which include the spec_par() parameters and some persistent hardware parameters. Only the values are displayed, not the parameter descriptions.

November 8, 2011 - RELEASE 5.10.02-2

Support For SmarAct Controller

spec now supports the SmarAct GmbH Modular Control System for micro- and nanopositioning. The support is for the serial interface. See the new smaract help file for details.

October 25, 2011 - RELEASE 5.10.02-1

New Option to Disable Controllers In Configuration Editor

A new option is available to disable the configuration of motor and counter controllers, interface controllers, serial devices, MCA-type devices and image-type devices from the edconf configuration editor without removing the configuration from the config file. The YES/NO column of the configuration for each of these items now has an additional OFF option, which can be selected by typing an O or an o. When "off", the configuration information will remain in the config file, but spec will treat the controller or device as disabled and not access it.

Macro Hardware MCA Update For Returned Count

The macro-hardware MCA implementation for the commands "read" and "write" now accepts a return value for the number of points actually read or written. The value will determine how many data elements will be transferred to the spec data array when mca_get() is called with an array argument and will be the return value for the mca_get() and mca_put() functions when called with group/element arguments. See the mac_hdw help file for additional details.

October 21, 2011 - RELEASE 5.10.01-14

Fix For Number Of Generic Serial Devices

The edconf hardware configuration editor allows 21 generic serial devices to be configured, but prior to this release, spec only allowed 20 to be opened.

October 18, 2011 - RELEASE 5.10.01-13

Fix For Tsuji Counter Update

A problem with the previous update for the Tsuji counter/timers that prevented proper operation of the devices on some platforms has been fixed.

October 9, 2011 - RELEASE 5.10.01-12

Fix For chg_dials() Crash Bug

An old bug, where spec could crash if chg_dials() was called to perform a limit search using an out-of-range motor number, has been fixed.

Updated Support For Tsuji Counters

The built-in support for the various models of the Tsuji counter/timers has been updated. A reset command is no longer sent on hardware initialization. Settings for certain internal parameters, such as maximum allowed preset and preset resolution, are now correctly assigned based on the capabilities of the specific model detected during the presence test.

Attocube ANC350 Support Now Includes Limit Searches

Limit searches using the "lim+" and "lim-" options to chg_dial() are now available for the Attocube ANC350 controller. See the attocube help file.

Support For Radicon SCSD-3C

This spec release includes support for the Radicon SCSD-3C X-ray scintillation detector with integrated timer/counter. See the radicon help file for details.

October 1, 2011 - RELEASE 5.10.01-11

Fix For USB Support On openSUSE 10.0 and 10.1

The USB devices supported by spec should now work with the old openSUSE 10.0 and 10.1 Linux releases.

Preliminary Support For Physik Instrumente E-516 Motor Controller

This spec release includes initial support for the Physik Instrumente E-512 controller over serial and GPIB interfaces. Contact CSS for implementation details.

September 26, 2011 - RELEASE 5.10.01-10

Fix Of Bug In Previous Release That Leads To an Early Exit

This minor update fixes a bug that was put into the previous release and that would cause spec to terminate during initial hardware configuration if there was a position discrepancy that was resolved in favor of the motor controller.

September 23, 2011 - RELEASE 5.10.01-9

Fix For eval() Return Of Associative Array

The stricter validation for assignment of associative arrays implemented in spec release 5.09.2-2 disabled the ability to return associative arrays from the eval() function, which also broke the behavior when using the remote_eval() function with a spec server. That problem has been fixed.

Improvements For "Commanded" Position, Reversion Of mvr Macros

Several instances where the value for the last-commanded position of a motor was incorrect have been fixed. (The last-commanded position is available with the new move_info() function and a new option to read_motors(), both introduced in spec release 5.10.01-1. The last-commanded position saves the requested target position to the fully specified resolution, while the usual motor position is rounded to the motor step size. Using the last-commanded position to calculate target positions in relative moves allows one to perform successive relative moves in increments less than the motor resolution.) The last-commanded position will now be set to the current motor position on a fresh start (with the -f flag), when leaving simulate mode, and after correcting a position discrepancy where the software position or user offset was adjusted to match the hardware. Although the updated mvr and umvr included in release 5.10.01-1 should work fine for most users most of the time, the previous definitions have been restored for the time being while CSS works to make sure the last-commanded position feature is as robust as possible. The definitions that use the last-commanded position are still available as mvr2 and umvr2.

September 15, 2011 - RELEASE 5.10.01-8

String Values Now Available For epics_get() Character Arrays

When reading arrays of DBF_CHAR with epics_get(), if the optional argument that specifies the desired type of the return value is specified as "string", spec will now return an ordinary string. Previously, the function would return a single-row string data array. See the epics help file.

September 10, 2011 - RELEASE 5.10.01-7

Fix For Canberra Lynx MCA Issues After ^C

A problem with the Canberra Lynx MCA, where socket communications could become disrupted if a transaction was interrupted by a a keyboard ^C, has been fixed.

Fix For State File Locking On Mac OS X

Normally, spec prevents the same user from starting multiple instances of the same spec version. A problem on Mac OS X, where the locking mechanism didn't always work correctly with more than ten terminal windows open, has been fixed.

Fix For GPIB Sharing With Built-in NI GPIB Support

A problem where the sharing feature for GPIB controllers wasn't working with the built-in support for some of the National Instruments GPIB models has been fixed.

September 4, 2011 - RELEASE 5.10.01-6

Prompt Now Indicates Simulate Mode

The spec prompt will now contain text to indicate when simulate mode is active, as in 123.FOURC_sim> .

Mu Pseudomotor Available For Six-Circle Geometry

The six-circle geometry, sixc, now recognizes a configuration where the mu rotation involves two real motors, muT and muR. See the sixc help file.

Fix For Recently Created Pseudomotor Issue

An oversight in spec release 5.10.01-3 that removed the ability to use motor_par() to retrieve arbitrarily configured unit and channel numbers for motors with the NONE controller type has been remedied.

Fix For EPICS Debugging Messages

A bug, where the values printed at debug level 128 for the epics_put() command were incorrect for non DBF_DOUBLE number-valued process variables, has been fixed. The bug only affected the debugging output, not the values sent through the EPICS channel access calls.

Update For Attocube Controller

The Attocube ANC350 controller support has been updated to work better with the firmware problem where the controller can take hundreds of milliseconds to report a motor is busy after spec sends a move command.

Fix For Number Of Channels For Huber SMC 9300 Controller

A bug, introduced in spec release 5.09.01-3 and associated with the update to the Huber SMC 9300 support for simultaneous motor starts, where the highest numbered motor channel wouldn't move unless the number of motor channels configured was one more than needed, has been fixed.

August 12, 2011 - RELEASE 5.10.01-5

Fix For Motor Sync Issue With spec Client

A bug, where a ^C on a spec client could be ignored during a move of a motor on a spec server, has been fixed. The issue only occurred if the server had sent the client a "sync_check" message that initiated a motor discrepancy dialog on the client. (The bug was related to improper settings of the keyboard-input modes after the discrepancy dialog.)

Fix For Setting Certain MCA Parameters On Unresponsive Unit

The mca_par() commands "auto_clear", "auto_run" and "soft_preset" can now be used to set those modes on MCA devices that are configured, but not responsive. In particular, for the EPICS MCA (which isn't flagged as responsive until all the registered connection events arrive), the mca_par() commands can now be used immediately after reading the config file. For example, the commands can be included in the definition of config_mac, which will generally execute before the EPICS MCA is fully connected.

Fix For EPICS MCA Polling During wait()

A bug, where EPICS events were not processed during a call of wait() or wait(0) if the only EPICS device that was busy was the EPICS MCA, has been fixed.

Fix For TANGO Commands

Implementation of data-array type conversions for tango_put() input arguments has been completed. Previously, if the type of the data array passed to tango_put() didn't match TANGO's expected data type, incorrect data could be sent. Also, a bug with the tango_io() and tango_put() functions with 64-bit spec builds, where incorrect values were sent when converting elements of an input associative array to TANGO long (32-bit) data types, has been fixed.

ser_par() "queue" Implemented For TACO Serial Devices

The ser_par() "queue" option is now implemented for the TACO serial device server.

July 1, 2011 - RELEASE 5.10.01-4

Fix For OMS Position Maintenance With Negative Encoder Ratio

A problem, where the Oregon Micro Systems position-maintenance mode would not work if the encoder-step-size parameter had the opposite sign of the standard step-size parameter, has been fixed.

June 22, 2011 - RELEASE 5.10.01-3

Fix For Calculational Pseudomotors In Server Mode

A problem, where spec would get stuck waiting for a move to finish in the seldom encountered configuration of running in server mode with a calculational pseudomotor (using the macro hardware feature) having an associated real motor configured as controller type NONE, has been fixed.

June 20, 2011 - RELEASE 5.10.01-2

Fix For GPIB-ENET Issues On ^C

An issue with some built-in hardware controlled over GPIB using the National Instruments GPIB-ENET interface, where a ^C interrupt would lead to a breakdown in communications with the GPIB-ENET, has been fixed.

June 6, 2011 - RELEASE 5.10.01-1

New move_info() Function

A new move_info() function returns information about what would happen on a subsequent move_all command given the current motor positions and current values in the A[] array. The information returned can include a list of motors that would be moved. See the new move_info help page for details.

New "Commanded" Motor Position Value Available With read_motors()

spec now retains the value of the commanded motor position passed to the move code via the motor position A[] array. The value is retained to the full precision specified, which can be higher precision than the normal motor positions, which are rounded to the step size of the motor. A new option to the built-in read_motors() function will return this commanded position. If called as read_motors(0x10), the commanded positions for all motors will be placed in the A[] array. If called as read_motors(0x10, mne), the function will return the commanded position for motor mne, leaving the A[] array unchanged. The commanded position is set to the current (rounded) position on start up, after hardware reconfiguration, at the end of a homing operation, after hitting a limit, with a chg_offset() command (called by the set macro) and when a move is aborted by ^C or an emergency stop.

Revised _mvr Macro Uses Commanded Position

The standard _mvr macro (used by mvr and umvr) has been updated to use the new commanded-position return value of read_motors() to calculate the target position of the relative move.

New encode() and decode() Functions

New built-in functions encode() and decode() are available to convert between spec data types and data-serialization formats to aid in exchanging data with other processes. See the new encode help file for details.

New Macro Hardware MCA Functionality

The macro hardware feature now includes support for MCA devices, in addition to the existing support for motors and counter/timers. See the mac_hdw help file for details.

Restored Auto-Raise Functionality to X Window Plots

The focus-stealing-prevention functionality that has appeared in window managers over the last years broke the auto-raise feature of spec's X Window plots. With the auto-raise feature enabled, hidden or partially hidden plot windows rise to the top when spec updates the plot. This release restores the auto-raise functionality. See spec's x11 help file for details on setting plot window options.

Fix For Early Read Of Counters In Server Mode

In server mode, while waiting for command input, spec will periodically issue calls to read the active scalers and cache the values in order to be able to respond to client requests for scaler values without needing to access the hardware. Previously, as part of this procedure, the counters would be read immediately after starting the time count interval. Now, that first read won't occur immediately. The change will be noticed particularly in the sequence of calls to macro counter _cmd() functions.

Enhanced Support For 2D Associative Arrays With var in Syntax

The syntax related to querying 2D associative arrays with a known second element, as in

for (var in arr[][key]) print arr[var][key]

and

if (var in arr[][key]) ...

is now supported. Previously, such usage produced a syntax error.

Support For DEV_ENCODED tango_io() Type

This spec release supports the current implementation of the new DEV_ENCODED data type for the tango_io() function as used at ESRF and elsewhere.

Fix For Crash When Using Empty Macro Functions

A segmentation fault that sometimes occurred when using macro functions defined as an empty string (no curly brackets) in particular contexts has been fixed.

Fix For TACO MCA Access Of Disabled Units

A bug, where spec would access the device state on a call of disabled (via the "disabled" key for the mca_par() function) TACO MCA device-server units, has been fixed.

Fix For Mistaken "Duplicate Channel" Error

An issue with a handful of hardware controllers (EPICS motor record, ESRF VCT6, JVL SM120B, Munich BR-tronik IPS, Newport Agilis and Sigmatech FC-501A), where a "duplicate channel" error message would sometimes be erroneously displayed during hardware configuration when a channel number was the same as the configured number of channels, has been fixed. The issue with the VCT6 was introduced with the code update in spec release 5.09.02-1. The issue with the other controllers dates generally from the introduction of the particular controller support to spec.