# OPC Item Path in UDT

**URL:** <https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777>\
**Category:** Ignition\
**Tags:** ignition81, vision\
**Created:** [September 19, 2025, 12:39pm UTC](https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777 "2025-09-19T12:39:10Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![gustavo.chamorro](https://avatars.discourse-cdn.com/v4/letter/g/eb8c5e/32.png) [@gustavo.chamorro](https://forum.inductiveautomation.com/u/gustavo.chamorro)\
**Post date:** [September 19, 2025, 12:39pm UTC](https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777/1 "2025-09-19T12:39:10Z")

</div>

Hi,

I would like to communicate with my PLC via Modbus TCP. As I will have several variables, to optimize and facilitate, I thought about using UDTs.

However, I encountered some difficulties:

![Captura de tela 2025-09-19 090736](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/c/4cae5bb54e13ba2c67ad17cdf46399437d2104ab.png)

1- I am totally dependent on my address. When I register it on the gateway, I cannot prevent it from appearing at the end, which defeats the purpose of using a UDT. If I have another PLC, I cannot reuse the UDT tags and need another UDT.

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/9/6944492fcbe5bf4f12db9ac080f14e9b16b2d0c2.png)

If I change the address, I will have to change it in the PLC, the gateway, and the UDT. If it were passed at the end by parameter {pump1}, I would use a single UDT, always associated with pump 1 or pump 2, not the address. For the same reason, I did this in my MQTT UDT.

Ex:

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/f/c/fc9cf935b6b691ff56a18114f5e30217ed8613d5.png)

2 - Looking at the forum, I found two ways to do it, but I don't know which one is best. Whether it's creating it through the gateway or creating it directly in the tag. Even so, it comes back to the UDT issue, which I'm lost on.

and creating through the gateway, I couldn't read two consecutive addresses ;-;

Created at the gateway:

 ![Captura de tela 2025-09-19 084733](https://us1.discourse-cdn.com/inductiveautomation/original/3X/a/c/ac4e1ffaf4cf55b59d04ff0435117727efff8a92.png)

Directly in the tag:

 ![Captura de tela 2025-09-19 084951](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/0/30442451bde9c9eed2eaa1a0d5718a5237eae681.png)

It's very likely that it's something simple that I'm not seeing.

---

<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:** [September 19, 2025, 1:14pm UTC](https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777/2 "2025-09-19T13:14:21Z")

</div>

I would create your base UDT and then create a UDT that uses it as the parent datatype. You could add a parameter for each OPC item path address on the child UDT. The structure of the UDTs would then remain the same and could use the same templates/views.

---

<div class="post-metadata">

**Author:** ![robertm](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@robertm](https://forum.inductiveautomation.com/u/robertm)\
**Post date:** [September 19, 2025, 1:40pm UTC](https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777/3 "2025-09-19T13:40:02Z")

</div>

Nm

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [September 19, 2025, 1:51pm UTC](https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777/4 "2025-09-19T13:51:15Z")

</div>

When connecting to Modbus devices, it's generally recommended to avoid using the Modbus mapping in the driver configuration. Instead, use the manual addressing approach in Ignition documented here:

> **[Modbus Addressing | Ignition User Manual](https://www.docs.inductiveautomation.com/docs/8.1/ignition-modules/opc-ua/opc-ua-drivers/modbus/modbus-addressing)**
>
> Manually Addressing a Modbus Device

Also if there's a pattern in the modbus addresses like there's a base address for a UDT set of tags with an offset, you can do parameters like this:

`ns=1;s=[{deviceName}]HR{baseAddress+9}`

Where your device name parameter is ET\_ASSIS and the base address parameter is 6000.

---

<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:** [September 19, 2025, 6:26pm UTC](https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777/5 "2025-09-19T18:26:46Z")

</div>

This is also how I’ve done Modbus UDTs, it means you can also manually override individual tag addresses that don’t match the pattern for any reason, and that override is per device.

---

<div class="post-metadata">

**Author:** ![gustavo.chamorro](https://avatars.discourse-cdn.com/v4/letter/g/eb8c5e/32.png) [@gustavo.chamorro](https://forum.inductiveautomation.com/u/gustavo.chamorro)\
**Post date:** [September 22, 2025, 1:08pm UTC](https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777/6 "2025-09-22T13:08:36Z")

</div>

**Michael,**

Thank you very much for your help!! I adopted this approach and am developing my application this way.

Just one last question I'm thinking about: why is it recommended to avoid configuring the Modbus mapping in the driver?

---

<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:** [September 22, 2025, 2:26pm UTC](https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777/7 "2025-09-22T14:26:43Z")

</div>

> [@gustavo.chamorro](#):
>
> why is it recommended to avoid configuring the Modbus mapping in the driver?

It is an extra configuration step when configuring/creating devices and OPC tags via automation. The only positive is that it gives you browsable addresses. (You can get browsable manual addresses with my alternate driver if you need that during development.)

---

<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:** [September 22, 2025, 2:32pm UTC](https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777/8 "2025-09-22T14:32:44Z")

</div>

> [@gustavo.chamorro](#):
>
> Just one last question I'm thinking about: why is it recommended to avoid configuring the Modbus mapping in the driver?

It also creates a level in indirection that makes troubleshooting and maintenance more difficult. You can no longer determine the actual Modbus address being read from looking at the OPC Item Path. Instead, you have to look at the path, go to the mapping table, do the lookup yourself, but not before you maybe deal with a non-standard radix conversion, maybe deal with address stepping, etc…

---

<div class="post-metadata">

**Author:** ![gustavo.chamorro](https://avatars.discourse-cdn.com/v4/letter/g/eb8c5e/32.png) [@gustavo.chamorro](https://forum.inductiveautomation.com/u/gustavo.chamorro)\
**Post date:** [September 22, 2025, 2:49pm UTC](https://forum.inductiveautomation.com/t/opc-item-path-in-udt/110777/9 "2025-09-22T14:49:48Z")

</div>

Thank you very much for clarifying that, and thank you very much for the attention of everyone who helped! 😀
