Referencing tag in Alarm Display path does not work

Hi, I’m using Ignition 7.9.9:
I’m trying to build a UDT for alarming where I have 1 element that is the trigger which is a boolean array,
and my second element is a string array. I’m setting up an alarm on the trigger tag as referenced here: https://docs.inductiveautomation.com/display/DOC79/Array+and+Dataset+Tags
I cannot get the reference to the message tag to work within the alarm.
Referencing a tag directly works:

But if I try to reference the tag dynamically it fails back to the default display path:

I have tried some pretty hacky things trying to get this to work, but have not been successful. Any insights would be greatly appreciated

I reproduced the issue, and I wasn’t able to make it work this way. What I eventually ended up doing was kinda ugly, but it achieved a similar result… Unless someone else knows the “real” answer, here’s my suggestion:

Instead of using a string array, use a dataset with a string column. The code to access it is like this:

{[~]MessagesDataSet}[toInt(substring({itemName},
			indexof({itemName},"[")+1,
			indexof({itemName},"]"))),0]

I know it’s not an array like you wanted, but maybe this can at least get your alarm strings rolling out. Hope this helps!

1 Like

Interesting, yeah I should be able to get what I want from a dataset instead of a string array. I’ll give this a shot. Thanks!

Aaaand it worked. Here is basically how I set up the tag now:

When I connect to my PLC I will set up Messages to be an opc tag, and they just naturally copy over to my alarms dataset. By using your solution I can easily populate my alarms. Thanks!

I have a similar setup, but arguably simpler. I have a single integer, with an alarm for each bit state. Bit 0 references a string tag Message_0_, bit 1 references Message_1_ and so forth. The Display Path is linked to the message strings. This works for some of the alarms, but for others, the actual Display path of the bit is shown instead of the value of the string tag. These are configured exactly the same, so why do some work and others not. I verified the value in the target string tag is not null.



Anybody have any ideas? Thanks.

I think I figured it out. My integer tag was set to the default Engineering unit max of 100, but in fact should be 65535 to read all bits.