Hi,
Yesterday I was presented with a case that puzzles me. I thought I understand the behavior of alarms but it seems that I do not.
One (ai, “Soft Channel”) record in our system seems to be stuck in alarm state. See below for what CA and PVA report.
The record reports a MINOR alarm severity, even if the HIGH is set at 30 and the value is below (at 27.96).
The record gets its input from another record, so I thought that maybe the alarm is propagated from there, but the input link is set to NMS.
And, the origin record is not in an alarm state so that would be odd anyway.
What am I missing here?
(One interesting observation is that pvget -v lists severities as null, although they are set (for sure.) HSV is set to MINOR (1).
EPICS version in this case is 7.0.6.1, but I see this with 7.0.7 as well. I do not think that this is related to the alarm behavior though.)
The records do not latch alarm states, do they? Or have I been wrong all these years? (I tried some other records in a soft IOC and they behaved as I would expect.)
What is the purpose of the ACKS and ACKT fields (if the explanation would be too long to write here, I can try to figure out from the source code…)
I have read what the record documentation says, but it does not help me to understand how these are intended to be used.
(Just for curiosity, ACKS=INVALID and ACKT=YES for that record.)
Is there an explanation for this, or any ideas where to look at?
Timo
--
(epics) timokorhonen@nxnode-06:~$ caget -a DTL-010:EMR-TT-028:Temp
DTL-010:EMR-TT-028:Temp 2023-06-16 09:09:44.009138 27.96 HIGH MINOR
(epics) timokorhonen@nxnode-06:~$ pvget DTL-010:EMR-TT-028:Temp
DTL-010:EMR-TT-028:Temp 2023-06-16 09:12:21.929 27.94 MINOR DEVICE HIGH
(epics) timokorhonen@nxnode-06:~$ pvget -v DTL-010:EMR-TT-028:Temp
DTL-010:EMR-TT-028:Temp epics:nt/NTScalar:1.0
double value 27.96
alarm_t alarm MINOR DEVICE HIGH
int severity 1
int status 1
string message HIGH
structure timeStamp
long secondsPastEpoch 1686899551
int nanoseconds 309940000
int userTag 0
structure display
double limitLow 10
double limitHigh 150
string description "Temperature DTL-010 Tank, Location 028"
string units degC
int precision 0
enum_t form (0) Default
int index 0
string[] choices [Default, String, Binary, Decimal, Hex, Exponential, Engineering]
control_t control
double limitLow 10
double limitHigh 150
double minStep 0
valueAlarm_t valueAlarm
boolean active false
double lowAlarmLimit nan
double lowWarningLimit nan
double highWarningLimit 30
double highAlarmLimit 50
int lowAlarmSeverity 0
int lowWarningSeverity 0
int highWarningSeverity 0
int highAlarmSeverity 0
byte hysteresis 0
Dr. Timo Korhonen
Chief Engineer, Integrated Control System
European Spallation Source ERIC
P.O. Box 176, SE-221 00 Lund, Sweden
Visiting address: Partikelgatan 2, 224 84 Lund
Mobile: +46 721 79 22 31
E-mail: timo.korhonen at ess.eu
ess.eu