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: Re: Disable alarm at IOC via PVAccess
From: David Bracey via Tech-talk <[email protected]>
To: "Kasemir, Kay" <[email protected]>, Pierrick Hanlet <[email protected]>, "[email protected]" <[email protected]>
Date: Thu, 20 Nov 2025 21:47:27 +0000

Just tying up some loose ends here:

 

  1. softIocPVA gives a different result than softIocPVX, even though they are given the same database

 

DB file contents:

record(ai, "VAL1")

{

  field(VAL, "1")

  field(SCAN, "1 second")

  field(HIHI, "2")

  field(LOLO, "0")

  field(HHSV, "MAJOR")

  field(LLSV, "MINOR")

}

 

softIocPVA (pvxget VAL1):

VAL1

  struct "epics:nt/NTScalar:1.0"

  value double = 1

  alarm.severity int32_t = 0

  alarm.status int32_t = 0

  alarm.message string = "NO_ALARM"

< … snipped … >

  valueAlarm.active bool = false

  valueAlarm.lowAlarmLimit double = 0

  valueAlarm.lowWarningLimit double = nan

  valueAlarm.highWarningLimit double = nan

  valueAlarm.highAlarmLimit double = 2

  valueAlarm.lowAlarmSeverity int32_t = 0

  valueAlarm.lowWarningSeverity int32_t = 0

  valueAlarm.highWarningSeverity int32_t = 0

  valueAlarm.highAlarmSeverity int32_t = 0

  valueAlarm.hysteresis int8_t = 0

 

softIocPVX (pvxget VAL1):

VAL1

  value double = 1

  alarm.severity int32_t = 0

  alarm.status int32_t = 0

  alarm.message string = ""

< … snipped … >

  valueAlarm.lowAlarmLimit double = 0

  valueAlarm.lowWarningLimit double = nan

  valueAlarm.highWarningLimit double = nan

  valueAlarm.highAlarmLimit double = 2

 

  1. Per Kay’s response, setting any alarm condition’s severity (HHSV, HSV, LSV, LLSV) to NO_ALARM disables that alarm (and cancels that alarm if current)
    1. A PV really has four distinct alarms – all four severities would need to be set NO_ALARM to really “disable alarms” for the PV
    2. To re-enable alarms, you would have needed to have remembered the prior value to restore it (or just YOU’LL GET MAJOR AND LIKE IT)

 

  1. Setting valueAlarm.enable doesn’t seem to do anything

 

  1. pvput VAL1.HHSV 0   <= works

pvxput VAL1.HHSV 0   <= does not work  (Error St13runtime_error : Unable to assign value from "0")

pvxput VAL1.HHSV NO_ALARM   <= does not work  (Error St13runtime_error : Unable to assign value from "NO_ALARM")

 

From: Kasemir, Kay <[email protected]>
Date: Thursday, November 20, 2025 at 12:34
PM
To: David Bracey <[email protected]>, Pierrick Hanlet <[email protected]>, [email protected] <[email protected]>
Subject: Re: Disable alarm at IOC via PVAccess

[EXTERNAL] – This message is from an external sender

> I’m able to read the database fields STAT and SEVR with pvxget, but not allowed to set them with pvxput.

 

To disable alarms, you would not write to the STAT/SEVT but to the alarm configuration fields. For analog records that’s  LOLO, LOW, HIGH, HIHI and/or associated levels LLSV,LSV,HSV,HHSV.

 

For example, to disable a HIGH alarm you should be able to use any of

 

     caput  record.HSV NO_ALARM

      pvput  record.HSV NO_ALARM 

     pvxput  record.HSV NO_ALARM

 

But you might have found an issue in the PVXS command line tool, because the last line gives

 

      Error St13runtime_error : Unable to assign value from “NO_ALARM"

 

Should also be able to write the numeric values 0, 1, 2, 3 for NO_ALARM, MINOR, MAJOR, INVALID, and again that works with caput and pvput but pvxput  gives a similar error

 

     Error St13runtime_error : Unable to assign value from "0"

 

 

From: Tech-talk <[email protected]> on behalf of David Bracey via Tech-talk <[email protected]>
Date: Thursday, November 20, 2025 at 12:58
PM
To: Pierrick Hanlet <[email protected]>, [email protected] <[email protected]>
Subject: [EXTERNAL] Re: Disable alarm at IOC via PVAccess

This Message Is From an External Sender

This email was sent from a non-ORNL address. If suspicious, use the Report Phish button in Outlook.

 

I’m afraid I’m not having any luck with that.  I should mention that I’m using softIocPVX and pvxget/pvxput to experiment with this.

 

I’m able to read the database fields STAT and SEVR with pvxget, but not allowed to set them with pvxput.

 

One puzzling thing is that the NT representation of the alarm info is alarm_t and valueAlarm_t, but the valueAlarm_t is constructed without an ‘enable’ field.  However, there are plenty of examples on the internet that show the full valueAlarm_t, including enable and hysteresis.

 

Can anyone tell me what governs the generation of the ‘enable’ field, and if it does exist, can I expect it to disable/enable the alarm?  Again, I’m looking for a general solution for any IOC (EPICS 7), so I don’t want to require custom code.

 

From: Tech-talk <[email protected]> on behalf of Pierrick Hanlet via Tech-talk <[email protected]>
Date: Wednesday, November 19, 2025 at 4:38
PM
To: [email protected] <[email protected]>
Subject: Re: Disable alarm at IOC via PVAccess

Hi Dave,
One can change the alarm severity to NO_ALARM.
Cheers,
Pierrick

On 11/19/25 16:27, David Bracey via Tech-talk wrote:

Is it possible to disable a PV’s alarm at the IOC, using PVAccess, on a “stock” IOC/PV?  (i.e. no custom code added)

 

I see that using channel access, one can disable the entire PV (via the DISV/DISA db fields) – however we are not using channel access.

 

Defining a simple DB record for a PV:

 

record(ai, "VAL1") {

    field(VAL, "1")

    field(SCAN, "1 second")

    field(HIHI, "2")

    field(LOLO, "0")

    field(HHSV, "MAJOR")

    field(LLSV, "MINOR")

}

One gets the following from pvxget:

 

VAL1

    value double = 1

    alarm.severity int32_t = 0

    alarm.status int32_t = 0

    alarm.message string = ""

    timeStamp.secondsPastEpoch int64_t = 1763589981

    timeStamp.nanoseconds int32_t = 529070863

    timeStamp.userTag int32_t = 0

    display.limitLow double = 0

    display.limitHigh double = 0

    display.description string = ""

    display.units string = ""

    display.precision int32_t = 0

    display.form.index int32_t = 0

    display.form.choices string[] = {7}["Default", "String", "Binary", "Decimal", "Hex", "Exponential", "Engineering"]

    control.limitLow double = 0

    control.limitHigh double = 0

    valueAlarm.lowAlarmLimit double = 0

    valueAlarm.lowWarningLimit double = nan

    valueAlarm.highWarningLimit double = nan

    valueAlarm.highAlarmLimit double = 2

 

From reading the docs, I gather that before the valueAlarm_t type, there used to be an alarmLimit_t type, which had an “enable” field – but currently I don’t see a way to do this besides possibly resetting the valueAlarm limits, and I don’t want to do that.

 

Can anyone recommend a way to disable the alarm at the IOC, given these coditions?

 

Thanks!

 

  • Dave Bracey, Fermilab AD

 

-- 
Pierrick Hanlet
Fermi National Accelerator
Accelerator Front End Controls
+1-630-840-5555 -- lab
+1-312-687-4980 -- mobile
 
"Whether you think you can or think you can't, you're right" -- Henry Ford

 


Replies:
Re: Disable alarm at IOC via PVAccess Michael Davidsaver via Tech-talk
Re: Disable alarm at IOC via PVAccess Kasemir, Kay via Tech-talk
References:
Disable alarm at IOC via PVAccess David Bracey via Tech-talk
Re: Disable alarm at IOC via PVAccess Pierrick Hanlet via Tech-talk
Re: Disable alarm at IOC via PVAccess David Bracey via Tech-talk
Re: Disable alarm at IOC via PVAccess Kasemir, Kay via Tech-talk

Navigate by Date:
Prev: Re: Disable alarm at IOC via PVAccess Kasemir, Kay via Tech-talk
Next: Re: Disable alarm at IOC via PVAccess Michael Davidsaver 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: Disable alarm at IOC via PVAccess Kasemir, Kay via Tech-talk
Next: Re: Disable alarm at IOC via PVAccess Michael Davidsaver 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 ·