Get Value result from a bound SetpointA in OPC tag Alarm

I have an OPC tag measuring Vibration from 0 - 3.
The high alarm setpoint is defined in a PLC as 1, but can be modified.
I’m passing the high alarm setpoint into ignition as a separate OPC tag, and binding the value of the alarm setpoint to the setpointA of an alarm configured on the Vibration OPC tag for dynamic integration into the ignition alarm banner.
The problem is when I try to read the value of setpointA to build a ‘Moving Analog Indicator’, or display the alarm setpoint in any capacity, the result of the expression is ‘Null’. I don’t want to bind the Vibration OPC alarm setpoint directly to the analog indicator, as it would defeat the purpose of a template.

When I access the python dict of the alarm from the script console, the result is as follows:
{u’setpointA’: {u’bindType’: u’Tag’, u’value’: u’[.]Vibration HiHi Setpoint’}, u’label’: u’Vibration High High’, u’displayPath’: u’some path’, u’priority’: High, u’mode’: Above Setpoint, u’timeOnDelaySeconds’: 5.0, u’name’: u’HiHi’}

I believe the expression to get the value of the setpoint is trying to coerce {u’bindType’: u’Tag’, u’value’: u’[.]Vibration HiHi Setpoint’} into a float, which results in ‘null’.

Has anyone experienced this before and found a way around it?



It sounds like you want to be reading the tag’s alarm properties directly. That dictionary value for the setpointA is accurate. As you described, the setpointA is a binding to a tag and that is what the dictionary is showing us.

If instead we wanted to read the value of the setpointA from the alarm itself, we can do so by reading the tag directly. For example if I have an Alarm called “Reverse Flow Rate” on an OPC tag called “Flow Rate” , I can read that setpointA value with a function like so:"[default]Stations/Station 1/Flow Rate/Alarms/Reverse Flow Rate.SetpointA").

This returns the floating point value of the SetpointA.

Thanks Kvane.

So if I were to create a template internal property of type float and make the result of that internal property an expression as follows:
tag("[default]Stations/Station 1/Flow Rate/Alarms/Reverse Flow Rate.SetpointA")

I would expect to return the value stored in SetpointA, but instead it returns Null.

The expression evaluates to the correct SetpointA when SetpointA is a static value(ex: 2.0), but as soon as SetpointA is the result of a tag or expression binding, the expression on the template internal property returns Null.

Short of an explanation, I’m guessing this is a bug.