I second BobB's post on the OMRON CJ Series PLC's. Up to 16 units with 2 ports per unit [32 Ports] can be used. Very flexible using either Transmit/Receive commands OR Protocol Macros [Customizable for each port] called from the PLC program and managed automatically AND independently of program scan. V. Powerful and Fast.
My 2 Cents.