# 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:** 9

<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:** [April 23, 2024, 9:17pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/163 "2024-04-23T21:17:52Z")

</div>

I certainly cannot regenerate a complete L5X--I throw away all the tasks, programs, routines, and controller properties.

But a feature to export all the raw data completely--maybe. (That's how this used to work--suppressing billions of zeros is the new-fangled design.)

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [May 6, 2024, 6:58pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/164 "2024-05-06T18:58:19Z")

</div>

Can we use `system.device.addDevice` to add an `EtherNet/IP Class1 Host Device`?

Are the keys documented anywhere?

---

<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:** [May 6, 2024, 7:02pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/165 "2024-05-06T19:02:50Z")

</div>

You cannot, effectively. There's no way to supply the required configuration XML.

I have to rework this for 8.3, so it will be possible at least by then.

---

<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:** [May 20, 2024, 7:01pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/166 "2024-05-20T19:01:36Z")

</div>

Automation Professionals is pleased to announce a new production release of this module. Highlights:

- Fixes another regression in L5X import/export related to clashes between Rockwell predefined types and ODVA CIP type names.

- Fixes gateway configuration of controller-scope tags with non-Rockwell features, like non-zero-based array dimensions.

- Fixes long-standing regressions in Designer-side live editing of Host Device instance data types and controller-scope tags.

- **Adds** Designer-side live editing of program-scope tags and program-specific code modules. Previously only configurable with XML import of the entire Host Device.

For Ignition v8.1+, as usual: ~~v2.1.17.241411841~~

Side note: Adding/removing program scopes in a Host Device instance is still only possible with XML import. This functionality is planned for a future release--certainly by v8.3, as the wicket editors in the gateway are going away and will not be replaced (as such).

---

<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:** [May 20, 2024, 7:08pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/167 "2024-05-20T19:08:18Z")

</div>

Note that if you **do** use non-Rockwell features in your tags and/or data types, expect external systems using a Logix driver to choke when browsing that Host Device.

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [May 20, 2024, 11:16pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/168 "2024-05-20T23:16:01Z")

</div>

Hey Phil, can you please give an example of a non-Rockwell feature?

---

<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:** [May 21, 2024, 2:02am UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/169 "2024-05-21T02:02:50Z")

</div>

Rockwell array tags can be up to three dimensional, but all subscripts begin at zero. Rockwell UDTs may have array members, but only single-dimensional, and still zero-based.

Omron and Keyence (and others, I think) support three-dimensional arrays for both tags and UDT members, and all of those dimensions can have a non-zero starting subscript.

Lots of odd differences with booleans, and boolean arrays, and UDT member alignment, and large variances in support for ODVA's elementary data types.

---

<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 25, 2024, 9:29pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/170 "2024-06-25T21:29:22Z")

</div>

Automation Professionals is pleased to announce a new production release, fixing an uncommon bug in Scanner mode connection breakage handling.

For Ignition v8.1+ as usual: ~~v2.1.18.241701138~~

The reporting client's environment takes multiple days of operation to show the flaw in question, which required a lengthy QA period to achieve confidence in the fix. I did not replicate the bug in-house, but the client's report was sufficiently detailed to allow static analysis to expose the flaw.

---

<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 23, 2024, 6:03pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/171 "2024-09-23T18:03:20Z")

</div>

Automation Professionals is pleased to announce that this EtherNet/IP driver suite is now available for purchase for Ignition Edge, with a steep discount. See Automation Professionals' updated Module Sales Policy here:

[https://www.automation-pros.com/Module%20Sales-2024-11-05.pdf](https://www.automation-pros.com/Module%20Sales-2024-11-05.pdf)

---

<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:** [October 16, 2024, 3:10pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/172 "2024-10-16T15:10:38Z")

</div>

Automation Professionals is pleased to announce a new production release, fixing another hard-to-hit bug in Scanner mode connection breakage handling.

For Ignition v8.1+: [v2.1.19.242671936](https://www.automation-pros.com/ignition/EthernetIP%20Class%201%20Communications-2.1.19.242671936-v81.modl)

This fix, generated a few weeks ago, has been simmering in the reporter's production environment to confirm the solution.

All users should upgrade.

---

<div class="post-metadata">

**Author:** ![Daniel\_Cochran1](https://avatars.discourse-cdn.com/v4/letter/d/6a8cbe/32.png) [@Daniel\_Cochran1](https://forum.inductiveautomation.com/u/Daniel_Cochran1)\
**Post date:** [November 13, 2024, 3:29pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/173 "2024-11-13T15:29:07Z")

</div>

Does this driver support Modbus TCP?

---

<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:** [November 13, 2024, 3:40pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/174 "2024-11-13T15:40:24Z")

</div>

No, but I have a separate driver that does:

> [@Automation Professionals' Advanced Modbus Driver](https://forum.inductiveautomation.com/t/automation-professionals-advanced-modbus-driver/41312):
>
> Automation Professionals is pleased to announce the first beta for its Advanced Modbus Driver, for Ignition version 7.9. Key features: Server mode, emulating one or more slave [devices](https://www.automation-pros.com/modbus/UserManual.pdf), using any of the three typical connection types, including simultaneous connections of multiple types. Client mode, incorporating all three connection modes in one driver. Support for Modbus Function Codes 20 and 21, File Records. Configure protocol tweaks for troublesome devices per slave unit, enabling suppor…

---

<div class="post-metadata">

**Author:** ![dws2384](https://avatars.discourse-cdn.com/v4/letter/d/df788c/32.png) [@dws2384](https://forum.inductiveautomation.com/u/dws2384)\
**Post date:** [December 9, 2024, 7:02pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/175 "2024-12-09T19:02:15Z")

</div>

Trying this driver out with an Omron NX102. Having a strange result where I can read the tags in the OPC quick client and get a result and good but in the designer tag browser I get 'BAD' value for the same ones. This is happening for many tags and structures but others are fine.

 ![Screenshot 2024-12-09 135906](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/a/4a3c74e5b66f3331a2d8c71daefb0c4faca9da55.png)  
 ![Screenshot 2024-12-09 140014](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/2/9287427d53fe68657b5f983d4a154d0ea8dc7f4a.png)  
 ![Screenshot 2024-12-09 140102](https://us1.discourse-cdn.com/inductiveautomation/original/3X/0/b/0b44fee3dcc1918f78466a9bdd1a34b51e385d20.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:** [December 9, 2024, 7:09pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/176 "2024-12-09T19:09:21Z")

</div>

Please send the diagnostic files from the device's `.../data/opcua/devices/` folder to my [Support Email](mailto:support@automation-pros.com).

I don't have an NX in my lab to work with.

---

<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:** [January 8, 2025, 7:33pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/177 "2025-01-08T19:33:26Z")

</div>

I'm running latest version of the communication suite (2.1.19 (b242671936)) on a 8.1.44 gateway and occasionally we get

```python
One-shot task com.automation_pros.enip1.GatewayHook$1@5ef56951 threw uncaught exception.

```

in our logs with a stack trace of just

```python
java.lang.NullPointerException: null

```

Both the gateway and module are running in trial mode as this is our dev/testing gateway. The module currently has 1 device defined as a `CipClientDev` with no tags configured at this time (we have been flipping between this and base Ignition driver)

From what I can see, this error appears in the logs around the time when:

- A user saves a project that causes the scripting engine to restart
- A designer websocket disconnects, either from closing designer or changing projects

There are a few cases where this seems to occur randomly or at least whatever occurs around the same time is not in the logs.

Is there any other place I can look for information to be able to send you to help narrow down the cause of the issue?

---

<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:** [January 8, 2025, 7:36pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/178 "2025-01-08T19:36:51Z")

</div>

Please add this (with unique index in place of `.8`) to your `ignition.conf`:

```python
wrapper.java.additional.8=-XX:-OmitStackTraceInFastThrow

```

That will yield a proper trace for that NPE.

---

<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:** [January 8, 2025, 7:52pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/179 "2025-01-08T19:52:39Z")

</div>

Added that line to the `conf` and now I can't get the exception to happen 🙃.

Maybe the server just needed a restart. I'll keep an eye on our logs for the next few days and hopefully it will pop up again.

---

<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:** [January 17, 2025, 9:29pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/180 "2025-01-17T21:29:26Z")

</div>

Ha HA! I managed to get the module to throw the NPE again.  
Stack Trace:

```python
java.lang.NullPointerException: Cannot read field "modules" because "this.sys" is null

at com.inductiveautomation.ignition.common.script.ScriptManager.createLocalsMap(ScriptManager.java:699)

at com.automation_pros.enip1.GatewayHook$1.run(GatewayHook.java:239)

at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:550)

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.base/java.util.concurrent.FutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.base/java.lang.Thread.run(Unknown Source)

```

I'll keep an eye out for any others that have a different reason listed.

This one seems to have been caused when I saved a change to an inheritable project's library script. This NPE was among a list of 'Restarting gateway scripts'

---

<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:** [January 17, 2025, 9:39pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/181 "2025-01-17T21:39:11Z")

</div>

Huh. That's not my code.

Or rather, code I run on a 500ms delay after my hook gets an `initializeScriptManager()` request can find the manager instance is bogus at that point.

Will fix. (More defensive code.)

---

<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:** [February 5, 2025, 10:51pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-ethernet-ip-communication-suite-v2/68190/182 "2025-02-05T22:51:20Z")

</div>

Automation Professionals is pleased to release a new **BETA** of this module. It is nearly functionally identical to v2.1.19, but more importantly, is a full conversion from the deprecated `Driver` interface to the modern `Device` interface.

The core conversion used in the Client option is the same code I used in my Modbus driver, so the diagnostics now follow the `SamplingMetrics` interface instead of the `PollingMetrics` interface.

The conversion of the Host and Target devices of the Adapter option was much more involved, and I took the opportunity to clean up some technical debt, unifying the address parsing and OPC datatype mapping across the entire driver. A happy side effect is that the Host and Target devices now support accessing one-dimensional arrays (and final dimensions of multi-dimensional arrays) of primitive numeric types as actual OPC arrays. Matching that existing capability of the Generic EtherNet/IP client.

Ryan's bug above is not yet solved.

This beta passed my internal QA just a little while ago.

Please test!

For Ignition v8.1.7+: ~~v2.1.20.250362234~~

Now I can focus on the new config model in v8.3. Oy!

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

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