Modbus is a vague term here: Do you need Ascii modbus or binary (RTU) modbus? Are you using serial port (RS232 or RS485) or ethernet? Are you running on a Windows PC?
The modbus serial spec specifies time delays as part of the protocol. These are not always easy to guarantee when running on windows. In practice it is rarely a problem provided you are using a specific bit of hardware and are running on a specific PC.
Hope this helps, Regards, Roger
I have never actually worked with Modbus over TCP/IP but I believe it is the same underlying protocol with just a different transport medium (ie TCP/IP rather than RS232/RS458).
I am also unsure if both forms of modbus are supported over TCP/IP - you will need to study the Schneider manual to establish this. My guess is that it is likely to be the binary (RTU) form of modbus.
There is some stuff on the web re: using modbus RTU over serial connection to connect to temperature controllers made by CAL Controls. This might be a starting point for you. If you use this it would be polite to acknowledge S. Hammond in your source code comments!
I have successfully used the Indy components for TCP/IP comms.
In particular use TIdTCPClient and methods Connect(), Disconnect() and functions in IdTCPClient->IOHandler for the actual i/o.
Let us know how you get on.