# Allen Bradley Driver Differences

**URL:** <https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941>\
**Category:** Ignition\
**Tags:** ignition81\
**Created:** [September 24, 2025, 8:51pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941 "2025-09-24T20:51:35Z")\
**Posts on this page:** 12\
**Page:** 1

<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 24, 2025, 8:51pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/1 "2025-09-24T20:51:35Z")

</div>

I have built my UDTs around OPC tag paths based on Allen Bradley PLCs that are version v21+ so I’ve been using the Logix driver.

However, I now have one PLC that is lower than v21. Up until now I have been using the same Logix driver for this device connection but I have noticed that the tag connections are much slower so every once in a while the tags will get bad quality and have an overlay but then the tag updates again and it’s fine.

Assuming that the OPC tag paths are different between the drivers and I would not be able to simply use the existing UDT with the older driver, I’m wondering what the OPC tag path differences may be. Is this documented anywhere? And do the OPC tag paths differ between the CompactLogix and ControlLogix legacy drivers?

---

<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 24, 2025, 8:59pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/2 "2025-09-24T20:59:36Z")

</div>

Or if anyone has a solution to stop the tag from going into bad quality so often that would work 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:** [September 24, 2025, 9:30pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/3 "2025-09-24T21:30:49Z")

</div>

> [@amarks](#):
>
> Is this documented anywhere? And do the OPC tag paths differ between the CompactLogix and ControlLogix legacy drivers?

Hmm. Maybe?

But the differences can be automated with regex-based search and replace. Controller tags in the legacy format have an extra `global.` prefix, and all arrays have an extra named layer. (`SomeArray.SomeArray[0]` instead of just `SomeArray[0]`.)

Same in both ControlLogix and CompactLogix.

> [@amarks](#):
>
> has a solution to stop the tag from going into bad quality so often

Have you tried my alternate driver? (Keeps the v21+ OPC Item Path format and I don't recall significant performance probems.)

---

<div class="post-metadata">

**Author:** ![Tim](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/tim/32/3361_2.png) [@Tim](https://forum.inductiveautomation.com/u/Tim)\
**Post date:** [September 25, 2025, 8:12pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/4 "2025-09-25T20:12:47Z")

</div>

Which specific revision of v20? For example, if it is v20.19 performance will be bad with either driver and you probably will want to change the firmware.

---

<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 25, 2025, 8:26pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/5 "2025-09-25T20:26:46Z")

</div>

I’ve decided to just update the UDTs to include “Legacy\_Scope” parameter that appends to the OPC path. It’s an empty string by default

---

<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 25, 2025, 8:39pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/6 "2025-09-25T20:39:42Z")

</div>

> [@amarks](#):
>
> that appends to the OPC path. It’s an empty string by default

Unless you only have atomic tags, this won't cover all of your needs.

---

<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 25, 2025, 8:40pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/7 "2025-09-25T20:40:49Z")

</div>

Care to elaborate? In cases where arrays are used I also have a “Legacy\_Array” parameter.

I guess idk what constitutes an atomic tag vs a non-atomic tag.

---

<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 25, 2025, 8:44pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/8 "2025-09-25T20:44:00Z")

</div>

Arrays of UDTs containing array members? Or deeper nested? Keep in mind that the fragment need with arrays is not constant--it has to match the array name. You should spend some time browsing a legacy processor's tags.

{ I'd make separate UDTs for legacy versus modern. }

---

<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 25, 2025, 8:44pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/9 "2025-09-25T20:44:54Z")

</div>

I’ve tested it with my arrays. I will adjust as needed.

> [@pturmel](#):
>
> You should spend some time browsing a legacy processor's tags.

I did, and that’s how I came up with the format

Care to enlighten me on what atomic tags are or what a non-atomic tag would be?

---

<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 25, 2025, 8:46pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/10 "2025-09-25T20:46:50Z")

</div>

Atomic tags are non-array non-UDT simple tags.

---

<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 25, 2025, 8:47pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/11 "2025-09-25T20:47:44Z")

</div>

Got it. Yes, those would need to be handled on a case-by-case basis for those individual tags

---

<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 25, 2025, 8:55pm UTC](https://forum.inductiveautomation.com/t/allen-bradley-driver-differences/110941/12 "2025-09-25T20:55:35Z")

</div>

FWIW anyone who finds this and wants to do the same, make sure you enter a character in the string parameter default value and then remove it otherwise you’ll get “null” instead of ““
