EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: AreaDetector ADAndor - iXon Ultra 888
From: Mark Rivers <[email protected]>
To: "'Dunning, Michael'" <[email protected]>
Cc: EPICS Tech-Talk <[email protected]>
Date: Tue, 5 Jan 2016 19:02:03 +0000
Hi Michael,

I realize now that my suggestion of modifying ADBase.template won't work, because the record values have not yet been read in when the constructor is executed.

I think your fix is OK, except that I would suggest reducing the values from 0.1 to 0.001 or the smallest value that will still work. Then it will have minimal impact if the user does not change them. The values set in the constructor will be overwritten in iocInit by the values in the OpenDelay and CloseDelay records.  After the first time the IOC is run and configured then valid values should be in autosave.

Can you test that and if it works I'll commit to github.

Thanks,
Mark


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Dunning, Michael
Sent: Tuesday, January 05, 2016 12:41 PM
To: Mark Rivers
Cc: EPICS Tech-Talk
Subject: Re: AreaDetector ADAndor - iXon Ultra 888

Thanks Mark, that was a big help.  It's working (temporarily) after
modifying ADAndor/andorApp/src/andorCCD.cpp.  I changed
status |= setDoubleParam(ADShutterOpenDelay, 0.);
status |= setDoubleParam(ADShutterCloseDelay, 0.);
to
status |= setDoubleParam(ADShutterOpenDelay, 0.1);
status |= setDoubleParam(ADShutterCloseDelay, 0.1);
then I rebuilt ADAndor and the IOC, and now initialization succeeds.
Apparently this camera doesn't like to initialize with the default
values of zero for these parameters.

This was after trying to modify ADCore/ADApp/Db/ADBase.template.  I
modified the default values (.VAL fields) for $(P)$(R)ShutterOpenDelay
and $(P)$(R)ShutterCloseDelay and made sure that autosave had non-zero
values, but the initialization still failed.

Do you have any suggestions for a more permanent fix for this?  I'm
not sure if any other cameras are affected by this, but I can say that
our iDus USB CCD is perfectly happy with the default values of zero.

Thanks again,
Mike




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


On Mon, Jan 4, 2016 at 4:54 PM, Mark Rivers <[email protected]> wrote:
> 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


Replies:
Re: AreaDetector ADAndor - iXon Ultra 888 Dunning, Michael
References:
AreaDetector ADAndor - iXon Ultra 888 Dunning, Michael
RE: AreaDetector ADAndor - iXon Ultra 888 Mark Rivers
Re: AreaDetector ADAndor - iXon Ultra 888 Dunning, Michael

Navigate by Date:
Prev: Re: I have some question.. in .proto and .db files Kasemir, Kay
Next: mrfioc2 loading error at vxWorks 6.9 김지화(빔라인장치팀)
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: AreaDetector ADAndor - iXon Ultra 888 Dunning, Michael
Next: Re: AreaDetector ADAndor - iXon Ultra 888 Dunning, Michael
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 15 Jul 2016 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·