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  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: Areadetector Plugin Enable/Disable Issue and Design Question
From: "Blomley, Edmund \(IBPT\) via Tech-talk" <tech-talk at aps.anl.gov>
To: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Fri, 21 Mar 2025 04:22:04 +0000
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=In
t16,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=basl
er1")

# 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=PROC
1,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),NCH
ANS=$(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

Attachment: smime.p7s
Description: S/MIME cryptographic signature


Replies:
Re: Areadetector Plugin Enable/Disable Issue and Design Question Mark Rivers via Tech-talk

Navigate by Date:
Prev: Re: [EXTERNAL] Re: Channel Access performance with RTEMS on MVME5500 Joel Sherrill via Tech-talk
Next: Registration, call for abstracts, and other deadlines - Spring 2025 EPICS Collaboration Meeting Ivan Finch - STFC UKRI via Tech-talk
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
Navigate by Thread:
Prev: Re: Converting Application using sumo Johnson, Andrew N. via Tech-talk
Next: Re: Areadetector Plugin Enable/Disable Issue and Design Question Mark Rivers via Tech-talk
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
ANJ, 21 Mar 2025 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions ·
· Download · Search · IRMIS · Talk · Documents · Links · Licensing ·