Hi Michael,
The problem is coming in the call to AndorCCD::setupShutter. This is called from the AndorCCD constructor as follows:
status |= setupShutter(-1);
If it returns an error then the constructor will fail, and you will get the errors you see. So we need to figure out why AndorCCD::setupShutter is failing.
This is the code:
/** Controls shutter
* @param[in] command 0=close, 1=open, -1=no change, only set other parameters */
asynStatus AndorCCD::setupShutter(int command)
{
double dTemp;
int openTime, closeTime;
int shutterExTTL;
int shutterMode;
asynStatus status=asynSuccess;
static const char *functionName = "setupShutter";
getDoubleParam(ADShutterOpenDelay, &dTemp);
// Convert to ms
openTime = (int)(dTemp * 1000.);
getDoubleParam(ADShutterCloseDelay, &dTemp);
closeTime = (int)(dTemp * 1000.);
getIntegerParam(AndorShutterMode, &shutterMode);
getIntegerParam(AndorShutterExTTL, &shutterExTTL);
if (command == ADShutterClosed) {
shutterMode = AShutterClose;
setIntegerParam(ADShutterStatus, ADShutterClosed);
}
else if (command == ADShutterOpen) {
if (shutterMode == AShutterOpen) {
setIntegerParam(ADShutterStatus, ADShutterOpen);
}
// No need to change shutterMode, we leave it alone and it shutter
// will do correct thing, i.e. auto or open depending shutterMode
}
try {
asynPrint(this->pasynUserSelf, ASYN_TRACE_FLOW,
"%s:%s:, SetShutter(%d,%d,%d,%d)\n",
driverName, functionName, shutterExTTL, shutterMode, closeTime, openTime);
checkStatus(SetShutter(shutterExTTL, shutterMode, closeTime, openTime));
} catch (const std::string &e) {
asynPrint(pasynUserSelf, ASYN_TRACE_ERROR,
"%s:%s: %s\n",
driverName, functionName, e.c_str());
status = asynError;
}
return status;
}
This is the error you are getting:
2016/01/04 15:25:05.348 andorCCD:setupShutter: ERROR: Parameter 3 not valid.
So the error is coming in the call to the Andor vendor library function SetShutter(), and the error is "Parameter 3 not valid". Parameter 3 is closeTime. So it appears that an
invalid value for closeTime is being passed. closeTime is the value of the ADShutterCloseDelay parameter, converted to milliseconds. ADShutterCloseDelay is defined by the following record in ADBase.template:
record(ao, "$(P)$(R)ShutterCloseDelay")
{
field(PINI, "YES")
field(DTYP, "asynFloat64")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))SHUTTER_CLOSE_DELAY")
field(PREC, "3")
field(VAL, "0.0")
info(autosaveFields, "VAL")
}
So the default value is 0.0. Have you modified this record, or could there be a non-zero value in autosave?
You can see that there is an asynPrint() statement just before the call to SetShutter in the above function which will print the values of all of the arguments being passed to
SetShutter(). It is a bit tricky to enable ASYN_TRACE_FLOW in the constructor, so the simplest thing to do is just change that asynPrint() statement to a printf(). Then you can see what value of closeTime is being passed to SetShutter(). Hopefully the documentation
for your camera gives the valid range of closeTime, or else you can just experiment to find a valid value. Then you will need to create a new database that modifies the value of $(P)$(R)ShutterCloseDelay, or modify the one in ADCore/ADApp/Db/ADBase.template
(which is probably not a good idea).
Mark
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Dunning, Michael
Sent: Monday, January 04, 2016 6:23 PM
To: EPICS Tech-Talk
Subject: AreaDetector ADAndor - iXon Ultra 888
I'm having problems running ADAndor (R2-4) on RHEL6 64-bit (kernel
2.6.32-573.8.1.el6.x86_64) with an Andor iXon Ultra 888 USB 3.0 CCD.
I'm able to acquire an image with the Andor SDK (version 2.99.30000.1)
using their example programs, but I get the following when running
AreaDetector:
$ ./st.cmd
#!../../bin/linux-x86_64/andorCCDApp
< envPaths
epicsEnvSet("ARCH","linux-x86_64")
epicsEnvSet("IOC","sioc-asta-ada01")
epicsEnvSet("TOP","/afs/slac.stanford.edu/g/testfac/vol1/rhel6/epics/R3.14.12.4/iocTop/andor/R2.4")
epicsEnvSet("EPICS_SITE_TOP","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4")
epicsEnvSet("EPICS_MODULES","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules")
epicsEnvSet("TOOLSDIR","/afs/slac/g/testfac/tools")
epicsEnvSet("HDF5","/afs/slac/g/testfac/tools/hdf5")
epicsEnvSet("SZIP","/afs/slac/g/testfac/tools/szip")
epicsEnvSet("MCA","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/mca/R7.6")
epicsEnvSet("AREAD","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4")
epicsEnvSet("ADANDOR","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4/ADAndor")
epicsEnvSet("SUPPORT","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules")
epicsEnvSet("AREA_DETECTOR","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4")
epicsEnvSet("EPICS_BASE","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/base")
epicsEnvSet("ASYN","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/asyn/R4.27")
epicsEnvSet("ADBINARIES","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4/ADBinaries")
epicsEnvSet("ADCORE","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4/ADCore")
epicsEnvSet("AUTOSAVE","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/autosave/R5.7.1")
epicsEnvSet("BUSY","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/busy/R1.6.1")
epicsEnvSet("CALC","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/calc/R3.6.1")
epicsEnvSet("SSCAN","/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/sscan/R2.10")
errlogInit(20000)
dbLoadDatabase("/afs/slac.stanford.edu/g/testfac/vol1/rhel6/epics/R3.14.12.4/iocTop/andor/R2.4/dbd/andorCCDApp.dbd")
andorCCDApp_registerRecordDeviceDriver(pdbbase)
epicsEnvSet("PREFIX", "ANDOR1:")
epicsEnvSet("XSIZE", "1024")
epicsEnvSet("YSIZE", "1024")
epicsEnvSet("NELEM", "1100000")
epicsEnvSet("PORT", "ANDOR")
epicsEnvSet("QSIZE", "20")
epicsEnvSet("NCHANS", "2048")
epicsEnvSet("CBUFFS", "500")
epicsEnvSet("EPICS_DB_INCLUDE_PATH",
"/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4/ADCore/db")
# andorCCDConfig(const char *portName, const char *installPath, int shamrockID,
# int maxBuffers, size_t maxMemory, int priority,
int stackSize)
#andorCCDConfig("$(PORT)","/usr/local/etc/andor/",0,-1,-1,0,0)
andorCCDConfig("ANDOR","/usr/local/etc/andor/",0,0,0,0,0)
andorCCD:AndorCCD: initializing camera
2016/01/04 15:25:05.348 andorCCD:setupShutter: ERROR: Parameter 3 not valid.
andorCCD:AndorCCD: unable to set camera parameters
#dbLoadRecords("$(ADCORE)/db/ADBase.template","P=$(PREFIX),R=cam1:,PORT=$(PORT),ADDR=0,TIMEOUT=1")
#dbLoadRecords("$(ADCORE)/db/NDFile.template","P=$(PREFIX),R=cam1:,PORT=$(PORT),ADDR=0,TIMEOUT=1")
dbLoadRecords("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4/ADAndor/db/andorCCD.template",
"P=ANDOR1:,R=cam1:,PORT=ANDOR,ADDR=0,TIMEOUT=1")
# Create a standard arrays plugin
NDStdArraysConfigure("Image1", 5, 0, "ANDOR", 0, 0)
#dbLoadRecords("$(ADCORE)/db/NDPluginBase.template","P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),NDARRAY_ADDR=0")
# Make NELEMENTS in the following be a little bigger than 2048*2048
# Use the following command for 32-bit images. This is needed for
32-bit detectors or for 16-bit detectors in acccumulate mode if it
would overflow 16 bits
#dbLoadRecords("$(ADCORE)/db/NDStdArrays.template",
"P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,TYPE=Int32,FTVL=LONG,NELEMENTS=4200000")
# Use the following command for 16-bit images. This can be used for
16-bit detector as long as accumulate mode would not result in 16-bit
overflow
dbLoadRecords("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4/ADCore/db/NDStdArrays.template",
"P=ANDOR1:,R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR,TYPE=Int16,FTVL=SHORT,NELEMENTS=1100000")
#asynSetTraceMask($(PORT), 0, 255)
dbLoadRecords("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/asyn/R4.27/db/asynRecord.db","P=ANDOR1::,R=cam1:,PORT=cam1,ADDR=0,OMAX=0,IMAX=0")
# Load all other plugins using commonPlugins.cmd
< /afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4/ADCore/iocBoot/commonPlugins.cmd
# Create a netCDF file saving plugin.
NDFileNetCDFConfigure("FileNetCDF1", 20, 0, "ANDOR", 0)
dbLoadRecords("NDFileNetCDF.template","P=ANDOR1:,R=netCDF1:,PORT=FileNetCDF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create a TIFF file saving plugin
NDFileTIFFConfigure("FileTIFF1", 20, 0, "ANDOR", 0)
dbLoadRecords("NDFileTIFF.template",
"P=ANDOR1:,R=TIFF1:,PORT=FileTIFF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create a JPEG file saving plugin
NDFileJPEGConfigure("FileJPEG1", 20, 0, "ANDOR", 0)
dbLoadRecords("NDFileJPEG.template",
"P=ANDOR1:,R=JPEG1:,PORT=FileJPEG1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create a NeXus file saving plugin
NDFileNexusConfigure("FileNexus1", 20, 0, "ANDOR", 0)
dbLoadRecords("NDFileNexus.template",
"P=ANDOR1:,R=Nexus1:,PORT=FileNexus1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create an HDF5 file saving plugin
NDFileHDF5Configure("FileHDF1", 20, 0, "ANDOR", 0)
Warning: program compiled against libxml 209 using older 207
dbLoadRecords("NDFileHDF5.template",
"P=ANDOR1:,R=HDF1:,PORT=FileHDF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create a Magick file saving plugin
NDFileMagickConfigure("FileMagick1", 20, 0, "ANDOR", 0)
dbLoadRecords("NDFileMagick.template","P=ANDOR1:,R=Magick1:,PORT=FileMagick1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create 4 ROI plugins
NDROIConfigure("ROI1", 20, 0, "ANDOR", 0, 0, 0)
dbLoadRecords("NDROI.template", "P=ANDOR1:,R=ROI1:,
PORT=ROI1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
NDROIConfigure("ROI2", 20, 0, "ANDOR", 0, 0, 0)
dbLoadRecords("NDROI.template", "P=ANDOR1:,R=ROI2:,
PORT=ROI2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
NDROIConfigure("ROI3", 20, 0, "ANDOR", 0, 0, 0)
dbLoadRecords("NDROI.template", "P=ANDOR1:,R=ROI3:,
PORT=ROI3,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
NDROIConfigure("ROI4", 20, 0, "ANDOR", 0, 0, 0)
dbLoadRecords("NDROI.template", "P=ANDOR1:,R=ROI4:,
PORT=ROI4,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create 8 ROIStat plugins
NDROIStatConfigure("ROISTAT1", 20, 0, "ANDOR", 0, 8, 0, 0)
dbLoadRecords("NDROIStat.template", "P=ANDOR1:,R=ROIStat1:
,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR,NCHANS=2048")
dbLoadRecords("NDROIStatN.template",
"P=ANDOR1:,R=ROIStat1:1:,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template",
"P=ANDOR1:,R=ROIStat1:2:,PORT=ROISTAT1,ADDR=1,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template",
"P=ANDOR1:,R=ROIStat1:3:,PORT=ROISTAT1,ADDR=2,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template",
"P=ANDOR1:,R=ROIStat1:4:,PORT=ROISTAT1,ADDR=3,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template",
"P=ANDOR1:,R=ROIStat1:5:,PORT=ROISTAT1,ADDR=4,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template",
"P=ANDOR1:,R=ROIStat1:6:,PORT=ROISTAT1,ADDR=5,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template",
"P=ANDOR1:,R=ROIStat1:7:,PORT=ROISTAT1,ADDR=6,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template",
"P=ANDOR1:,R=ROIStat1:8:,PORT=ROISTAT1,ADDR=7,TIMEOUT=1,NCHANS=2048")
# Create a processing plugin
NDProcessConfigure("PROC1", 20, 0, "ANDOR", 0, 0, 0)
dbLoadRecords("NDProcess.template", "P=ANDOR1:,R=Proc1:,
PORT=PROC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create 5 statistics plugins
NDStatsConfigure("STATS1", 20, 0, "ANDOR", 0, 0, 0)
dbLoadRecords("NDStats.template", "P=ANDOR1:,R=Stats1:,
PORT=STATS1,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=1024,YSIZE=1024,NCHANS=2048,NDARRAY_PORT=ANDOR")
NDStatsConfigure("STATS2", 20, 0, "ROI1", 0, 0, 0)
dbLoadRecords("NDStats.template", "P=ANDOR1:,R=Stats2:,
PORT=STATS2,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=1024,YSIZE=1024,NCHANS=2048,NDARRAY_PORT=ANDOR")
NDStatsConfigure("STATS3", 20, 0, "ROI2", 0, 0, 0)
dbLoadRecords("NDStats.template", "P=ANDOR1:,R=Stats3:,
PORT=STATS3,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=1024,YSIZE=1024,NCHANS=2048,NDARRAY_PORT=ANDOR")
NDStatsConfigure("STATS4", 20, 0, "ROI3", 0, 0, 0)
dbLoadRecords("NDStats.template", "P=ANDOR1:,R=Stats4:,
PORT=STATS4,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=1024,YSIZE=1024,NCHANS=2048,NDARRAY_PORT=ANDOR")
NDStatsConfigure("STATS5", 20, 0, "ROI4", 0, 0, 0)
dbLoadRecords("NDStats.template", "P=ANDOR1:,R=Stats5:,
PORT=STATS5,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=1024,YSIZE=1024,NCHANS=2048,NDARRAY_PORT=ANDOR")
# Create a transform plugin
NDTransformConfigure("TRANS1", 20, 0, "ANDOR", 0, 0, 0)
dbLoadRecords("NDTransform.template", "P=ANDOR1:,R=Trans1:,
PORT=TRANS1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create an overlay plugin with 8 overlays
NDOverlayConfigure("OVER1", 20, 0, "ANDOR", 0, 8, 0, 0)
dbLoadRecords("NDOverlay.template", "P=ANDOR1:,R=Over1:,
PORT=OVER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
dbLoadRecords("NDOverlayN.template","P=ANDOR1:,R=Over1:1:,NAME=ROI1,
SHAPE=1,O=Over1:,XPOS=ANDOR1:ROI1:MinX_RBV,YPOS=ANDOR1:ROI1:MinY_RBV,XSIZE=ANDOR1:ROI1:SizeX_RBV,YSIZE=ANDOR1:ROI1:SizeY_RBV,PORT=OVER1,ADDR=0,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=ANDOR1:,R=Over1:2:,NAME=ROI2,
SHAPE=1,O=Over1:,XPOS=ANDOR1:ROI2:MinX_RBV,YPOS=ANDOR1:ROI2:MinY_RBV,XSIZE=ANDOR1:ROI2:SizeX_RBV,YSIZE=ANDOR1:ROI2:SizeY_RBV,PORT=OVER1,ADDR=1,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=ANDOR1:,R=Over1:3:,NAME=ROI3,
SHAPE=1,O=Over1:,XPOS=ANDOR1:ROI3:MinX_RBV,YPOS=ANDOR1:ROI3:MinY_RBV,XSIZE=ANDOR1:ROI3:SizeX_RBV,YSIZE=ANDOR1:ROI3:SizeY_RBV,PORT=OVER1,ADDR=2,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=ANDOR1:,R=Over1:4:,NAME=ROI4,
SHAPE=1,O=Over1:,XPOS=ANDOR1:ROI4:MinX_RBV,YPOS=ANDOR1:ROI4:MinY_RBV,XSIZE=ANDOR1:ROI4:SizeX_RBV,YSIZE=ANDOR1:ROI4:SizeY_RBV,PORT=OVER1,ADDR=3,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=ANDOR1:,R=Over1:5:,NAME=Cursor1,SHAPE=1,O=Over1:,XPOS=junk,
YPOS=junk, XSIZE=junk,
YSIZE=junk, PORT=OVER1,ADDR=4,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=ANDOR1:,R=Over1:6:,NAME=Cursor2,SHAPE=1,O=Over1:,XPOS=junk,
YPOS=junk, XSIZE=junk,
YSIZE=junk, PORT=OVER1,ADDR=5,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=ANDOR1:,R=Over1:7:,NAME=Box1,
SHAPE=1,O=Over1:,XPOS=junk, YPOS=junk,
XSIZE=junk, YSIZE=junk,
PORT=OVER1,ADDR=6,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=ANDOR1:,R=Over1:8:,NAME=Box2,
SHAPE=1,O=Over1:,XPOS=junk, YPOS=junk,
XSIZE=junk, YSIZE=junk,
PORT=OVER1,ADDR=7,TIMEOUT=1")
# Create 2 color conversion plugins
NDColorConvertConfigure("CC1", 20, 0, "ANDOR", 0, 0, 0)
dbLoadRecords("NDColorConvert.template", "P=ANDOR1:,R=CC1:,
PORT=CC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
NDColorConvertConfigure("CC2", 20, 0, "ANDOR", 0, 0, 0)
dbLoadRecords("NDColorConvert.template", "P=ANDOR1:,R=CC2:,
PORT=CC2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create a circular buffer plugin
NDCircularBuffConfigure("CB1", 20, 0, "ANDOR", 0, 500, 0)
dbLoadRecords("NDCircularBuff.template", "P=ANDOR1:,R=CB1:,
PORT=CB1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ANDOR")
# Create an NDAttribute plugin with 8 attributes
NDAttrConfigure("ATTR1", 20, 0, "ANDOR", 0, 8, 0, 0, 0)
dbLoadRecords("NDAttribute.template", "P=ANDOR1:,R=Attr1:,
PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048,NDARRAY_PORT=ANDOR")
dbLoadRecords("NDAttributeN.template", "P=ANDOR1:,R=Attr1:1:,
PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=ANDOR1:,R=Attr1:2:,
PORT=ATTR1,ADDR=1,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=ANDOR1:,R=Attr1:3:,
PORT=ATTR1,ADDR=2,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=ANDOR1:,R=Attr1:4:,
PORT=ATTR1,ADDR=3,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=ANDOR1:,R=Attr1:5:,
PORT=ATTR1,ADDR=4,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=ANDOR1:,R=Attr1:6:,
PORT=ATTR1,ADDR=5,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=ANDOR1:,R=Attr1:7:,
PORT=ATTR1,ADDR=6,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=ANDOR1:,R=Attr1:8:,
PORT=ATTR1,ADDR=7,TIMEOUT=1,NCHANS=2048")
set_requestfile_path("./")
set_requestfile_path("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4/ADCore/ADApp/Db")
set_requestfile_path("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4/ADCore/iocBoot")
set_savefile_path("./autosave")
set_pass0_restoreFile("auto_settings.sav")
set_pass1_restoreFile("auto_settings.sav")
save_restoreSet_status_prefix("ANDOR1:")
dbLoadRecords("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/autosave/R5.7.1/asApp/Db/save_restoreStatus.db",
"P=ANDOR1:")
# Optional: load NDPluginEdge plugin
#NDEdgeConfigure("EDGE1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0)
#dbLoadRecords("NDEdge.template", "P=$(PREFIX),R=Edge1:,
PORT=EDGE1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")
#set_requestfile_path("$(ADPLUGINEDGE)/edgeApp/Db")
# Optional: load scan records
dbLoadRecords("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/sscan/R2.10/sscanApp/Db/scan.db",
"P=ANDOR1:,MAXPTS1=2000,MAXPTS2=200,MAXPTS3=20,MAXPTS4=10,MAXPTSH=10")
set_requestfile_path("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/sscan/R2.10/sscanApp/Db")
# Optional: load sseq record for acquisition sequence
dbLoadRecords("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/calc/R3.6.1/calcApp/Db/yySseq.db",
"P=ANDOR1:, S=AcquireSequence")
set_requestfile_path("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/calc/R3.6.1/calcApp/Db")
# Optional: load devIocStats records (requires DEVIOCSTATS module)
macLib: macro DEVIOCSTATS is undefined (expanding string
dbLoadRecords("$(DEVIOCSTATS)/db/iocAdminSoft.db", "IOC=$(PREFIX)"))
# Optional: load alive record (requires ALIVE module)
#dbLoadRecords("$(ALIVE)/aliveApp/Db/alive.db",
"P=$(PREFIX),RHOST=192.168.1.254")
# Load mpfit routine
#< $(TOP)/iocBoot/mpfit.cmd
# Override or add to common autosave settings
set_requestfile_path("./")
set_requestfile_path("../")
set_requestfile_path("/afs/slac/g/testfac/rhel6/epics/R3.14.12.4/modules/areaD/R2.4/ADAndor/andorApp/Db")
set_savefile_path("/nfs/slac/g/testfac/asta/sioc-asta-ada01/autosave")
#set_savefile_path("./autosave")
set_pass0_restoreFile("auto_settings.sav")
set_pass1_restoreFile("auto_settings.sav")
save_restoreSet_status_prefix("ANDOR1:")
#asynSetTraceMask("$(PORT)",0,9)
#asynSetTraceIOMask("$(PORT)",0,3)
iocInit()
Starting iocInit
############################################################################
## EPICS R3.14.12.4 $Date: Mon 2013-12-16 15:51:45 -0600$
## EPICS Base built Jun 20 2014
############################################################################
reboot_restore: entry for file 'auto_settings.sav'
reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.
*** restoring from
'/nfs/slac/g/testfac/asta/sioc-asta-ada01/autosave/auto_settings.sav'
at initHookState 6 (before record/device init) ***
1 PV had no saved value.
reboot_restore: done with file 'auto_settings.sav'
reboot_restore: entry for file 'auto_settings.sav'
reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.
*** restoring from
'/nfs/slac/g/testfac/asta/sioc-asta-ada01/autosave/auto_settings.sav'
at initHookState 6 (before record/device init) ***
1 PV had no saved value.
reboot_restore: done with file 'auto_settings.sav'
2016/01/04 15:25:05.413 ANDOR1::cam1:: Connect error, status=3,
asynManager:connectDevice port cam1 not found
reboot_restore: entry for file 'auto_settings.sav'
reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.
*** restoring from
'/nfs/slac/g/testfac/asta/sioc-asta-ada01/autosave/auto_settings.sav'
at initHookState 7 (after record/device init) ***
1 PV had no saved value.
reboot_restore: done with file 'auto_settings.sav'
reboot_restore: entry for file 'auto_settings.sav'
reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.
*** restoring from
'/nfs/slac/g/testfac/asta/sioc-asta-ada01/autosave/auto_settings.sav'
at initHookState 7 (after record/device init) ***
1 PV had no saved value.
reboot_restore: done with file 'auto_settings.sav'
2016/01/04 15:25:05.921 NDPluginCircularBuff::writeOctet error
processing infix _expression_=, error=NULL or empty input argument to
postfix()
2016/01/04 15:25:05.921 ANDOR1:CB1:TriggerCalc devAsynOctet::writeIt
failed NDPluginCircularBuff:writeOctet: status=-1, function=60, value=
iocRun: All initialization complete
# save things every thirty seconds
create_monitor_set("auto_settings.req", 30,"P=ANDOR1:,D=cam1:")
2016/01/04 15:25:05.970 andorCCD:setupShutter: ERROR: Parameter 3 not valid.
2016/01/04 15:25:05.970 andorCCD:writeFloat64: error, status=3
function=75, value=0.000000
2016/01/04 15:25:05.970 ANDOR1:cam1:ShutterCloseDelay devAsynFloat64
pPvt->result.status=3, process error
2016/01/04 15:25:05.970 andorCCD:setupShutter: ERROR: Parameter 3 not valid.
2016/01/04 15:25:05.970 andorCCD:writeFloat64: error, status=3
function=74, value=0.000000
2016/01/04 15:25:05.970 ANDOR1:cam1:ShutterOpenDelay devAsynFloat64
pPvt->result.status=3, process error
2016/01/04 15:25:05.970 andorCCD:writeFloat64: error, status=3
function=76, value=25.000000
2016/01/04 15:25:05.970 ANDOR1:cam1:Temperature devAsynFloat64
pPvt->result.status=3, process error
2016/01/04 15:25:05.970 andorCCD:setupShutter: ERROR: Parameter 3 not valid.
2016/01/04 15:25:05.970 andorCCD:writeInt32: error, status=3
function=86, value=1
2016/01/04 15:25:05.970 ANDOR1:cam1:AndorShutterExTTL devAsynInt32 process error
2016/01/04 15:25:06.110 andorCCD:setupShutter: ERROR: Parameter 3 not valid.
2016/01/04 15:25:06.110 andorCCD:writeInt32: error, status=3
function=85, value=0
2016/01/04 15:25:06.110 ANDOR1:cam1:AndorShutterMode devAsynInt32 process error
epics> save_restore: connect failed for channel 'ANDOR1:cam1:RESOLUTION'
auto_settings.sav: 110 of 111 PV's connected
epics>
epics>
Other modules I'm using are:
asyn 4-27
busy 1-6-1
calc 3-6-1
sscan 2-10
I've tried using an earlier version of the SDK (2.98.30000.0) and
earlier versions of AreaDetector (R2-2, R1-9-1) but I get similar
errors. Has anyone gotten an iXon USB camera working with
AreaDetector?
Incidentally, an Andor iDus USB 2.0 CCD does work with the same
versions of AreaDetector and the Andor SDK.
Any help would be greatly appreciated.
Michael Dunning
SLAC National Accelerator Laboratory
Accelerator Research Division Test Facilities
2575 Sand Hill Road, MS 63
Menlo Park, CA 94025
+1 (650) 926-5200