How to create a multi member UDT with various data types in Vision 8.1.1

Trying to create a UDT using Vision ver 8.1.1. but the custom properties are not updating with PLC changes

Are your custom properties bound to any PLC tags? If not then unless you actively write to them or have bindings on them they will not update their values.

All the items in custom are associated with my tags, for example, "tag_Name".InAlarm will be a 0 or 1 (true/false). In my PLC, my UDT is called alarms, and I will have 50+ alarm tags associated with this UDT

I may not have created the Ignition UDT correctly

I believe you may have.
if you haven't already, take a look at the Inductive University videos on UDTs (All the videos are free)

This is one of my Tags with members
image

Do all the inner alarm UDTs have that same structure?
If so, then make an ignition UDT that has 1 OPC tag for each of those members. Then configure the Ignition UDT to have an 'AlarmName' and 'AlarmIndex' parameter. Use these to build the dynamic OPC connection strings for each member of the inner PLC alarm UDT.

Quick example based on your PLC tag heirarchy:

Start of UDT structure with 2 members

Dynamic OPC path creation for 'Acked' UDT Member

Hopefully those help to convey the general approach you should take
From there, make a folder for each Alarms Array in the PLC in ignition and then use the multi instance wizard to populate it with the correct number of Alarm UDTs

I am not following something. does this path
image
correspond to this tree path
image
for my InAlarm member?
If so, how do I link my tag name "WCP_ATS_N_PWR_F" that correlates with the UDT name "ALARMS_WPC[5]?

My bad, this is my UDT tag name "WCP_ATS_N_PWR_F"

When you create a UDT instance, you provide values for the parameters.

So in your case, Ignition tag 'WCP_ATS_N_PWR_F' would be an instance of ignition Alarm UDT with parameters 'AlarmName' = WPC and 'AlarmIndex' = 5

That would result in ns=1;[Customer]Alarms_{AlarmName}.ALARMS_{AlarmName}[{AlarmIndex}].InAlarm evaluating to ns=1;[Customer]Alarms_WPC.ALARMS_WPC[5].InAlarm on UDT instance creation.

Looks better, but my UDT parameter
image
is not capturing the tagname for the instance. Isn't there a way for the UDT to capture it automatically?

{InstanceName} will grab the name of the current UDT instance when placed in the value cell

thanks

You might want to check this topic:

In particular, this part:

General tag configuration bindings only execute at tag startup or restart, which is triggered by UDT parameter writes. Alarm configuration properties are more tolerant, because they have to execute when an alarm triggers in order to capture associated data.

Custom property bindings on member tags of a UDT simply cannot subscribe to live data changes elsewhere. For alarm properties, they execute only when an alarm fires. Not live.

Thanks, but still having troubles.
My UDT setup is


My Tag setup is

and my UDT component setup is

But I am getting

Not sure what I a, doing wrong.

There's no OPC Server specified, if nothing else.

Thanks, not sure how I missed that. But still get same error message

Unless you configured the device to have the name "default" then the OPC Item Path is probably wrong too.

You are using the instance name to construct your OPC Item Path. Does WCP_ATS_N_PWR_F.InAlarm exist in your PLC?

The device name default is suspicious--like you are confusing Ignition tags with PLC tags--the latter are identified by OPC Item Paths.

Edit:

Based on the earlier posts, it seems your OPC Item Path needs to be
ns=1;s=[Customer]ALARMS_WCP[5].InAlarm. Place that as an override to test.

You have not created a parameter in your UDT that can carry the string
ns=1;s=[Customer]ALARMS_WCP[5]
as the base OPC Item address, so you will need to manually address every item in every instance of your UDT (which defeats its purpose).

If you'd like a shortcut for making UDTs for Logix processors, consider using my alternate driver module to make a connection to this PLC, which will produce UDT JSON files for you for every structure type in the PLC, suitably parameterized. Which you can then edit to produce the final structure your application needs on the Ignition side. (Prune unnecessary parts, add alarms, et cetera.)

(No need to buy a license--trial mode will do this, and the JSON files will work with IA's driver after the fact.)