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  <20212022  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  2016  2017  2018  2019  2020  <20212022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Getting severity string from a PV in recent versions of EPICS
From: "Johnson, Andrew N. via Tech-talk" <tech-talk at aps.anl.gov>
To: "Sobhani, Bayan" <bsobhani at bnl.gov>
Cc: EPICS tech-talk <tech-talk at aps.anl.gov>
Date: Wed, 30 Jun 2021 17:53:35 +0000
Hi Alex,

On Jun 30, 2021, at 11:07 AM, Sobhani, Bayan via Tech-talk <tech-talk at aps.anl.gov> wrote:

After upgrading EPICS, I started getting this message for some PVs:
 
missing record support entry table Record Support Routine (get_enum_str) Record Type ai PV XF:28ID1-CT{RG:B1}T-I.SEVR  dbGetField
 
It seems to be because I am converting an enum to a string in:
 
field(INPA, "$(Sys)$(Dev)T$(N_T)-I.SEVR")
field(FTA, "STRING")
 
This used to work in previous versions of EPICS, and in fact I can get the problem to go away if I read the PV over channel access, like: "$(Sys)$(Dev)T$(N_T)-I.SEVR CP”
 
So I am wondering: What is the recommended way to get the severity string from a PV in recent versions of EPICS?

That should work as you expected using a DB link, but it seems to have been broken by some recent changes to the IOC on the 7.0 branch (it’s fine in 7.0.4, not sure about 7.0.4.1):

woz$ cat ~/db/test.db 
record(ai, "ai") {}
record(stringin, "si") {
  field(INP, "ai.SEVR")
}
woz$ ./base-3.15/bin/darwin-x86/softIoc -d ~/db/test.db
Starting iocInit
############################################################################
## EPICS R3.15.9
## EPICS Base built Jun 30 2021
############################################################################
iocRun: All initialization complete
epics> dbpf si.PROC 1
DBR_UCHAR:          1         0x1                 
epics> dbgf si
DBR_STRING:          "INVALID"          
epics> woz$ 
woz$ ./base-7.0/bin/darwin-x86/softIoc -d ~/db/test.db
Starting iocInit
############################################################################
## EPICS R7.0.5.1-DEV
## Rev. R7.0.5-264-g7ca25d3c888c56844877-dirty
############################################################################
iocRun: All initialization complete
epics> dbpf si.PROC 1
missing record support entry table Record Support Routine (get_enum_str) Record Type ai PV ai.SEVR  dbGetField

DBF_UCHAR:          1 = 0x1

I’m pretty sure I know where the problem came from, in the mean-time your CA work-around is probably the best solution, until we can ship a fix.

Thanks for the bug report, I have filed it as an issue in GitHub.

- Andrew

-- 
Complexity comes for free, simplicity you have to work for.


References:
Getting severity string from a PV in recent versions of EPICS Sobhani, Bayan via Tech-talk

Navigate by Date:
Prev: Getting severity string from a PV in recent versions of EPICS Sobhani, Bayan via Tech-talk
Next: EPICS interface for Edwards nXDS scroll pump Raymond Juras 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  <20212022  2023  2024 
Navigate by Thread:
Prev: Getting severity string from a PV in recent versions of EPICS Sobhani, Bayan via Tech-talk
Next: EPICS interface for Edwards nXDS scroll pump Raymond Juras 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  <20212022  2023  2024 
ANJ, 30 Jun 2021 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·