Custom Alarms in perspective

I am developing dashboards for robot condition based monitoring. One major feature I need to implement is both the ability to real-time alarm end-users (through use of various components, like a flashing light, or simple text, but this isn’t my issue) and the ability to view all alarm history in an alarm table.


The problem is that each robot (which is connected on the gateway via OPC UA) is modeled as a UDT, with one notable “Alarm” tag that is an array 100 elements long. When a robot receives an alarm it will push the name of the alarm to the first open element, I believe in behavior similar to a stack.


I need to somehow translate this alarm array into a working alarm history and have the option to display any currently active alarms (currently active alarms are any names that are in the array, they clear and pop themselves when the robot doesn’t have that alarm anymore) with corresponding timestamps and status functionality. It would also be nice to customize names and priority levels as seen in the alarm tables.

I looked into adding alarms in the UDT for “any change” but there is no way to then parse out which active alarms are in the array and use them for my purposes. Thanks for the help!

Easiest option is probably a gateway tag change script, or a change script on the tag, that reads the array when it changes (or a timer, not sure how the change detection works with an array) and writes to some kind of UDT made of memory tags with the relevant alarms on them.

Are ignition alarms custom objects, like each alarm is a package of info - timestamp, name, priority, etc?

I understand scripting it all into some custom data structure to keep track of everything, but then how does that work with using the built in alarm features such as the alarm table. Can I format my data in some way that it is all compatible with the table and things like acknowledging, clearing, shelving?

Do you know what all the possible alarms for this system are that you would want to display? If you do I would create a memory tag for each and configure an alarm on these you would trigger.

The alarms are custom objects that include other information like display path, and other meta information, plus if you’re using an alarm journal extra information is stored in this relevant for each alarm instance (like user acknowledge time etc).

I guess you could create an alarm which you keep changing with new values. But I don’t know how this would mess up alarm journal and other features. Say the order switches a lot when alarms clear

I have no personal knowledge of what names could show up in the array. I have just been tasked with dealing with them so I need a way to dynamically show any active alarms and be able to put the name from the array alongside the timestamp it showed up and have statuses.

One thing to note is that the alarm array is historized “on change” to a postgres db (so anytime any element changes, whether somethin goes null and other alarms move up, or a new name is added, I believe all 100 elements get flashed to the db with a timestamp). There may be a way to script something so that it looks back for timestamps and values? Do you know how to create an alarm object? I could look into querying for any non-null array elements and try to structure those into the object that could be used in alarm tables