When using Ignition 8.3.0-beta4, I’m getting an expression error when using the isAlarmActiveFiltered expression.
I’ve got a template I’ve developed in Ignition 8.1.48 which uses a UDT that is tied to an alarm AOI in a Rockwell PLC. We handle all of our alarms in the PLC rather than using an analog tag in Ignition with multiple alarms configured on it. So essentially the UDT is looking at 4 bits for the high-high, high, low, and low-low alarm. It’s got additional tags for the current value, setpoints, etc.
My template displays the analog value and has an alarm indicator.
I have 4 properties on my template for each alarm priority, binded to this expression + some variation for each priority:
// Check if there is a critical alarm active belonging to the
// analog alarm UDT
isAlarmActiveFiltered({UDT_Tank.UDT_Tagpath} + “*”, “*”, “*”, 4, 4, 0, 1, 0)
This expression works well in Ignition 8.1.48, but in Ignition 8.3.0-beta4, I get this error:
java.lang.Exception: Error executing expression binding on
UDT_Tank.UDT_Tank.ALM_ActiveCritical
at com.inductiveautomation.factorypmi.application.binding.ExpressionPropertyAdapter.runExpression(ExpressionPropertyAdapter.java:92)
at com.inductiveautomation.factorypmi.application.binding.ExpressionPropertyAdapter.startup(ExpressionPropertyAdapter.java:113)
at java.base/java.util.LinkedHashMap$LinkedValues.forEach(Unknown Source)
at com.inductiveautomation.factorypmi.application.binding.DefaultInteractionController.startupBindings(DefaultInteractionController.java:379)
at com.inductiveautomation.factorypmi.application.binding.DefaultInteractionController.startupAdapters(DefaultInteractionController.java:383)
at com.inductiveautomation.factorypmi.application.components.template.VisionTemplate.startup(VisionTemplate.java:178)
at com.inductiveautomation.factorypmi.designer.workspace.WindowWorkspace.openTemplate(WindowWorkspace.java:2449)
at com.inductiveautomation.factorypmi.designer.workspace.WindowWorkspace.openTemplate(WindowWorkspace.java:2419)
at com.inductiveautomation.factorypmi.designer.model.navtree.TemplateNode.open(TemplateNode.java:137)
at com.inductiveautomation.ignition.designer.navtree.model.AbstractResourceNavTreeNode.onDoubleClick(AbstractResourceNavTreeNode.java:428)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.inductiveautomation.ignition.common.expressions.ExpressionException: Error retrieving alarm state from gateway.
at com.inductiveautomation.ignition.client.expressions.ClientFunctionFactory$IsAlarmActiveFilteredFunctionClient.execute(ClientFunctionFactory.java:231)
at com.inductiveautomation.ignition.client.expressions.ClientDynamicDispatchFunction.execute(ClientDynamicDispatchFunction.java:43)
at com.inductiveautomation.ignition.client.expressions.ClientDynamicDispatchFunction.execute(ClientDynamicDispatchFunction.java:43)
at com.inductiveautomation.ignition.common.expressions.FunctionExpression.execute(FunctionExpression.java:69)
at com.inductiveautomation.factorypmi.application.binding.ExpressionPropertyAdapter.runExpression(ExpressionPropertyAdapter.java:83)
... 22 more
Caused by: java.lang.ClassCastException: class com.inductiveautomation.ignition.common.rpc.impl.AlarmingRpc$IsAlarmActiveFilteredRequest cannot be cast to class java.io.Serializable (com.inductiveautomation.ignition.common.rpc.impl.AlarmingRpc$IsAlarmActiveFilteredRequest is in unnamed module of loader java.net.URLClassLoader @2417551d; java.io.Serializable is in module java.base of loader 'bootstrap')
at com.inductiveautomation.ignition.common.rpc.impl.AlarmingRpc$1.encode(AlarmingRpc.java:57)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeValue(ProtoRpcSerializer.java:119)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeRpcMessage(ProtoRpcSerializer.java:85)
at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.writeParameters(ProtoRpcSerializer.java:374)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.lambda$invoke$5(GatewayInterface.java:323)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invokeRaw(GatewayInterface.java:355)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:320)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayConnection$Rpc$RpcInvocationHandler.invoke(GatewayConnection.java:335)
at jdk.proxy2/jdk.proxy2.$Proxy60.isAlarmActiveFiltered(Unknown Source)
at com.inductiveautomation.ignition.client.expressions.ClientFunctionFactory$IsAlarmActiveFilteredFunctionClient.execute(ClientFunctionFactory.java:229)
... 26 more
Ignition v8.3.0-beta4 (b2025081810)
Java: Azul Systems, Inc. 17.0.15
For 8.3.0, I also tested just the regular isAlarmActive expression using the example from the manual and had no errors.
I tested the isAlarmActiveFiltered expression using the example from the manual and get the same error as my custom expression.