Hi all,
like announced in this tech-talk:
https://epics.anl.gov/tech-talk/2021/msg02173.php
I’m now trying to setup a FDS camera from Photonic Science with the ADPSL module. After adding some slightly changes to the Keywords that are send to the PSViewer-server or received from it, I can communicate with the
camera without any IOC-crashes. I forked the ADPSL-module here:
https://github.com/MichaS-git/ADPSL
However, from time to time I receive some deprecated images (some lines show ~50k counts, although it is a darkfield image and the rest image has ~200 counts) and the IOC shows this error code:
2023/03/02 16:51:43.266 PSL:getImage: error reading image, status=4, dataLen=12117504, nCopied=12117503, maxRead=1, nRead=1453
In the PSViewer (the vendor software that runs parallel) the image appears fine. It seems to appear random but I have the feeling that it happens more often when I increase the exposure time to higher than ~2s. Can anyone
say what that error with status=4 actually means?
Here is my complete IOC-start with the errors:
#!../../bin/linux-x86_64/PSLioc
## You may have to change PSLioc to something else
## everywhere it appears in this file
< envPaths
epicsEnvSet("IOC","PSLioc")
epicsEnvSet("TOP","/mnt/soft-bam01/epics/IOC/PSLioc")
epicsEnvSet("SUPPORT","/soft/epics/inst-3.15.7")
epicsEnvSet("ASYN","/soft/epics/inst-3.15.7/asyn/4-40-1")
epicsEnvSet("BUSY","/soft/epics/inst-3.15.7/busy/1-7-2")
epicsEnvSet("CALC","/soft/epics/inst-3.15.7/calc/3-7-4")
epicsEnvSet("SSCAN","/soft/epics/inst-3.15.7/sscan/2-11-3")
epicsEnvSet("AUTOSAVE","/soft/epics/inst-3.15.7/autosave/5-10-1")
epicsEnvSet("AREA_DETECTOR","/soft/epics/inst-3.15.7/areaDetector-R3-11")
epicsEnvSet("ADCORE","/soft/epics/inst-3.15.7/areaDetector-R3-11/ADCore")
epicsEnvSet("ADSUPPORT","/soft/epics/inst-3.15.7/areaDetector-R3-11/ADSupport")
epicsEnvSet("ADPSL","/soft/epics/inst-3.15.7/areaDetector-R3-11/ADPSL")
epicsEnvSet("EPICS_BASE","/soft/epics/base")
## Register all support components
dbLoadDatabase("../../dbd/PSLioc.dbd",0,0)
PSLioc_registerRecordDeviceDriver(pdbbase)
epicsEnvSet("PREFIX", "XRFDS:")
epicsEnvSet("PORT", "PSL")
epicsEnvSet("QSIZE", "20")
epicsEnvSet("XSIZE", "2744")
epicsEnvSet("YSIZE", "2208")
epicsEnvSet("NCHANS", "2048")
#epicsEnvSet("CBUFFS", "500")
# The search path for database files
epicsEnvSet("EPICS_DB_INCLUDE_PATH", "/soft/epics/inst-3.15.7/areaDetector-R3-11/ADCore/db")
###
# Create the asyn port to talk to the PSL server on port 50000
drvAsynIPPortConfigure("PSLServer","hzb1.exp.helmholtz-berlin.de:50000", 0, 0, 0)
asynOctetSetOutputEos("PSLServer", 0, "\n")
asynOctetSetInputEos("PSLServer", 0, "\n")
#asynSetTraceIOMask("PSLServer",0,2)
#asynSetTraceMask("PSLServer",0,255)
#asynSetTraceFile("PSLServer", 0, "PSLServer.out")
# PSLConfig(const char *portName, const char *serverPort,
# int maxBuffers, size_t maxMemory,
# int priority, int stackSize)
PSLConfig("PSL", "PSLServer", 0, 0)
#asynSetTraceIOMask("$(PORT)",0,2)
#asynSetTraceMask("$(PORT)",0,9)
dbLoadRecords("/soft/epics/inst-3.15.7/areaDetector-R3-11/ADCore/db/ADBase.template","P=XRFDS:,R=cam1:,PORT=PSL,ADDR=0,TIMEOUT=1")
dbLoadRecords("/soft/epics/inst-3.15.7/areaDetector-R3-11/ADCore/db/NDFile.template","P=XRFDS:,R=cam1:,PORT=PSL,ADDR=0,TIMEOUT=1")
dbLoadRecords("/soft/epics/inst-3.15.7/areaDetector-R3-11/ADPSL/db/PSL.template", "P=XRFDS:,R=cam1:,PORT=PSL,ADDR=0,TIMEOUT=1")
# Create a standard arrays plugin
NDStdArraysConfigure("Image1", 5, 0, "PSL", 0, 0)
dbLoadRecords("/soft/epics/inst-3.15.7/areaDetector-R3-11/ADCore/db/NDPluginBase.template","P=XRFDS:,R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PSL,NDARRAY_ADDR=0")
# Make NELEMENTS in the following be a little bigger than 2744*2208
dbLoadRecords("/soft/epics/inst-3.15.7/areaDetector-R3-11/ADCore/db/NDStdArrays.template", "P=XRFDS:,R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PSL,TYPE=Int16,FTVL=SHORT,NELEMENTS=6100000")
# Create a TIFF file saving plugin
NDFileTIFFConfigure("FileTIFF1", 20, 0, "PSL", 0)
dbLoadRecords("NDFileTIFF.template", "P=XRFDS:,R=TIFF1:,PORT=FileTIFF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PSL")
# Create 1 statistics plugins
NDStatsConfigure("STATS1", 20, 0, "PSL", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDStats.template", "P=XRFDS:,R=Stats1:, PORT=STATS1,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=2744,YSIZE=2208,NCHANS=2048,NDARRAY_PORT=PSL")
NDTimeSeriesConfigure("STATS1_TS", 20, 0, "STATS1", 1, 23)
dbLoadRecords("/soft/epics/inst-3.15.7/areaDetector-R3-11/ADCore/db/NDTimeSeries.template", "P=XRFDS:,R=Stats1:TS:, PORT=STATS1_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS1,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")
# Load all other plugins using commonPlugins.cmd
#< $(ADCORE)/iocBoot/commonPlugins.cmd
set_savefile_path("/soft/epics/IOC/PSLioc/iocBoot/PSLioc/autosave")
set_requestfile_path("/soft/epics/inst-3.15.7/areaDetector-R3-11/ADPSL/pslApp/Db")
set_requestfile_path("/soft/epics/IOC/PSLioc/iocBoot/PSLioc")
set_requestfile_path("/soft/epics/inst-3.15.7/areaDetector-R3-11/ADCore/ADApp/Db")
set_requestfile_path("/soft/epics/inst-3.15.7/calc/3-7-4/calcApp/Db")
set_pass1_restoreFile("auto_settings.sav")
iocInit()
Starting iocInit
############################################################################
## EPICS R3.15.7
## EPICS Base built Dec 20 2019
############################################################################
reboot_restore: entry for file 'auto_settings.sav'
reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.
*** restoring from '/soft/epics/IOC/PSLioc/iocBoot/PSLioc/autosave/auto_settings.sav' at initHookState 7 (after record/device init) ***
reboot_restore: done with file 'auto_settings.sav'
iocRun: All initialization complete
# save things every thirty seconds
create_monitor_set("auto_settings.req", 30,"P=XRFDS:,D=cam1:")
epics> auto_settings.sav: 352 of 352 PV's connected
2023/03/02 16:48:49.460 PSL:getImage: error reading image, status=4, dataLen=12117504, nCopied=12117502, maxRead=2, nRead=1377
epics>
epics> 2023/03/02 16:51:32.720 PSL:getImage: error reading image, status=4, dataLen=12117504, nCopied=12117503, maxRead=1, nRead=1185
2023/03/02 16:51:43.266 PSL:getImage: error reading image, status=4, dataLen=12117504, nCopied=12117503, maxRead=1, nRead=1453
2023/03/02 16:51:48.603 PSL:getImage: error reading image, status=4, dataLen=12117504, nCopied=12117503, maxRead=1, nRead=1959
2023/03/02 16:51:55.546 PSL:writeReadServer, status=1, sent
Stop
2023/03/02 16:51:55.552 PSL:getImage: error reading image, status=1, dataLen=12117504, nCopied=8333289, maxRead=2048, nRead=0
2023/03/02 16:51:55.581 PSL:writeInt32: error, status=1 function=8, value=0
2023/03/02 16:51:55.581 XRFDS:cam1:Acquire devAsynInt32::processCallbackOutput process write error
2023/03/02 16:52:05.499 PSL:getImage: error reading image, status=4, dataLen=12117504, nCopied=12117502, maxRead=2, nRead=1603
2023/03/02 16:52:10.847 PSL:getImage: error reading image, status=4, dataLen=12117504, nCopied=12117502, maxRead=2, nRead=51
Best Regards
Michael