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: CA monitoring weirdness for status/severity |
From: | bob dalesio <[email protected]> |
To: | "Hogben, Colin H" <[email protected]> |
Cc: | EPICS tech-talk <[email protected]> |
Date: | Mon, 7 Aug 2017 08:22:28 -0400 |
Hi Andrew,
Thanks for your response.
>> My first surprise is that the HIGH field is reported as undefined, when it clearly has the value I configured.
There are 3 aspects to the camonitor output, and I think you're getting them confused.
I'm coming at this from the CA protocol perspective, and I'm aware that a CA_PROTO_EVENT_ADD response for TIME_DOUBLE contains status, severity and value (and also timestamp).
The <undefined> part means the record's time stamp is as yet unset, because it hasn't been processed yet. Similarly the UDF INVALID part means the record is still in a UDF alarm state because the VAL field hasn't been set. Note that the time stamp and alarm status and severity are related to the record as a whole, not to the particular field you're monitoring.
From the CA point of view, the .HIGH and .VAL are separate PVs; the protocol has no knowledge of what "record" or other concept may lie behind them. Even if the CA server is using some common status & severity for multiple PVs, I'd still expect it to report the same status & severity to all clients of any given PV.
chah:ao.HIGH <undefined> 11 UDF INVALID
The value changes as you expect, but the record still hasn't processed or been given a value to define the VAL field, so it's still undefined and in UDF alarm.
However, if I start a new camonitor, I get
gen-pub-11:~ $ camonitor chah:ao.HIGH
chah:ao.HIGH 2017-08-07 10:30:55.033976 11
Are you sure you didn't also do a put to the VAL field in between?
Yes, quite sure. Did you try it? BTW I forgot to say that this is with version 3.14.12.5 of base.
The change to the metadata implies that someone did since they are now set so the record has been processed.
It looks to me as though writing to .HIGH causes the record to be processed.
I've just discovered that if I do a second write to .HIGH, the original camonitor sees status=0 severity=0 and a valid timestamp when it receives the new EVENT_ADD. As though they're lagging behind by one update.
If you're going to be writing your own CA client code, you may not want to actually monitor the metadata for channels which aren't a record's VAL field, and make sure you're monitoring the right CA Event type as well.
Hmm, if status & severity aren't reliable other than for .VAL, it looks like I may have to apply some heuristics based on the PV name (eugh!).
--
Colin Hogben
Professional Software/Control Engineer
CODAS & IT Department
United Kingdom Atomic Energy Authority
Culham Science Centre
Abingdon
Oxfordshire
OX14 3DB
Tel : 01235 464948
Web: www.gov.uk/ukaea