I recently decided it was time to actually test the theories with scan rates for different structures in the PLC, and found the results below.
What I found (obviously) backed Phil's recommendations to only read UDT tags and to ensure that all members of them are set to at least read access. However what I found was negligible difference in response rate at 100ms when reading the UDT tags from within different structures (e.g. individual UDT instances at the root/controller level, addressing UDTs within an array, or addressing aliases to UDTs within an array)
Ignition request scan rate for all tests (except one): 100ms
Number of instances read: 250 (+800ish UDT tags outside of the test, however all are set to ext access = read/write)
Driver used: IA's Logix driver
PLC: L82
Test | Tag Count | Actual PLC Response Rate | Request Count |
---|---|---|---|
Individual UDT instances | 7845 | 100.39ms | 20 |
Individual UDT instances, Scan rate set to 1ms, CIP Connection Size = 4000 | 6787 | 1.05ms | 2 |
Array of UDT instances | 7845 | 101.19ms | 21 |
Aliases to each item in an Array of UDT instances | 7872 | 100.69ms | 21 |
AOIs with same tags as in UDTs | 7899 | 978.20ms | 303 |
Individual UDT instances with a single member set to External Access = None (Note: SCADA didn't actually read this tag) | 7845 | 714ms | 20 |
(all members set to read/write ext. access)
(all members set to read/write ext. access, CIP Connection Size = 4000)
(all members set to read/write ext. access)
(all members set to read/write ext. access)
(all members set to read/write ext. access)
Note: I think the slight difference in tag counts is a result of reading 1 or 2 fewer udt/aoi instances, but it shouldn't make much of a difference