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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: issue with either camonitor or pcaspy in 3.15? |
From: | Wang Xiaoqiang <[email protected]> |
To: | Jameson Graef Rollins <[email protected]>, EPICS tech-talk <[email protected]> |
Date: | Mon, 20 Nov 2017 11:02:56 +0100 |
Hi Jamie,The UDF (UnDeFined) alarm and INVALID severity is to indicate the values are default values, have not got updated by the driver. This is the same behavior as the EPICS database gets initialized on start-up.
Calling setParamStatus to clear the alarm status is all correct. It is then necessary to call driver.updatePVs() to inform ca clients with a DBE_ALARM event update. Otherwise this update event will be delayed until the next driver.updatePVs() call. And in PCASpy 0.6+, every caput triggers a call to driver.updatePVs(). That explains seeing all four updates together, in which channel A gives a value update and B,C,D give an alarm update.
To conclude, it is an incompatible change introduced in PCASpy 0.6. I created an issue to track this.
https://github.com/paulscherrerinstitute/pcaspy/issues/48In any case, it is best to explicitly call driver.updatePVs() after calling setParam, setParamStatus, setParamEnums, setParamInfo. I will add this the docs.
Best Xiaoqiang On 11/19/2017 03:47 AM, Jameson Graef Rollins wrote:
On Fri, Nov 03 2017, Wang Xiaoqiang <[email protected]> wrote:Here is my test on linux-x86_64 arch, using pcaspy 0.7.0 anaconda package from https://anaconda.org/paulscherrerinstitute/pcaspy It does not reproduce the problem. Any chance that you could test using the same setup?Hi, Xiaoqiang. Thanks for confirming for me. I finally figured out what the issue was. In my test pcaspy IOC, on init I am attempting to clear the "UDF INVALID" flags with the following: for k in pvdb: driver.setParamStatus(k, pcaspy.Severity.NO_ALARM, pcaspy.Severity.NO_ALARM) In earlier pcaspy versions this was sufficient to clear the flags without causing any additional odd behavior. I see now that with 0.6 and later the issue I need to additionally call updatePVs() after the above: driver.updatePVs() Is this the right thing to do? Is there a cleaner way to clear the initial "UDF INVALID" flags? And why is the "UDF INVALID" set initially anyway? Thanks so much for the help. jamie.