# Automation Professionals' EtherNet/IP Communication Suite V2

**URL:** <https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190>\
**Category:** 3rd Party Modules\
**Tags:** ignition81\
**Created:** [January 3, 2023, 10:16pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190 "2023-01-03T22:16:54Z")\
**Posts on this page:** 20\
**Page:** 11

<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:** [March 27, 2026, 2:39pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/203 "2026-03-27T14:39:19Z")

</div>

My driver's [user manual](https://www.automation-pros.com/enip1/UserManual.pdf) §3.3 has very specific application notes for best performance and compatibility with the NJ/NX family. While Omron modeled their EtherNet/IP support for compatibility with Logix PLC to PLC messaging, they did not implement everything found in Logix, and did some things differently.

The most important two things I recommend:

- Keep all UDTs' total size within ~1800 bytes, to fit the family's maximum CIP buffer size. Omron didn't implement Logix-style continuations, so cannot bulk read any UDT that is larger.

- Put all Booleans into UDTs and include at least one non-boolean member in such UDTs. (And include the non-boolean in the tag group with the booleans.) This dramatically improves the optimization of boolean subscriptions. (Do not use simple booleans or arrays of booleans outside UDTs. Horrible performance.)

---

<div class="post-metadata">

**Author:** ![konstantinetg](https://avatars.discourse-cdn.com/v4/letter/k/5f8ce5/32.png) [@konstantinetg](https://forum.inductiveautomation.com/u/konstantinetg)\
**Post date:** [March 27, 2026, 4:37pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/204 "2026-03-27T16:37:47Z")

</div>

Hi,

Thank you very much for your recommendations — I’m already working on optimizing the structures in my PLC project. I assume you are referring to UDTs defined in the PLC; please correct me if I’m wrong.

In my case, I have structures that include other structures and arrays of structures, and the total size of some structures can reach up to 4 MB (which is the maximum for the NX102).

Could you please clarify if the ~1800 bytes limitation applies to all structures, or specifically to individual UDTs being read? If I keep the lower-level (nested) structures within ~1800 bytes, would that help improve performance?

Also, I’ve seen posts on this forum mentioning load factor measurements. Could you please advise how to measure this? I would like to evaluate how the performance changes after optimizing my data structures.

Thank you again for your support!

---

<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:** [March 27, 2026, 4:42pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/205 "2026-03-27T16:42:22Z")

</div>

> [@konstantinetg](#):
>
> If I keep the lower-level (nested) structures within ~1800 bytes, would that help improve performance?

Yes, that will suffice. Minor hit for the extra path segment in the request, but probably not noticeable.

> [@konstantinetg](#):
>
> load factor measurements

There is a great deal of ambiguity (and bugs) in the various flavors of load measurement. This is what I recommend:

> [@Siemens Enhanced driver, slow browsing and slow update rate](https://forum.inductiveautomation.com/t/siemens-enhanced-driver-slow-browsing-and-slow-update-rate/114287/6):
>
> A technique I find helpful when comms performance varies is to use a fast-changing tag in the PLC (I tend to use a GSV to retrieve WallClock currentValue, a microsecond clock) and subscribe to it in Ignition. The ladder that updates the tag should run faster than the fastest poll rate you are attempting to achieve. This yields a valueChange for every poll cycle. Adjacent to the Ignition tag, add a memory tag of type Int8 and use a valueChange script on the OPC tag that looks something like th…

---

<div class="post-metadata">

**Author:** ![konstantinetg](https://avatars.discourse-cdn.com/v4/letter/k/5f8ce5/32.png) [@konstantinetg](https://forum.inductiveautomation.com/u/konstantinetg)\
**Post date:** [March 27, 2026, 7:19pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/206 "2026-03-27T19:19:50Z")

</div>

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

I’ve performed the test you suggested, and so far the results are quite disappointing — the update rate is around 13 seconds.

Do you think that optimizing the data structures (e.g., reducing UDT sizes and reorganizing them according to your recommendations) could realistically bring this down to around 1 second?

Thanks again for your guidance!

---

<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:** [March 27, 2026, 7:47pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/207 "2026-03-27T19:47:28Z")

</div>

What did you do? Drag all of the tags from the OPC browser to the Ignition tag browser? That will never be performant, unless the PLC is trivial. (My driver very deliberately includes data types with folder names, partly to discourage users from doing that.)

Segregrate the PLC content that is needed in Ignition from the PLC content that is purely internal (separate tags and UDTs). That is key to keeping the subscribed item count reasonable.

(Show us a screenshot of your device diagnostics page....)

---

<div class="post-metadata">

**Author:** ![konstantinetg](https://avatars.discourse-cdn.com/v4/letter/k/5f8ce5/32.png) [@konstantinetg](https://forum.inductiveautomation.com/u/konstantinetg)\
**Post date:** [March 27, 2026, 9:01pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/208 "2026-03-27T21:01:43Z")

</div>

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

Thank you very much for your advice — I really appreciate your guidance, which has already helped me achieve a much more acceptable update rate.

I did not import everything from the OPC browser. Instead, I created, in Ignition, a kind of “copy” of only the UDTs I actually need from the PLC, keeping only the tags that I plan to use. I also removed some tags that can be calculated on the Ignition side. At this point, I have about 78K+ subscribed tags.

The update time for the test tag is now no more than ~1.5 seconds. I believe there is still room for further improvement.

I hope the screenshot I provided is what you were looking for. Apologies if I misunderstood — I’m just getting started with Ignition and still exploring how best to work with it.

Thanks again — your help is truly invaluable.

---

<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:** [March 27, 2026, 10:14pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/209 "2026-03-27T22:14:11Z")

</div>

Try bumping up the concurrency setting.

---

<div class="post-metadata">

**Author:** ![konstantinetg](https://avatars.discourse-cdn.com/v4/letter/k/5f8ce5/32.png) [@konstantinetg](https://forum.inductiveautomation.com/u/konstantinetg)\
**Post date:** [March 28, 2026, 9:50am UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/210 "2026-03-28T09:50:40Z")

</div>

Thank you for your advice.

I’ve already tried increasing the concurrency setting. Setting it to 2 reduced the update time of the test tag by about 20% — from around 1.5 s down to approximately 1.2 s. Further increasing the concurrency didn’t have any noticeable effect on the update rate, so I decided to keep it at 2.

---

<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:** [March 28, 2026, 10:25am UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/211 "2026-03-28T10:25:29Z")

</div>

Ok. You might be at the performance limit for the item count.

The device diagnostics that show the histogram of response times would be a helpful screenshot.

---

<div class="post-metadata">

**Author:** ![konstantinetg](https://avatars.discourse-cdn.com/v4/letter/k/5f8ce5/32.png) [@konstantinetg](https://forum.inductiveautomation.com/u/konstantinetg)\
**Post date:** [March 28, 2026, 2:13pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/212 "2026-03-28T14:13:48Z")

</div>

I assume you would like to see something like the image below. However, for some reason, these histograms are not available in my web interface. I would actually like to find them myself — when I wrote my first message here, that is exactly what I was trying to locate.

The user manual for version 8.1 describes the diagnostic page functionality, but I cannot find these features in the web interface of version 8.3, despite trying. The PDF manual for the current version is unfortunately not available, and I was also unable to find a description of the diagnostic page features in the online documentation.

I think that later on I will implement something similar myself in Vision.

As requested, I will provide any information available to me. Your help is greatly appreciated.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/9/89bb79edbddd9244893373b33ecc7ecc781bbe68.png)

---

<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:** [March 28, 2026, 4:55pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/213 "2026-03-28T16:55:53Z")

</div>

Ah, you didn't make clear you were using v8.3. That piece is missing from my 8.3 driver. (IA refactored that interface.)

---

<div class="post-metadata">

**Author:** ![lane.duncan](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lane.duncan/32/83700_2.png) [@lane.duncan](https://forum.inductiveautomation.com/u/lane.duncan)\
**Post date:** [March 29, 2026, 5:10am UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/214 "2026-03-29T05:10:22Z")

</div>

> [@konstantinetg](#):
>
> The user manual for version 8.1 describes the diagnostic page functionality, but I cannot find these features in the web interface of version 8.3, despite trying.

I really found this page to be useful and was quite disappointed to see it removed from 8.3.

I hope IA brings it back to someday.

---

<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:** [March 29, 2026, 7:06am UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/215 "2026-03-29T07:06:16Z")

</div>

Not IA's fault for my drivers. They moved things around, as often happens in new major versions, and I missed that. Complicated by its absence in 8.3.0. It is on my to-do list.

---

<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:** [June 15, 2026, 2:10pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/216 "2026-06-15T14:10:59Z")

</div>

Automation Professionals is pleased to announce a new Production Release, fixing a bug in 16-bit CIP sequence number generation in Class1 assemblies and scanner output buffers.

For Ignition v8.3+: [v2.2.2.261632018](https://www.automation-pros.com/ignition/EthernetIP%20Class%201%20Communications-2.2.2.261632018-v83.modl)

Appears to affect the v8.1 release candidate, suggesting it was introduced with my `Device` model refactoring. ☹

Backport to follow.

---

<div class="post-metadata">

**Author:** ![Sanganak\_Kasare](https://avatars.discourse-cdn.com/v4/letter/s/8c91f0/32.png) [@Sanganak\_Kasare](https://forum.inductiveautomation.com/u/Sanganak_Kasare)\
**Post date:** [June 20, 2026, 4:40pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/217 "2026-06-20T16:40:11Z")

</div>

I am having this same issue when using the EtherNet/IP Class1 Host Device driver (using version 2.2.2).  
I am using a L5X from a Rockwell L7v37 project.  
The ignition quick client reads and writes with good quality however, the tags on default tag provider are bad with the following error:  
`Error("CreateMonitoredItems failed: Bad_UnexpectedError: An unexpected error occurred.")`  
I am running the gateway in docker v8.3.7 and playing around with deployment mode.  
I don't believe this is a deployment mode issue as I get the same error even without overriding this resource.

---

<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:** [June 20, 2026, 5:17pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/218 "2026-06-20T17:17:22Z")

</div>

Sounds like a bug. Does that error show up in the gateway logs? If so, can you send the complete backtrace to [support@automation-pros.com](mailto:support@automation-pros.com), please?

---

<div class="post-metadata">

**Author:** ![Sanganak\_Kasare](https://avatars.discourse-cdn.com/v4/letter/s/8c91f0/32.png) [@Sanganak\_Kasare](https://forum.inductiveautomation.com/u/Sanganak_Kasare)\
**Post date:** [June 21, 2026, 9:44am UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/219 "2026-06-21T09:44:04Z")

</div>

There was only 1 warning in the logs but related to 2nd device using the same driver.

Unable to setup slot 0, this device will not be reachable from the backplane.

I have sent though the logs and my driver config.

---

<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:** [June 21, 2026, 1:38pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/220 "2026-06-21T13:38:48Z")

</div>

> [@Sanganak\_Kasare](#):
>
> Unable to setup slot 0

If using multiple devices, they must be given unique slot numbers.

---

<div class="post-metadata">

**Author:** ![Sanganak\_Kasare](https://avatars.discourse-cdn.com/v4/letter/s/8c91f0/32.png) [@Sanganak\_Kasare](https://forum.inductiveautomation.com/u/Sanganak_Kasare)\
**Post date:** [June 21, 2026, 2:38pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/221 "2026-06-21T14:38:41Z")

</div>

I have one device set to Bus Slot 1 and other set to Bus Slot 0 (initially I had them both set to 0).  
When, the devices are set to different slot numbers I get most tags working in designer from device 2 and device 1 is hit and miss. But the quick client always works (even when both devices use the same slot number).  
Also, not sure if Local Addresses need to be set as these are currently blank for both devices.

---

<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:** [June 21, 2026, 4:04pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/222 "2026-06-21T16:04:22Z")

</div>

Local Addresses needs to be set to expose the Host Device to the outside world or to use Scanner mode to connect to I/O devices.

[Previous page](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190.md?page=10)

[Next page](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190.md?page=12)
