Updating Client Tag from alarm pipeline

Hello. Hoping you can help me out, I am fairly new to Ignition. I am trying to update a client tag from an alarm pipeline.

We have multiple PLC systems and I have added associative date to each alarm to indicate which PLC it relates to so that I can display only relative alarms to the various operators. Problem is that all the alarms go to one journal and I need a tag for each PLC system that gets updated whenever there are active alarms within each system.

I was trying to use the script block in a pipeline that updates a tag, but I’m not sure of the syntax. I was using the following:

system = alarmEvent.get(“System”)
if system == “Press”:
system.tag.write(“tag path”, value)

Can you help me figure out why that isn’t working? Or suggest a better way to isolate alarm status for each system? Thanks a lot

Good morning,

You are unable to set a client tag from an alarm pipeline because the alarm pipeline runs in the gateway, while client tags are only in each client. If you must use a tag from a pipeline, it must be a global tag.

An alternative to consider if you just want True/False for any alarms is the isAlarmActive() expression function. Define a client tag that is computed from this function, with suitable wildcards in the tagPath and alarmName arguments. You can’t use the associated data for this, unfortunately. But if your tags have a suitable naming hierarchy, you should get something equivalent.

Similarly, the sourceFilter property of the Alarm Status Table component will supply a matching list of alarms to your operator.

Morning. Thanks for the reply. Not sure why I didn’t think of that alarm function. Hard to think working nights sometimes I guess.

The weird thing is that I tried different types of tags to be updated from the pipeline including a memory tag. Any idea why that wouldn’t work? Is it scripting I tried using?

Thanks again for your help.

You could also use system.util.send message to dispatch a message from the pipeline to your clients.

Thanks guys. Using the active alarm function worked great. I just use the display path field to specify which system(s) each alarm applies to.