Automation Professionals' EtherNet/IP Communication Suite V2

Wonderful! Thank you very much!

Hi Phil,
Finally got this module installed (and working) on a simulation gateway attached to a real NJ501 PLC.
Would you like any sort of data from it for your testing?

We're reporting the following performance with a concurrency of 2 on the device settings:

Yes, please. A minute of a wireshark capture would be helpful. With capture filter tcp and host w.x.y.z to minimize the noise.

Given the number of requests for the total number of items, and the poor response times, I'm going to guess there's a bunch of separate global variables preventing much optimization. (Arrays and structures, and arrays of structures, are optimizable. More specific advice for booleans is in the manual.)

Automation Professionals is pleased to announce the release of Maker Edition support.

This release is production-grade for all but the new Keyence KV support. That beta has new documentation in this release.

For Ignition v8.1+: v2.1.12.240241703

2 Likes

Just chatted with a user who noted that OPC Item paths the include subscripts or bit indices that have leading zeros will be misinterpreted. Because the parser in my module is using java.lang.Long.decode(), in which leading zeros trigger octal interpretation.

That method was chosen to support hexadecimal, which is unambiguously triggered by a leading 0x or #. Ignition's Logix driver doesn't do this.

So, I can replace the call to .decode() in just one spot with a call to .valueOf() instead, where all subscripts or bit inidices in simple tag paths are handled. That would make them reject hex, and not switch to octal for leading zeros. Where a user needs hex, the parenthesized token forms, which will continue using .decode(), can be used. Any path like someTag[0x123] can be rewritten someTag(member 0x123) to retain access to hex conversions.

Will include in the next release.

Automation Professionals is less than pleased to withdraw versions 2.1.11 and 2.1.12, due to a significant regression. First reported by a PlantPax user and quickly reproduced in my lab.

Use version 2.1.10.233501944 until I can bisect and fix.

Bisected and partially analyzed. Use-after-free (Byte Buffer soft cache) introduced by shared code for the new Keyence support. Fix for the Logix/NJ side applied, but it breaks Keyence. Will require more analysis to unbreak the latter. Tomorrow, I think. /:

4 Likes

Automation Professionals is pleased to announce a beta re-introducing Keyence support and Maker support: v2.1.13.240521644

The major fixes are:

  • Fix ValuesDecoder() runnable and its callers to avoid double BBSC.release()

  • Fix c.a.o.encap.DataCPF BytesSoftCache usage

  • Regularize CommonPacketFormat implementations' itemLen initialization

A few other minor improvements were swept up in this release:

  • Update HostDevice version report to RSLinx (2.0 => 2.1)

  • Reduce Keyence logging verbosity

  • Increase "Unexpected delay to accept" message to 2.5ms, and report in milliseconds

  • Increase context reported by CipNotEnoughException()

  • Improved logging performance in NettyEncapDecoder and NettyEncapEncoder at INFO level

I haven't finished QA on the Class1 (I/O, producer/consumer) parts of the driver, which is why this isn't a production release.

1 Like

Sweet!

Iโ€™ve been itching to add EtherNet/IP adapter functionality to one of my hobby hardware projects for a while now, this looks the spark that will push me to do it.

I found a regression on the Class1 stuff late this afternoon. If you want to do I/O in Maker, you should wait.

1 Like

Another beta: v2.1.13.240532100

  • Fixed year-old regression in Host Driver delivery of data type definitions to external users. Introduced with the first attempts to support alias members within data types. Impacted any forward definition (alias member before containing target member).

  • Fixed seven-year-old bug in Scanner mode that clipped output buffers to the size of the input buffer. Since most devices have larger input buffers, this didn't show up in the wild. Found with a pair of Ignition instances with Host Devices pointing at each other. Git Blame says this dates to the original scanner implementation, so not actually a regression. :man_shrugging:

1 Like

Automation Professionals is pleased to announce the production re-release of Keyence KV and Maker support.

For Ignition v8.1+, as usual: v2.1.13.240541805

I addition to the bug fixes of the betas, this release makes further tweaks to packet buffer recycling, for slower memory consumption under load.

Side note:

The Keyence disconnection problem is still present in my test environment. Suspiciously, the connection breakage always immediately follows an IGMP "Membership Query, General" sent by the KV-8000A to 224.0.0.1.

I set up my lab's MicroLogix 850 to make the same pair of requests per second to the KV-8k that my driver was making. It suffered the same disconnects, but recovered in a couple seconds each time, while my driver went through its longer disconnect/reconnect sequence.

Keyence Corporation never even acknowledged my bug report. ):

Good Morning Phil

How can I connect to an IFM device, specifically the VSE151?

The steps that I tried are as follows:
Generic EtherNet/IP Client Device
Then I only enter a name and IP address (with no port number).

The status of the driver then is "Probe CIP/EDS", even after I import the L5X and EDS files of the device.

Thank you very much.

Hi Pieter,

At a brief look, it will need the Scanner mode of the Host Device. Please send the EDS file and L5X files as attachments to my support email.

Edit: Perhaps include the user manual.

Automation Professionals is pleased to announce a new production release, upgrading Producer/Consumer tag support and fixing a minor bug in Host driver JSON exports.

For Ignition 8.1+: v2.1.15.241031951

(Yes, I skipped 2.1.14. There was a private beta that wasn't good enough, and was overtaken by other developments.)

Also, the producer/consumer tag support got a much-needed section of expanded documentation. See the Host Driver Application Notes, ยง6.3 and ยง6.4, in the updated manual.

Automation Professionals is pleased to announce a new production release, fixing bugs in L5X imports, including one regression on the built-in STRING structure type. Also fixes OPC interpretation of arrays of Logix strings, avoiding the need for the @string modifier when accessing leaf nodes in these arrays.

For Ignition v8.1.x, as usual: v2.1.16.241141850

1 Like

Hey Phil, if we import an L5X in your module and then change values in bulk, what options, if any, are there to save and merge these values with the original L5X to then be imported back into Studio 5000?

None that I support, sorry.

You may be able to excise the <Data.../> sections of a tag and inject my export's raw data in its place. But you may have to remove any seek= attribute and add that many bytes of 00 hex pairs at the front. And then add more 00 hex pairs at the end to match exactly the tag byte size.

Ok, just making sure I wasn't missing something that already existed.

If you ever get bored and just want something to do, that might be a cool little feature. :grin: