spec

Software for Diffraction

changes

highlights of modifications for spec release 5.04

January 21, 2004 - RELEASE 5.04.04-10

Workaround For New Focus 8750/53 Firmware Bug

A workaround for a bug in the recent firmware for the New Focus 8750/53 motor controllers that prevented the existing spec code from working with these controllers is included in this spec release. Motor controller firmware release 1.0.13 did not have the bug. Firmware releases 1.3.1 and 1.5.3 are known to have the bug, and spec assumes all releases in between do, too.

January 15, 2004 - RELEASE 5.04.04-9

Fix For New Unit/Module/Channel Motor Numbering

The optional module numbering for motors that was introduced in release 5.04.03-2 didn't allow motors to have the same unit and channel numbers but different module (crate) numbers. That problem is now fixed.

unix() Will Strip Initial Null Bytes From Output

When the unix() function is used to assign the output from the command given by the first argument into the string variable given by the second argument, initial null bytes in the command output will now be stripped away.

Support For MEN M97 Counter/Timer Modules

spec now supports the MEN Mikro Electronik GmbH M-Bus model M97 timer/counters. The current support is based on the M97 module being installed in an MEN A201S 6U VMEbus Carrier Board.

January 12, 2004 - RELEASE 5.04.04-8

Support For MEN M8 VME To GPIB Controller

spec now supports the MEN Mikro Electronik GmbH M-Bus model M8 GPIB controller. The current support is based on the M8 module being installed in an MEN A201S 6U VMEbus Carrier Board. Multiple M8 controllers can be used.

January 9, 2004 - RELEASE 5.04.04-7

Update For Struck SIS3820 Multi-Channel Scaler Update

spec now works with updated firmware version 1.02 for the Struck SIS3820 multichannel scaler. These updated modules now have all the functionality required to use them as a timer/counters with spec. Firmware 1.01 is no longer supported. spec now automatically routes the internal 50 MHz time base to channel zero, if that channel is configured as the time base. Also, spec now keeps track of unlimited overflows in all channels and will restart the timer as necessary to accommodate arbitrarily long count times, whether counting to time or to monitor counts.

More Robust Code For Tsuji PM16C Over Ethernet

spec now includes code to retry read commands when using the Tsuji PM16C motor controllers over the Ethernet interface. spec will resend commands to read values up to four times if there are timeouts when waiting for a response from the motor controller. In addition the Ethernet timeout value has been reduced from five to two seconds. The reason for the change is due to reported timeouts when the controller is used on a busy network.

Another Fix For Mclennan PM608 Motor Controllers

A bug, where the Mclennan PM608 motor positions were not tested for synchronization with positions stored on the computer, has been fixed. (The fix in release 5.04.04-2 was not completely effective.)

January 7, 2004 - RELEASE 5.04.04-6

Fix For Recently Introduced CAMAC SMC Bug

A bug (introduced in release 5.02.02-7 and associated with changes made to accommodate server mode), that caused bogus motor positions to be returned for the CAMAC Joerger SMC motor controllers when used without associated counters, has been fixed.

January 7, 2004 - RELEASE 5.04.04-5

Real Fix For Catching Signals In Server Mode

A bug in server mode only, where spec inappropriately blocked several signals (including the hang-up signal generated when a window running spec is closed), and which was reported to be fixed in release 5.04.04-2, but wasn't, is now really fixed.

January 6, 2004 - RELEASE 5.04.04-4

Fix For Struck SIS1100/3100 VME Controller

A bug, where spec would crash after repeated reconfig commands with the message "No more room for VME memory maps" when using the Struck SIS1100/3100 VME Controller, has been fixed.

January 5, 2004 - RELEASE 5.04.04-3

"pgm" Format Now Accepts 16-Bit Data

The "pgm" file format for the fmt_write() and fmt_read() functions now supports 16-bit data, in addition to the existing support for 8-bit data.

Update to PC-DIG Frame Grabber Support

The support for the Coreco Imaging (formerly ITI) PC-DIG frame grabber has been revised. It is no longer necessary to configure a camera type in the ADDR field of the configuration editor. spec will now obtain the needed configuration parameters from the initialized itifg driver module.

January 4, 2004 - RELEASE 5.04.04-2

Fix For Catching Signals In Server Mode

A bug in server mode only, where spec inappropriately blocked several signals (including the hang-up signal generated when a window running spec is closed), has been fixed.

Language Dependence Removed For External Shared Arrays On Linux

spec now uses a different method for finding available existing shared arrays (needed for the extern shared usage) that doesn't depend on the locale-dependent output of the ipcs command. The new method is only available on Linux platforms, however.

When using utilities built with prior versions of the sps shared-array library or when running on non-Linux platforms, the language locale can be set to English for a single command as follows:

shell> LANG=en onze &

The above starts the onze 2D-image display utility as a background process with the LANG environment variable set to English.

Homing Implemented For IMS MDrive Motor Controllers

spec now implements home searches for the IMS MDrive motor controllers. spec uses MDrive input pin three as the default home input.

Support For Tsuji CT16-01B Counter/Timer

spec now supports the Tsuji Electronics Model CT16-01B 16-channel counter/timer over GPIB and RS-232C interfaces.

Support For Hasylab MCA 8701 VME Module

spec now supports the Hasylab home-grown VME MCA known as model 8701.

Fix For Mclennan PM608 Motor Controllers

A bug, where only the first channel of each Mclennan PM608 motor controller was tested for synchronization with positions stored on the computer, has been fixed.

Fix For Amptek Pocket MCA

spec now automatically disables the security locking feature of the Amptek "Pocket" MCA 8000/8000A on startup. Otherwise, if the security locking had been turned on elsewhere, spec would be unable to modify the device parameters or control the device.

November 20, 2003 - RELEASE 5.04.04-1

Tilde Expansion Now A Built-In Feature

The tilde expansion feature for path names, where ~ is expanded to the spec user's home directory path, and ~name is expanded into name's home directory path, is now included in the base spec code. Previously, the feature was only available when an optional command-line editing package (such as GNU readline) was linked in.

Increased Maximum Number of Motors

A spec installation (at ESRF) has finally run up against the compiled-in limit of 160 motors. To accommodate them, the maximum number of motors has been increased to 200. (The next time the limit is reached, the spec code will be modified to allow an unlimited number of motors.)

New motor_par("module") Option

A new "module" option to the motor_par() function returns the configured module number of a motor. Optional module numbers were introduced into the motor configuration in spec release 5.04.03-2.

New Home-Position Optional Motor Parameter

A new parameter is available on the first optional motor-parameter configuration screen to configure the home position (in dial units) of the motor. spec will use this parameter, if set, to assign the dial position automatically on home searches. Motor controllers that currently have this feature implemented are the OMS models, the Newport MM4000/5/6 models, the Mclennan PM600/8 models and the ANKA Gamma RST driver. The parameter is accessible via the "home_position" option to the motor_par() function. If the home-position argument is given to the standard home macro or in the chg_dial() function, that value will take precedence over the value in the config file.

Fix For Tsuji PM16C Ethernet Interface

A timing issue with the Tsuji PMC16C motor controllers when used with the Ethernet interface, where the controller wouldn't respond quickly enough between closing and opening the connection (as occurs during reconfig) has been accommodated by inserting a small delay in the spec code before the connection is reopened.

Updates To Mclennan Motor Support

A number of updates to the Mclennan motor controller have been made, including the following: The PM608 model, which is a multiplexed version of the PM600, is now supported. Home searches are now implemented for the PM600 series. Also, the spec code should now work in both "quiet" and "verbose" modes (as set by configuration switches on the motor controller). Finally, the new unit/module/channel configuration can be used for the multiplexed PM381 and PM608 motors, where the module number corresponds to the controller address.

Updates To IMS MDrive Motor Support

New spec code addresses the latest non-backwards compatible firmware (version 1.043) from IMS for their MDrive motor controllers. Also, the commands for doing home and limit searches with the MDrive controllers are now included in this spec release. Finally, the error messages returned by the controller when spec attempts to set already configured input switches to the convention for limit assignments (switch 1 for plus limit, switch 2 for negative limit) are suppressed. spec sends the commands to ensure the limit switches are available, although the software will still detect limits if the switches have already been programmed to another convention.

Data Group Fix

An old bug that affected use of data groups in the functions data_dump(), data_fit(), data_plot() and data_pipe(), where spec could experience a segmentation fault if the starting point argument was greater than zero, has been fixed.

Bug Fix For chelp Utility On OSX

A bug, where spec's stand-alone help formating utility, chelp, inappropriately ran in interactive mode on Mac OSX platforms when its output had been redirected through through a pipe, has been fixed.

Fix For ANKA RST Gamma Simulate Mode

Missing checks on whether spec was operating in simulate mode in calls of the anka_par() function have been added.

Fix For Detecting ESRF TACO Maxe Controller Failure

spec now includes a check for for ESRF TACO Maxe controller failure. If there are three consecutive failures of the dev_putget() calls for a particular motor, spec will mark the motor channel as unusable. The user must perform a reconfig to reenable the motor (after fixing whatever caused the hardware failure).

ESRF Warning Message Restored

A warning that motors did not reach the final position, which disappeared from spec when the Maxe support was modernized in release 5.02.03-4, has been restored. Also, the warning can now appear for non-Maxe motors, but only for TACO-enabled spec installations.

October 26, 2003 - RELEASE 5.04.03-8

Bug Fix For read_motors() Flags

A bug, where setting bit 2 of the flags argument to read_motors() was supposed to indicate that position discrepancies should be resolved silently in favor of the hardware but didn't, has been fixed.

October 5, 2003 - RELEASE 5.04.03-7

Fix For Nested eval() Calls With Macro Functions

A bug, where the return values of macro functions in nested calls of eval() were sometimes lost, has been fixed. This bug was discovered when a macro hardware _par() function was called from inside a macro hardware _cmd() function.

Improved Error Handling When Opening Socket Connections

spec now uses a more sophisticated technique for opening socket connections. Previously, if a host specified by IP address was unreachable, the internal connect() call would hang until interrupted with a ^C. The new algorithm will time out after a default interval (currently four seconds) if the host cannot be reached.

Improved Testing Of Connections To spec Server

When a spec client opens a connection to a spec server on startup or on a reconfig, errors such as an unresolvable host name or an unreachable host will now generally produce an immediate error message, with no more attempts made to connect to that server until the next reconfig. If the host is up and reachable, but there is no spec server available at the designated port, the spec client will keep trying, as in previous versions. However, now a warning message will be printed on the first try.

Fix For Crash in spec Clients When One Server Platform Was Down

A bug that could result in a crash during hardware initialization when a spec client was configured for spec servers on multiple platforms where the computer running one of the servers was down has been fixed.

Another Motor Position Rounding Fix

The fixes in releases 5.02.03-5 and 5.03.01-3 that dealt with an obscure rounding bug and then with the unintended consequences of the first fix require one more fix. Now, motor positions near zero can again be set as small as the step size, even if the step size is less than 1e-10.

Fix For a Particular Am9513 Counter/Timer

Although spec doesn't officially support the Measurement Computing PCI CTR-05/10 Am9513 compatible counter/timer modules (because they contain a flaw which prevents counting to monitor to work), the cards can still be used with spec for counting to time. For the CTR-10 model that contains two counter chips, spec now probes the correct addresses for the second counter chip. Previously, the registers associated with the digital I/O were probed, which would disturb the contents of those registers.

September 24, 2003 - RELEASE 5.04.03-6

New counter_par() Option

The command counter_par(mne, "monitor?") returns nonzero if the hardware counter channel associated with mne can be assigned as the monitor preset channel using the command counter(mne, "monitor"). Currently, counter/timers with such a capability are the Kinetic Systems 3640 (CAMAC), the Joerger VSC16/8 (VME), the Struck SIS3820 (VME), the National Instruments 6601/2 (PCI), the MURR device (GPIB) and the EPICS scaler record.

Updated counters Macro

The counters macro, used to assign the channels associated with the main detector counter and the monitor counter, will now use the counter_par() function to change the counter hardware monitor assignment for hardware that supports monitor channel assignment via software.

Support For Munich BR-tronik IPS Motor Controller

spec now includes support for a motor controller called the BR-tronik IPS, designed, built and used at LMU Munich.

September 4, 2003 - RELEASE 5.04.03-5

Motor Offset Rounding Bug Revisited

The fix of an obscure motor rounding bug in spec release 5.02.03-5 created another bug that was partially fixed in release 5.03.01-3, but not entirely. The bug would, under certain circumstances, cause nonzero user angles with nonzero offsets to print with decimal parts on the order of 1e-9 and angles at zero to print with decimal parts on the order of 1e-16. This release should complete the fix begun in the 5.03.01-3 release,

Support For SBS Model 946 Version 2 Driver on Sun

The SBS 946 version 2 driver for Sun platforms for the SBS model 61x/62x VME controllers is now supported.

September 1, 2003 - RELEASE 5.04.03-4

Portability Issues Addressed

Several code changes were needed to allow spec to compile using gcc version 3.3. Also, problems with state- and settings-file locking over NFS have been addressed.

August 27, 2003 - RELEASE 5.04.03-3

New remote_stat() Client Function

A new remote_stat() function is available on the spec client to check whether a particular server is currently connected. See the server help file for additional information.

New status/ready Server Property

A new "status/ready" property is available on the spec server that will return a value that indicates whether the server is ready to execute the next client command. See the server help file for additional information.

Bug Fix For Watched Variables in Server

A bug introduced just before the server/client code was put into the official release, where "watched" variables became unregistered in the server the first time they were modified, has been fixed.

Improved Hex Dump For Socket Debugging

The optional hexadecimal debug format for socket I/O (selected with DEBUG bits 0x400040) will now also show offsets and printable ASCII representations of the data, along the lines of conventional hex-dump utilities.

show_state Utility Checks New Checksum

The show_state utility, available to display the contents of a user's state file, will now also do a test on the state-file checksum that was introduced in the previous spec release.

Improved Error Messages On Array Allocation Failure

spec will now print the name and requested dimensions of arrays that are too big for the memory allocation calls.

Initial Support For Struck SIS3820 Scalers

spec now includes support for the Struck SIS3820 multichannel scaler (MCS) VME module. The initial support only covers use of the device as regular preset counters (of which there are 32 channels). MCS support will come later. The current SIS3820 firmware does not allow the counters to be read back while counting, but that feature is expected to become available in a forthcoming SIS3820 firmware update.

Support For Compumotor OEM750 Motor Controllers

The code that supports the Compumotor AX motor controller has been modified to allow it also to work with the Compumotor models OEM750, OEM650, OEM350 and OEM010 motor controllers. Select CMAX as the controller type and "Compumotor AX (Serial)" as the device type for all such motors.

August 18, 2003 - RELEASE 5.04.03-2

Server/Client Updates

A number of updates are included for the new server/client features introduced in release 5.04.03:

  • Server port number assignment is now flexible. A server can be assigned a single port number, a range of port numbers or left to use a built-in default port number range (6510-6530). The spec invocation argument syntax for server mode has changed to reflect the new options.
  • New hello commands are available for clients to discover servers.
  • spec clients can specify a server on a particular host by either a port number or by a spec process name.
  • A better job is done reestablishing input stream alignment on both server and client in the event nonconforming data is received.
  • Improvements have been made to the locking among threads in the server, fixing some race conditions.
  • The handling of associative arrays when passed to and from the server works better.
  • Problems with byte swapping (when needed) in the server are fixed.

See the revised server help file for further information.

New Optional Module Number For Motor Unit/Channel

To accommodate motor controllers that require more than two parameters (unit and channel) to specify motors, the edconf configuration editor now allows either two or three slash-separated numbers. If three numbers are given, the first is unit, the last is channel and the middle is the new parameter, which spec will refer to as module number. The motor controllers in spec that currently require a module (or crate or rack or sub-unit) number (ACS SPI-8, DCX serial, ECB in multiplexed mode, Mclennan PM381, New Focus 8732/8750/8753 and XIA HSC) still use the overloaded channel number to pass the information, but will be modified to recognize the new module number feature in future releases.

Argument Change For Macro Hardware _config() Macros

The arguments for the macro hardware _config() macros, when called for the individual motor and counter channels, have been changed to accommodate the new module number option. The calling sequence is now prefix_config(mne, type, unit, module, chan). See the mac_hdw help file for details.

Fix For edconf Default VME Addresses

The hardware configuration editor edconf now correctly shows the default address when VME modules are selected on the Devices screen.

Fixes For Socket-To-Serial Support

The socket-to-serial support in spec, which allows any supported serial device to be used via compatible Ethernet-to-serial adapters, was missing some internal code which could prevent certain motor controllers (Compumotor AX and 3000, MAC Science MXC, Mclennan PM301, Newport MM2000/3000 in daisy-chain mode, PMC DCX-100, Rigaku RINT-2000 and XIA HSC) from working properly in socket-to-serial mode. The missing code has been added.

Improved Detection of Corrupted State Files

This spec release attempts to do a better job of detecting corrupted user state files, automatically doing a fresh start rather than crashing or quitting with an error message. The state file is now written out with a checksum, which will be recalculated and compared before the file is used to restore the state. Also, additional checks are done on the sanity of parameters as the file is read. State files from prior spec releases will still be recognized, but state files saved with this version will not be usable by older spec releases.

prdef Source-File Comment Fixed

An old bug, where the comment printed by prdef to show the source file for the macro incorrectly eliminated embedded /../ strings, has been fixed. Unnecessary ./, /./, and /../ are still eliminated and SPECD is still substituted for the path of the spec auxiliary file directory, but all should now be done correctly.

Help Formatter Bug Fix

A bug introduced in spec release 5.01.03, where the help formatter would break lines containing highlighted text before they were full, has been fixed.

New suv Geometry for ESRF D32 Beamline

The initial adaptation in spec of a geometry called suv is included for the surface ultrahigh vacuum instrument at the ESRF D32 beamline.

July 22, 2003 - RELEASE 5.04.03-1

New Encoder Option for Mclennan PM600

If the PM600_E controller type is selected in the config file for the Mclennan PM600 motor controller, spec will read the encoder position rather than the commanded position from the controller.

July 20, 2003 - RELEASE 5.04.03

New Server/Client Feature

The spec server/client features, long in development, are now included with the standard spec release. See the server help file for details on the implementation. Although the server/client features work well in many situations, there are probably still flaws that need further development to correct. Please start gently with the current release. Keep CSS appraised of any anomalies noticed or features that seem lacking.