# Dynamic "Device connection" inside a UDT "OPC Item Path"

**URL:** <https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [January 12, 2026, 8:23am UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209 "2026-01-12T08:23:46Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![mirko.cerin](https://avatars.discourse-cdn.com/v4/letter/m/7feea3/32.png) [@mirko.cerin](https://forum.inductiveautomation.com/u/mirko.cerin)\
**Post date:** [January 12, 2026, 8:23am UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/1 "2026-01-12T08:23:46Z")

</div>

Hello everyone,

I’m making my first project in Ignition and the first thing I’m doing is preparing all the different UDT of the different objects I use inside my Siemens 1500 PLC (like valves, motor, analog signal etc…).

The problem I’m having right now is the dynamization of the device connetion at the start of the device connection since I’ll be using all these UDT in multiple project.

What I thought of doing was creating a “Memory tag” in the project called “PLC\_Connection” and use the string inside this tag as the name of the Opc connection but it gives me error and I can’t understand why.

Here’s the “OPC Item Path” of one tag inside my UDT:

`ns=1;s=[{PLC_Connection}]PLC.Blocks.DB_SPV_AIN.{InstanceName}.Bipolar`

If I write manually the name of the plc connection inside the expression the tag work just fine, while if I change the tag “PLC\_Connection” to the same value and add the tag in the expression, it doesn’t work.

Mirko Cerin

---

<div class="post-metadata">

**Author:** ![Jasmine\_Quick](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jasmine_quick/32/80380_2.png) [@Jasmine\_Quick](https://forum.inductiveautomation.com/u/Jasmine_Quick)\
**Post date:** [January 12, 2026, 8:32am UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/2 "2026-01-12T08:32:17Z")

</div>

In a UDT, {PLC\_Connection} is, in this case, expected to be a UDT parameter, which you can create a default value for, and override for the UDT instance as needed. Is there a particular reason you're not using the UDT parameters?

---

<div class="post-metadata">

**Author:** ![mirko.cerin](https://avatars.discourse-cdn.com/v4/letter/m/7feea3/32.png) [@mirko.cerin](https://forum.inductiveautomation.com/u/mirko.cerin)\
**Post date:** [January 12, 2026, 8:35am UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/3 "2026-01-12T08:35:52Z")

</div>

I’m not using a UDT parameter because I usually have around 20 to 30 object of this istance of this UDT in every project I make, not counting the other UDTs, so I was looking for a way to change the connection only once instead of doing it in every istance.

---

<div class="post-metadata">

**Author:** ![David\_Stone](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_stone/32/79749_2.png) [@David\_Stone](https://forum.inductiveautomation.com/u/David_Stone)\
**Post date:** [January 12, 2026, 8:46am UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/4 "2026-01-12T08:46:29Z")

</div>

Make all the UDTs, export the tags to file, open in a text editor, Find/Replace "[device]" then reimport tag file. Super simple, super easy. You're only setting this up once, so why make it recalculate every time?

---

<div class="post-metadata">

**Author:** ![mirko.cerin](https://avatars.discourse-cdn.com/v4/letter/m/7feea3/32.png) [@mirko.cerin](https://forum.inductiveautomation.com/u/mirko.cerin)\
**Post date:** [January 12, 2026, 8:54am UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/5 "2026-01-12T08:54:28Z")

</div>

It simply didn’t cross my mind abount exporting all the udts, and I also thought in case I add new instances while working it would be faster to do with the connection already set in the project.

---

<div class="post-metadata">

**Author:** ![David\_Stone](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_stone/32/79749_2.png) [@David\_Stone](https://forum.inductiveautomation.com/u/David_Stone)\
**Post date:** [January 12, 2026, 9:07am UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/6 "2026-01-12T09:07:27Z")

</div>

You can export only select tags if you want, then when you bring them back in you can use the import tool to define how they come back in. That way you make your new UDTs, export only them and modify those ones and reimport.  
Having random tags that are embedded in paths of other tags leaves a maintenance nightmare as none of the people following you will realise what the tag is, so maybe they delete the "unused" tags and everything disintegrates.

---

<div class="post-metadata">

**Author:** ![Jasmine\_Quick](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jasmine_quick/32/80380_2.png) [@Jasmine\_Quick](https://forum.inductiveautomation.com/u/Jasmine_Quick)\
**Post date:** [January 12, 2026, 9:13am UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/7 "2026-01-12T09:13:47Z")

</div>

I gave it a quick test in my own ignition designer, and only parameters are allowed to be bound in the OPC Item Path.

Your options are either using UDT params and updating them on every instance as necessary, or exporting, running find/replace on the json, and reimporting like Dave suggested.

If your naming convention has a decent pattern, you could also use the multi-instance wizard while doing the bulk setup.

---

<div class="post-metadata">

**Author:** ![mirko.cerin](https://avatars.discourse-cdn.com/v4/letter/m/7feea3/32.png) [@mirko.cerin](https://forum.inductiveautomation.com/u/mirko.cerin)\
**Post date:** [January 12, 2026, 9:31am UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/8 "2026-01-12T09:31:20Z")

</div>

Ok, then I’ll procede with the export/import of these tags.

Thanks both of you for your help.

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [January 12, 2026, 2:08pm UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/9 "2026-01-12T14:08:22Z")

</div>

Alternatively you could make a derived UDT that overrides the default parameter for each device that this UDT will connect to.

For instance The UDT `Block` would be the base then you could have `Block_A` and `Block_B` that are derived from the base UDT and override the default PLC\_Connection parameter to “A” and “B” respectively. Then make all your instances for A and B from those derived UDTs.

---

<div class="post-metadata">

**Author:** ![mirko.cerin](https://avatars.discourse-cdn.com/v4/letter/m/7feea3/32.png) [@mirko.cerin](https://forum.inductiveautomation.com/u/mirko.cerin)\
**Post date:** [January 12, 2026, 3:04pm UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/10 "2026-01-12T15:04:46Z")

</div>

Hi,

I tried it and it’s a pretty good workaround, thank you.

There’s only one problem, somehow, when I added the derived parameter to `Block_A`with the same name let’s say, I removed the overrided parameter in `Block_A` and now all the tag don’t work. Is this a problem already known? And if it is, is there a solution to it?

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [January 12, 2026, 3:11pm UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/11 "2026-01-12T15:11:39Z")

</div>

No, don’t remove it, don’t create a new one. Just change the value. You’re essentially creating a derived UDT (connected copy) that has a different default value.

---

<div class="post-metadata">

**Author:** ![mirko.cerin](https://avatars.discourse-cdn.com/v4/letter/m/7feea3/32.png) [@mirko.cerin](https://forum.inductiveautomation.com/u/mirko.cerin)\
**Post date:** [January 12, 2026, 3:29pm UTC](https://forum.inductiveautomation.com/t/dynamic-device-connection-inside-a-udt-opc-item-path/113209/12 "2026-01-12T15:29:08Z")

</div>

Ah ok, I tried but a couple of instances didn’t work, but there was an error with the Symbol name.

Thank you again for your suggestion.
