areaDetector PVCAM driver

August 18, 2009

Brian Tieman, John Hammonds, Mark Rivers

Argonne National Laboratory and University of Chicago

Table of Contents

Introduction

This is a driver for the Roper Scientific detectors, which includes those from Princeton Instruments and Photometrics.

The driver is based upon the PVCAM library from Roper, and only runs on Microsoft Windows computers. This driver is complementary to the areaDetector Roper driver. That driver uses the Microsoft COM interface to control the Roper WinView program. This driver works at a lower level, communicating instead with the PVCAM library layer. PVCAM supports all Photometrics cameras, and many, but not all, Princeton Instruments cameras.

ADD ADDTIONAL INTRODUCTORY TEXT HERE.

This driver inherits from ADDriver. It implements many of the parameters in NDStdDriverParam_t (see asynNDArryDriver.h) and in ADStdDriverParam_t (see ADArrayDriver.h). It also implements a number of parameters that are specific to the Roper detectors. The pvCam class documentation describes this class in detail.

Implementation of standard driver parameters

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

DOCUMENT IMPLEMENTATION OF STANDARD DRIVER PARAMETERS IN THIS TABLE

Implementation of Parameters in asynNDArrayDriver.h and ADDriver.h, and EPICS Record Definitions in ADBase.template and NDFile.template
Enum name EPICS record name Description
ADNumImages $(P$(R)NumImages Controls the number of images to acquire when ADImageMode is ADImageMultiple.

PVCAM specific parameters

The PVCAM driver implements the following parameters in addition to those in asynNDArrayDriver.h and ADDriver.h. Note that to reduce the width of this table the enum names have been split into 2 lines, but these are just a single name, for example PVCamInitDetector.

Parameter Definitions in pvcamSrc.h and EPICS Record Definitions in pvCam.template
Enum name asyn interface Access Description drvUser string EPICS record name EPICS record type
PVCam
InitDetector
asynInt32 r/w Initializes the detector PVCAM_INITIALIZE_DETECTOR $(P)$(R)Initialize
$(P)$(R)Initialize_RBV
longout
longin

Unsupported standard driver parameters

The PVCAM driver does not support the following standard driver parameters because they are not supported in the PVCAM library:

Configuration

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

int pvCamConfig(const char *portName, int maxSizeX, int maxSizeY, int dataType, 
                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 pvCamConfig function in the pvCam.cpp documentation and in the documentation for the constructor for the pvCam class.

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

MEDM screens

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

pvCam.adl is the main screen used to control the PVCAM driver.

pvCam.adl

pvCam.png

Performance measurements

The following measurements were done to demonstrate the performance that can be obtained with the areaDetector PVCAM driver.

PUT A TABLE OF PERFORMANCE MEASUREMENTS HERE

Restrictions

The following are some current restrictions of the PVCAM driver: