Omron FINS TCP Communication Overload

Hi there. I'm communicating to a Omron CJ2M PLC with FINS TCP driver with Ignition and I checked some tags were being really slow refreshing its value. I separated some tags (4/200) to a faster tag group (mode: direct || data mode: subscribed || 100ms Rate). And the rest of the tags left them in default tag group with the same configuration except for the rate: 1000ms. And the behavior that I find is in the picture
Imagem1

I would understand this kind of response if I had tons of tags, but knowing that I have only 200/215 tags in total, and just 4 of them are in a faster rate tag group, is the result shown in the image expected? Or am I doing something wrong? In anyway, how can I improve communications so that I can avoid this overload and have more smooth reads from the PLC?

Some PLCs don't behave well when hammered at sub-second intervals.

You picture is low-resolution, so the response times aren't clear, but those indicate how quickly your PLC is responding to requests.

Based on the number of requests, I would guess your target tag addresses are scattered in the PLC, preventing bulk access to many tags with single requests. Try to fix that first.

I can’t tell for sure because it’s blurry, but those response times look like they are 3xx milliseconds… so your PLC is either already totally hammered and has no time for servicing comms, or you’re trying to access it remotely or over VPN or some other slow network.

Sorry about the Low Res photo. While I was waiting for a reply, I was trying some options on how to decrease the overload. And in the configurations of the device connection, I changed the Concurrent Requests from 2 to 8 (max) and improved a lot. Is it okay to leave it with 8? Or, you don't advise me at all to do it?
I changed back to 2 to get a better image of the first configuration explained:

In case the values are still not readable:

AGGREGATE STATS:
Request Count - 27
Throughput (Mean) - 7,73/sec
"" (1min) - 7.65/sec
Mean Response Time - 257.85ms

SAMPLED AT 100ms:
Request Count - 4
Throughput (Mean) - 1.8/sec
"" (1min) - 1.7/sec
Mean Response Time - 259.69ms
Mean Queue Duration - 1927.85ms
Actual Sampling Interval - 2027.85ms

SAMPLED AT 2000ms:
Request Count - 23
Throughput (Mean) - 5.94/sec
"" (1min) - 5.94/sec
Mean Response Time - 257.29ms
Mean Queue Duration - 1880.52ms
Actual Sampling Interval - 3880.52ms

Answering to your guess, yes my tag addresses are spreadout in the PLC, but it's not an option to organizing them. What other choices do I have?

If your four requests in the 100ms pace average 259ms each, then your hoped for 100ms polling is simply not possible.

I think you need to make it an option.

The items you need to sample together should be packed into contiguous register blocks so the IA driver can read them with a single request.

Also look at any settings on the PLC side that affect comms workload. (I'm not a Mitsu guy, so others will have to make suggestions.)

Also, if Ignition isn't physically on the same LAN as the PLC, fix that too.

I've putted a new photo with the values, even made a mistake of keeping 2000ms instead of 1000ms as in the beginning and the values are through the roof. Both PLC and Ignition are in the same network. I'm communicating through Wi-Fi but I've tested with ethernet cable and the stats don't improve at all.
The PLC has less than half of work memory, so it shouldn't be the PLC either. This doesn't seem like a normal behavior for these few tags. Am I missing something setting up comms?

It doesn't seem normal, but I'm not familiar enough with these PLCs to know what settings are available.

I would expect it has less to do with available memory and more to do with your program/cycle times, plus any available settings that affect comms servicing. Comms usually get serviced in whatever leftover time is available...

PLC program cycle is 3ms

I understand your point but I have strong beliefs it's not possible or at least it will be one if not the last thing to try. The PLC program is dense. Changing the addresses and areas of work of the PLC will just be high cost effort to make. + PLC program isn't being developed by me. I need to know that I've reviewed all the other options.

It's Omron PLC, not Mitsubishi. And even not being a PLC that I work on daily basis, I'm confident that there were no settings that I missed that could affect communications this "bad".

Both Ignition and PLC are in the same LAN. Most of the times wireless but I already tried with cable and didn't see any improvement at all.

What is your opinion on increasing the value of "Concurrent Requests" in the Device configuration? Because I did increase the value and it helped a lot, but what's the downside?

If your PLC has free memory, consider copying the critical values into a contiguous block in your PLC logic. They'd be effectively read only, but you could read them much more efficiently.

I'd do it. Up to the point where it doesn't help any more.

1 Like

Usually the downside is more load on the PLC, and you can only increase it if there is available overhead.

That you're able to increase it suggests to me this is still a network latency problem... your response times are 10x what they should be.

I'll see what I can do about it. Thanks

I maxed it out to 8 then. It helped significantly

What model is this? If NJ or NX, you might try my EtherNet/IP driver for named tag access:

I maxed out the value of concurrent request to 8. And the overload values decresead significantly. Check the photo I sent to the previous reply

The router is already old. But the online mode of the PLC values are changing smoothly in the PLC software. So, it doesn't make sense to be a network latency.

:man_shrugging:

It's an Omron CJ2M

:smiling_face_with_tear:

Oh well. That processor doesn't do class 3 messaging. You can get a comm module to do class 1 I/O, which would be screaming fast, but much more trouble to set up. (And a different option in my module.)

You had right. It is still going to be complicated to place all tags desired to read/write from ignition in a contiguous way but I guess I'm forced to do it for efficiency. Sorry for refusing to try it out the first time you told me to.

I resetted the concurrent request value to 2(default value) before testing it out.

Behavior of an amount of tags when scattered across memory areas:

Behavior of the same amount of tags when in a contiguous register block:

Once again sorry for not testing it out as soon as told and thank you for the help!

2 Likes

Notice what you've done there is reduce the required number of requests from 4 to 1. This is obviously a big help, but it didn't really change your response times. There's still something unusual about how slow it is.

1 Like