We are trying to set up our Dial-Out Alarms in a way that they can be enabled and disabled from buttons on the HMI screens, we still want the alarm to be active at all times but we want to decide whether it goes through the notification pipeline with the click of a button how could we go about only putting this value in the alarm pipeline when it is activated by the button
I realize this is an older post, however we are trying to accomplish this as well. Did you find a solution for this?
This type of logic typically needs to be placed on the Alarm Notification Pipelines itself.
Before the Notification block in the pipeline we would add either a Script or Expression block. For example, with an expression block we can utilize the tag() expression to read the value of a boolean tag when the alarm enters the pipeline. If the boolean tag is then setup to only be True when the users want notifications - we now have a toggle we can use to turn on and off notifications for that pipeline.
Got it.
Ideally we are looking to do this for individual alarms and not just enable/disable the Alarm Notification Pipeline altogether. Hopefully in a manner that would not involve setting up multiple pipelines.
Interesting. It is trickier for specific alarms. I have seen users overwrite the Alarm pipeline properties via scripting to set the alarms to empty pipelines when not desired and then reset them to the proper active pipeline when necessary.
A button with a script could manage most of this with the system.tag.configure() function. The “working with alarms” example on our documentation page would be a good starting point. The script would overwrite the pipeline properties on the alarm to swap the active pipeline name based on if it is enabled/disabled.
I have a script that is doing this, but whenever I write the pipeline path back into the property, it leaves the alarm as overridden, which is not desired.
Is there a way to return the alarm configuration to its non-overridden state?
This can be accomplished with a custom property on the Alarm that references a tag inside the UDT that links to the button. Using an expression or switch block would allow you to send the alarm to a dropout condition if your tag is a 0
event.cancelNotification() - this is the call to dropout in the Script block
I use this form for routes and priority evaluation and it works consistently
This is a method that substitutes which alarm property is being modified via the script, but it doesn't solve the underlying issue of the alarm overrides being persistent.
I specifically need to use the ability to reconfigure a large block of alarms at once via a script for my use case. And then later undo those changes and allow the alarms to go back to the non-overridden state.
It sounds like when the script runs to alter the alarm property the UDT instance member tag considers the override on the whole alarm.
The simplest way to remove an override is in the tag editor using the green dot.
There is discussion of scripting to remove overrides on UDTs mentioned in this thread, but it may not apply to your scenario: Is it possible to remove overrides on alarm properties in UDT instances thru scripting? - #2 by jlandwerlen