The Opto22 Modbus toolkit is completely synchronous, which means it will wait for a response or timeout before it returns to your calling chart. So if you want to send a modbus command to two modbus TCP devices at the same time, then you need to run two separate charts. This is fine for most circumstances where you have a low number of devices/serial lines, or if you don’t need real quick response times.
I have been working on writing some modbus subroutines that allow asynchronous commands (which are inherently more complex to work with). The subroutine transmits the command and then returns, the next call will see if there is any response, and if not, immediately return. If it gets a response, it will then process it and return it. So you have to pass a “state” table to the subroutine each time you call it, and then check the status when it returns to determine if you are done or not.
If you are interested, I could send you a copy if you are willing to test - I will need to clean up my “test” strategy first though.
Have you had any luck with ABB drive control over their serial port? - I have had too many issues with them to trust it - mostly configured as BACnet though. I just run control wire for command signals and use the serial for “extra info”.