Slow response from AB PLC5

I am connecting to an old PLC5 through a 1761-NET-ENI module. I am able to connect and browse fine, however it is SLOW. As I start to add > 60 tags, my quality and response is dropping out. All my tags are flashing red. I am not sure what is going on.

Below is the diagnostics. Why is the queue time so high? I have tried using a connection path of (1,0) and no connection path in the driver settings and it behaves the same.

Request Cycle
Request Throughput	20.6/sec
Min Request Duration	9.0ms
Max Request Duration	459.0ms
Avg Request Duration	76.8ms
Last Request Duration	40.0msRefresh
@1000ms
Request Count	82
Request Throughput	20.6/sec
Min Request Duration	54.0ms
Max Request Duration	14174.0ms
Avg Request Duration	4002.5ms
Last Request Duration	4009.0ms
Avg Wire Time	76.8ms
Avg Queue Time	3935.8msRefresh

Changing the connection path will have no effect on the throughput.

The diagnostics show that you are only getting 20.6 requests per second but you need 82 to prevent timeouts. It also shows that the wire time is 76.8mS. This is the time it takes for a request to pass over the Ethernet, through the NET-ENI, through the RS232 communication, time for PLC-5 to process it and back. Doing the quick calculation: 1 (sec) / .0768 (wire time) equals 13. Which is roughly the number of requests that can occur per second based on the average wire time.

Here are a couple of things to check or do:

  • The RS232 baud rate between the NET-ENI and PLC-5 is set to the highest possible rate.
  • Are there other communication requests going to the PLC-5 from other system (like Panel View, another HMI, other PLCs or RSLogix)? If there is, the RS232 bandwidth will be shared with Ignition.
  • Use different scan rates that will reduce your total requests/sec down to around 13.
  • Make sure the addresses you are reading out of the PLC-5 are grouped together. For example C5:100.ACC, T4:10.ACC. N7:0 will take three requests. If they are grouped together into one file say N10:0 thru N10:2 then it will only be 1 request.

If the PLC5 program is large, you may have a CPU utilization problem.
If possible put the PLC in program mode and see if the throughput increases.
And as suggested previously, contiguous memory reads are the best way to go.

Thanks for the help. I am investigating it further. Looks like I am maxed out at 19K on RS232 speed! :laughing: Looks like the PLC processor usage is not even close to maxed out, just mostly seems to be a limit of the RS232.

I am glad to know about grouping, I will re-factor some of my tags to take advantage of that.

[quote=“ryanjmclaughlin”]Thanks for the help. I am investigating it further. Looks like I am maxed out at 19K on RS232 speed! :laughing: Looks like the PLC processor usage is not even close to maxed out, just mostly seems to be a limit of the RS232.

I am glad to know about grouping, I will re-factor some of my tags to take advantage of that.[/quote]

plctalk.net/qanda/showthread.php?p=520820

see the above that I posted. It looks like the net-eni may be part of your problem. If you have a protocol converter like a digi one iap or lantronix, that may solve your problem. the net eni is a piece of crap to put things bluntly, and I would not be surprised if it is the main culprit in your problem.

How do I group the tags? For ex, I want to grab all of N7 from the PLC5.

The Ignition driver will automatically optimize the request. The driver looks at the gap between two addresses and if the gap is less than 10 it will go ahead and read all addresses in between. For example, reading N7:0, N7:1, N7:9 and N7:12 will be optimized into one request. Keep in mind each file will be in a separate request. For example, reading N7:0 and N8:1 will be separated into 2 requests which is dictated by the protocol.

So, I am noticing the grouping working, but now I am noticing another issue. It does not appear that any counters group…

For example if I request N9:0-N9:6 it is one request, but if I request C5:0.ACC - C5:6.ACC it is 6 requests. Most of my application is reading counter accumulators. Is there any way to get the driver to optimize this? Do I need to write a bunch of logic to copy the ACC values to a data table? I have about 100 counters I need to read in Ignition.

Thanks for the help!

Unfortunately, it will not group C5:0.ACC through C5:6.ACC into one group. This is because there is actually other elements in between such as C5:0.PRE and C5:0.CTL.

One other thought, make sure you the Disable Processor Browse setting is selected in the device settings advanced section. This will disable the automatic browse of the processor data table layout which takes up bandwidth (especially when the processor has numerous data table files). Even though the automatic browse only happens when when viewing addresses in the OPC browser or Quick Client, it still can impact you occasionally. Keep in mind, you will have to click the refresh browse in the rare event that the processor data table layout changes.