I hadn't planned on putting a poll rate on the I/O, although it would be pretty easy to do. I would think that should be a standard thing in HMIs, though, given that for human interaction anything faster than about 50ms is overkill.
For planning purposes, think in terms of packets received per scan. It is completely arbitrary, but currently within one scan I'll accept 16 packets unconditionally, then the next 16 are time regulated. At 32, within a single scan, I shut off the interrupt until next scan. The time regulation I mentioned is to allow up to 16 additional packets to come in if the scan is long, but not to exceed a certain number of packets per unit of time. Packets that exceed that frequency are tossed on the floor. The whole thing sounds rather Rube Goldberg, but the goal is to handle normal packet traffic, but block out packet storms...malicious or otherwise. It works quite well.
I'd think you'd have to be pretty hard on the system for 32 inbound packets per scan to be a meaningful limitation. Of course that will affect the scan time accordingly, but fast enough is, well, fast enough. It's impossible for me to know what is fast enough for your app...so I won't pass judgement.
With most industrial protocols, it's a packet out and a packet back. TCP introduces a wrinkle in that the are additional acknowledgments at the TCP level that have nothing to do with the actual protocol...definitely not as efficient as UDP. I still think that for reasonable systems, neither bandwidth nor packet counts should be a problem. Somebody will break it though...there are folks that could break an anvil.
