areaDetector PSL driver

September 3, 2014

Mark Rivers

University of Chicago

Table of Contents


This is an EPICS areaDetector driver for the detectors from Photonic Science Limited (PSL).

The interface to the detector is via a TCP/IP socket interface to the PSLViewer program that PSL provides. Before starting the areaDetector software the following needs to be done:

This driver inherits from ADDriver. It implements many of the parameters in asynNDArrayDriver.h and in ADArrayDriver.h. It also implements a number of parameters that are specific to the PSL detectors. The PSL class documentation describes this class in detail.

Implementation of standard driver parameters

The following table describes how the PSL driver implements some of the standard driver parameters.

Implementation of Parameters in asynNDArrayDriver.h and ADDriver.h, and EPICS Record Definitions in ADBase.template and NDFile.template
Parameter index variable EPICS record name Description
NDFilePath $(P)$(R)FilePath Controls the path for saving images. It must be a valid path for PSL_server.
NDFileFormat $(P)$(R)FileFormat The PSL driver supports saving images using the PSL_server in the following formats:
  • AVI
  • BMP
  • FLF
  • GIF
  • JPEG
  • PCX
  • PNG
  • PNM
  • TIFF

This list of file formats is read from the server, so could change in future releases of the server with no change to the areaDetector software required.

ADTriggerMode $(P)$(R)TriggerMode The PSL driver supports one or more of the following trigger modes:
  • FreeRunning
  • Hardware_Falling
  • Hardware_Rising
  • Pipeline_Falling
  • Pipeline_Rising
  • Pipeline_Software
  • Software
The menu of valid trigger modes is read from the server when a camera is opened, because it is camera-specific.

PSL specific parameters

The PSL driver implements the following parameters in addition to those in asynNDArrayDriver.h and ADDriver.h.

Parameter Definitions in PSL.cpp and EPICS Record Definitions in PSL.template
Parameter index variable asyn interface Access Description drvInfo string EPICS record name EPICS record type
PSLCameraName asynInt32 r/w Selects the camera to open. PSL_CAMERA_NAME $(P)$(R)CameraName
$(P)$(R)CameraName_RBV The menu of valid camera names is read from the server when the areaDetector software starts.
PSLTIFFComment asynOctet r/w Comment string to put in header of TIFF files written by PSL_server. PSL_TIFF_COMMENT $(P)$(R)TIFFComment

Unsupported standard driver parameters

The PSL driver does not support the following standard driver parameters because they are not supported in the PSL_server program:


The PSL driver is created with the PSLConfig command, either from C/C++ or from the EPICS IOC shell.

int PSLConfig(const char *portName, const char *serverPort,
                 int maxBuffers, size_t maxMemory,
                 int priority, int stackSize)

For details on the meaning of the parameters to this function refer to the detailed documentation on the PSLConfig function in the PSL.cpp documentation and in the documentation for the constructor for the PSL class.

There an example IOC boot directory and startup script (iocBoot/iocPSL/st.cmd) provided with ASPSL.

MEDM screens

The following show the MEDM screens that are used to control the PSL detector. Note that the general purpose screen ADBase.adl can be used, but it exposes many controls that are not applicable to the PSL, and lacks some fields that are important for the PSL.

PSL.adl is the main screen used to control the PSL driver.




The following are some current restrictions of the PSL driver: