How does the Logix driver divide the tags into request counts

Optimization is per-tag. The services uses to make requests work, at most, per-tag. (Including aliases as tags.) Each service grabs contiguous bytes from the PLC's tag storage and deliver for decoding in Ignition. Where unambiguous, and no tag or member permissions problems interfere, and not an AOI, structures can be read in bulk. Saving much time on both ends. So too with arrays of structures.

Many small services can be bundled into a larger (composite) service, which further reduces the number of requests that cross the wire (as fitted into the connection buffer--see the advanced props), but that bundling adds some CPU time on the PLC side (to unmarshal the inner requests and marshal the responses back into as single response).

So, to go fast:

  • consolidate PLC tags into UDTs with no permissions restrictions,
  • make arrays, both of primitive types and structs,
  • avoid aliases like the plague (point Ignition at the target of the alias, not at the alias).
  • for any given PLC tag, make sure all OPC tags use the same pace

Also, review this entire topic:

{ Psst! And watch the 3rd party modules category.... }