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  <20252026  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  <20252026 
<== Date ==> <== Thread ==>

Subject: asyn:READBACK making aao record process
From: Marco Filho via Tech-talk <[email protected]>
To: tech-talk <[email protected]>
Date: Thu, 23 Oct 2025 14:52:32 +0000
Hi, all. One more question about asyn:READBACK:

I have an IOC with two array records (one aai and one aao):

record(aao, "$(P)$(R)$(RING)$(NODE)$(HYB)$(VMM)$(CH)-S") {
field(DESC, "Set $(CH) channels array")
field(DTYP, "asynInt8ArrayOut")
field(NELM, "64")
field(FTVL, "CHAR")
field(SDIS, "$(P)$(R)#$(RING)$(NODE)$(HYB)CalcDISA")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_$(VMM)_$(CH)")

#info(asyn:READBACK, "1")
info(autosaveFields, "VAL")
}

record(aai, "$(P)$(R)$(RING)$(NODE)$(HYB)$(VMM)$(CH)-R") {
field(DESC, "Get $(CH) channels array")
field(DTYP, "asynInt8ArrayIn")
field(NELM, "64")
field(FTVL, "CHAR")
field(SCAN, "I/O Intr")
field(PINI, "YES")
field(SDIS, "$(P)$(R)$(RING)$(NODE)Acquire-R")
field(PHAS, "1")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_$(VMM)_$(CH)")
}

And they seem to work out fine. However, when adding asyn:READBACK to the setpoint and putting a SCAN period of 1 second to the readback, I get a few weird behaviors.
First, the setpoint record starts processing every second (which doesn't happen for other non-array records with READBACK tag):

dbpf LAB-MARCO:NDet-VMM:000000SC-S.TPRO 1
DBF_UCHAR:          1 = 0x1   
scanOnce: dbProcess of Disabled 'LAB-MARCO:NDet-VMM:000000SC-S'
spare-ipc-02-3293375 > scanOnce: dbProcess of 'LAB-MARCO:NDet-VMM:000000SC-S'
scanOnce: dbProcess of 'LAB-MARCO:NDet-VMM:000000SC-S'

Second, and harder to describe, is that after a process called by my device API (which should have no interference in the EPICS module/driver) the arrays seem to become unresponsive: if I try to put values into it, they are immediately overwriten by the old values:

$ caput -a LAB-MARCO:NDet-VMM:000000SC-S 4 1 1  1 1
Old : LAB-MARCO:NDet-VMM:000000SC-S 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
New : LAB-MARCO:NDet-VMM:000000SC-S 64 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(vmm) marcofilho@spare-ipc-02:~$ caget  LAB-MARCO:NDet-VMM:000000SC-R
LAB-MARCO:NDet-VMM:000000SC-R 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

What is happening here? Is there a more proper way of doing this?
I tried changing the records to waveforms but didn't have much success...

Thanks in advance for any help,

Marco 

Navigate by Date:
Prev: Re: info tag asyn:READBACK doesn't work with record in OUT field of calcoout Marco Filho via Tech-talk
Next: Running EPICS on RTEMS/MVME3100 Marks, Nicholas 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  <20252026 
Navigate by Thread:
Prev: Re: info tag asyn:READBACK doesn't work with record in OUT field of calcoout Marco Filho via Tech-talk
Next: Running EPICS on RTEMS/MVME3100 Marks, Nicholas 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  <20252026 
ANJ, 19 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·