1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 <2025> | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 <2025> |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Areadetector Plugin Enable/Disable Issue and Design Question |
From: | Mark Rivers via Tech-talk <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>, "Blomley, Edmund (IBPT)" <edmund.blomley at kit.edu> |
Date: | Fri, 21 Mar 2025 13:53:38 +0000 |
Hi Eddy,
That should definitely not be happening, I have never heard of that issue before.
Just to be sure it is not a problem with the GUI please test it as follows:
camonitor *:Proc1:EnableCallbacks *:Proc1:EnableCallbacks_RBV
caput *:Proc1:EnableCallbacks 1
caput *:Proc1:EnableCallbacks 0
Send the output of both windows.
Your plugin chain looks fine to me. Note if you load the commonPlugins.cmd from ADCore/iocBoot then the only thing you would have needed to add to your startup script are the 2 NDStdArrays plugins. You can then just "wire" the other plugins at run-time, and
the configuration will be saved with autosave.
Mark
From: Tech-talk on behalf of Blomley, Edmund (IBPT) via Tech-talk Sent: Thursday, March 20, 2025 11:22 PM To: tech-talk at aps.anl.gov Subject: Areadetector Plugin Enable/Disable Issue and Design Question Hey all,
I am fairly new to using most of the areadetector plugins and I encountered one issue which seems rather confusing to me with the various Enable/Disable fields: If the setpoint (*:Proc1:EnableCallbacks) is changed to 1, the readback value (*:Proc1:EnableCallbacks_RBV) changes to 0. If the setpoint is changed to 0, the readback value changes to 1. But the process plugin actually seems to do its job if the _RBV is labled as "Disable" Similar story for the "Enable background" and its readback value. StdArrays and Stats behave the same way. But for my ROI plugin set and readback for the enable field are consistent. So I kind of wonder if I somehow messed up my plugin configuration, which brings me to the second question regarding plugin interaction/design: I am trying this setup: Camera -> raw picture (StdArray) -> process plugin (+ FileTiff Plugin) -> processed image -> ROI plugin -> stats plugin -> FileHDF plugin With the basic idea: optional background substraction feeding into optional ROI feeding into stats and file saving. Is this a "good" plugin design? ----------------------- st.cmd setup: [typical st.cmd header] ... [autosave config] epicsEnvSet("MODEL", "acA1920-25gm") epicsEnvSet("ELEMENTS", "2073600") epicsEnvSet("XSIZE", "1920") epicsEnvSet("YSIZE", "1080") aravisConfig("basler1", "Basler-$(MODEL)-$(SERIAL)", 1, -1, 0, 0) # Load default templates dbLoadRecords("$(ADARAVIS)/db/aravisCamera.template", "P=$(PREFIX),R=,PORT=basler1,ADDR=0,TIMEOUT=1") dbLoadRecords("db/Basler_$(MODEL).template", "P=$(PREFIX),R=,PORT=basler1,ADDR=0,TIMEOUT=1") # Raw Camera Image NDStdArraysConfigure("CA1", 5, 0, "basler1", 0, 0) dbLoadRecords("$(ADCORE)/db/NDStdArrays.template", "P=$(PREFIX),R=Image:,PORT=CA1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=basler1,TYPE=Int16,FTVL=SHORT,NELEMENTS=$(ELEMENTS),ENABLED=1") # Processing plugin NDProcessConfigure("PROC1", $(QSIZE=5), 0, "basler1", 0, 0, 0) dbLoadRecords("$(ADCORE)/db/NDProcess.template", "P=$(PREFIX),R=Proc1:,PORT=PROC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=basler1") # TIFF file plugin for background
NDFileTIFFConfigure("FileTIFF1", $(QSIZE=5), 0, "basler1", 0) dbLoadRecords("$(ADCORE)/db/NDFileTIFF.template", "P=$(PREFIX),R=Proc1:TIFF:,PORT=FileTIFF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=basler1") # Camera Image After Processing NDStdArraysConfigure("POST1", 5, 0, "PROC1", 0, 0) dbLoadRecords("$(ADCORE)/db/NDStdArrays.template", "P=$(PREFIX),R=ImageProcessed:,PORT=POST1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PROC1,TYPE=Int16,FTVL=SHORT,NELEMENTS=$(ELEMENTS),ENABLED=1") # Region of Interest Plugin NDROIConfigure("ROI1", $(QSIZE=5), 0, "PROC1", 0, 0, 0, 0, 0, $(MAX_THREADS=5)) dbLoadRecords("$(ADCORE)/db/NDROI.template", "P=$(PREFIX),R=ROI1:,PORT=ROI1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PROC1") # Statistics plugin on processed image NDStatsConfigure("STATS1", $(QSIZE=5), 0, "PROC1", 0, 0, 0, 0, 0, $(MAX_THREADS=5)) dbLoadRecords("NDStats.template", "P=$(PREFIX),R=Stats1:, PORT=STATS1,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=$(XSIZE),YSIZE=$(YSIZE),NCHANS=$(NCHANS=100),NDARRAY_PORT=PROC1") NDTimeSeriesConfigure("STATS1_TS", $(QSIZE=5), 0, "STATS1", 1, 23) dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=$(PREFIX),R=Stats1:TS:,PORT=STATS1_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS1,NDARRAY_ADDR=1,NCHANS=$(NCHANS=100),ENABLED=1") [more plugins] ... [ioc init] Cheers eddy |