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

**URL:** <https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445>\
**Category:** Ignition\
**Tags:** vision, ignition81\
**Created:** [December 21, 2023, 8:11pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445 "2023-12-21T20:11:27Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Brad\_Niemi1](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Brad\_Niemi1](https://forum.inductiveautomation.com/u/Brad_Niemi1)\
**Post date:** [December 21, 2023, 8:11pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/1 "2023-12-21T20:11:27Z")

</div>

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

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/1/6/167a35e8e1b10bea3dda4d88d266cc600fe395b4.png)

---

<div class="post-metadata">

**Author:** ![ryan.white](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan.white/32/73193_2.png) [@ryan.white](https://forum.inductiveautomation.com/u/ryan.white)\
**Post date:** [December 21, 2023, 8:29pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/2 "2023-12-21T20:29:30Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Brad\_Niemi1](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Brad\_Niemi1](https://forum.inductiveautomation.com/u/Brad_Niemi1)\
**Post date:** [December 21, 2023, 8:34pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/3 "2023-12-21T20:34:32Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Brad\_Niemi1](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Brad\_Niemi1](https://forum.inductiveautomation.com/u/Brad_Niemi1)\
**Post date:** [December 21, 2023, 8:35pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/4 "2023-12-21T20:35:15Z")

</div>

I may not have created the Ignition UDT correctly

---

<div class="post-metadata">

**Author:** ![ryan.white](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan.white/32/73193_2.png) [@ryan.white](https://forum.inductiveautomation.com/u/ryan.white)\
**Post date:** [December 21, 2023, 8:44pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/5 "2023-12-21T20:44:59Z")

</div>

> [@Brad\_Niemi1](#):
>
> 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

> [@Brad\_Niemi1](#):
>
> 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](https://www.inductiveuniversity.com/videos/understanding-udts/8.1) on UDTs (All the videos are free)

---

<div class="post-metadata">

**Author:** ![Brad\_Niemi1](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Brad\_Niemi1](https://forum.inductiveautomation.com/u/Brad_Niemi1)\
**Post date:** [December 21, 2023, 8:45pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/6 "2023-12-21T20:45:13Z")

</div>

This is one of my Tags with members  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/1/e/1e40f7a8065516988604434ff7b5a639be8c747a.png)

---

<div class="post-metadata">

**Author:** ![ryan.white](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan.white/32/73193_2.png) [@ryan.white](https://forum.inductiveautomation.com/u/ryan.white)\
**Post date:** [December 21, 2023, 8:55pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/7 "2023-12-21T20:55:20Z")

</div>

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**
>
> ![ExmapleAlarmUDT](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/2/3221e509141bd372c013b83d02a78eb5f8ac748d.png)

> **Dynamic OPC path creation for 'Acked' UDT Member**
>
> ![ExmapleAlarmUDT_2](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/8/9848e03298cdf08aa7aa837dbab46f186a7e7b03.png)

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

---

<div class="post-metadata">

**Author:** ![Brad\_Niemi1](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Brad\_Niemi1](https://forum.inductiveautomation.com/u/Brad_Niemi1)\
**Post date:** [December 21, 2023, 9:23pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/8 "2023-12-21T21:23:49Z")

</div>

I am not following something. does this path  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/c/e/cee53bd64888e8d01366010bf9d7089c3e7cbaba.png)  
correspond to this tree path  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/9/891d33c54a028766c1a0f15e670b7b3bbfa4286c.png)  
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]?

---

<div class="post-metadata">

**Author:** ![Brad\_Niemi1](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Brad\_Niemi1](https://forum.inductiveautomation.com/u/Brad_Niemi1)\
**Post date:** [December 21, 2023, 9:28pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/9 "2023-12-21T21:28:08Z")

</div>

> [@Brad\_Niemi1](#):
>
> "WCP\_ATS\_N\_PWR\_F"

My bad, this is my UDT tag name "WCP\_ATS\_N\_PWR\_F"

---

<div class="post-metadata">

**Author:** ![ryan.white](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan.white/32/73193_2.png) [@ryan.white](https://forum.inductiveautomation.com/u/ryan.white)\
**Post date:** [December 21, 2023, 9:29pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/10 "2023-12-21T21:29:13Z")

</div>

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

> [@Brad\_Niemi1](#):
>
> If so, how do I link my tag name "WCP\_ATS\_N\_PWR\_F" that correlates with the UDT name "ALARMS\_WPC[5]?

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.

---

<div class="post-metadata">

**Author:** ![Brad\_Niemi1](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Brad\_Niemi1](https://forum.inductiveautomation.com/u/Brad_Niemi1)\
**Post date:** [December 21, 2023, 10:19pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/11 "2023-12-21T22:19:42Z")

</div>

Looks better, but my UDT parameter  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/b/2b5847128f014127612157ca122e6bffb0ba03db.png)  
is not capturing the tagname for the instance. Isn't there a way for the UDT to capture it automatically?

---

<div class="post-metadata">

**Author:** ![ryan.white](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan.white/32/73193_2.png) [@ryan.white](https://forum.inductiveautomation.com/u/ryan.white)\
**Post date:** [December 21, 2023, 10:27pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/12 "2023-12-21T22:27:15Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Brad\_Niemi1](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Brad\_Niemi1](https://forum.inductiveautomation.com/u/Brad_Niemi1)\
**Post date:** [December 21, 2023, 10:35pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/13 "2023-12-21T22:35:48Z")

</div>

thanks

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 21, 2023, 11:38pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/14 "2023-12-21T23:38:40Z")

</div>

You might want to check this topic:

> [@Tag folder ability to have parameters](https://forum.inductiveautomation.com/t/tag-folder-ability-to-have-parameters/83147/7):
>
> Of course it would be nice. If the implementation doesn't crush your gateway hardware. The fundamental difference between the configuration bindings in UDT members and the bindings in expression tags and query tags, is that the latter subscribe to changes in the tags they reference, when in event driven mode, so they can re-execute to stay up to date. General tag configuration bindings only execute at tag startup or restart, which is triggered by UDT parameter writes. Alarm configuration pr…

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.

---

<div class="post-metadata">

**Author:** ![Brad\_Niemi1](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Brad\_Niemi1](https://forum.inductiveautomation.com/u/Brad_Niemi1)\
**Post date:** [December 28, 2023, 2:35pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/15 "2023-12-28T14:35:00Z")

</div>

Thanks, but still having troubles.  
My UDT setup is

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/1/21393a38982e6db49136e9f24005f177bec74b32.png)  
My Tag setup is  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/e/9ebb91904037a3faecf76f3ffe03c090d2a8e746.png)  
and my UDT component setup is  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/8/6830256572161690af8cb1f57185e8a280fd60a5.png)  
But I am getting  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/0/d/0db1cd77443dfae3508bc19b64fc760153690117.png)  
Not sure what I a, doing wrong.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 28, 2023, 2:36pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/16 "2023-12-28T14:36:39Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Brad\_Niemi1](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Brad\_Niemi1](https://forum.inductiveautomation.com/u/Brad_Niemi1)\
**Post date:** [December 28, 2023, 2:40pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/17 "2023-12-28T14:40:52Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 28, 2023, 2:43pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/18 "2023-12-28T14:43:22Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 28, 2023, 2:43pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/19 "2023-12-28T14:43:53Z")

</div>

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).

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 28, 2023, 2:54pm UTC](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445/20 "2023-12-28T14:54:35Z")

</div>

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.)

[Next page](https://forum.inductiveautomation.com/t/how-to-create-a-multi-member-udt-with-various-data-types-in-vision-8-1-1/83445.md?page=2)
