I added another device to the RS-485 side of my 174CEV30020 Modbus to Ethernet bridge and now I am seeing much greater transaction delays. Why is that?
The limiting factor is serial side communications and the configured baud rate. From Ethernet, the CEV passes the Modbus header and function code request data to the serial slave. The slave then responds with the Modbus header, function code and register data. For example, the minimum Modbus header is:
2 bytes Transaction identifier
2 bytes Protocol ID
2 bytes Number of bytes to follow
1 byte Unit or Slave index
1 byte Function code (Read, write, etc)
Beyond that we have the function code dependent data such as starting register and number of registers. For a function code 3, Read Multiple 4x registers, there would be 4 additional bytes for starting register and number of registers.
Therefore, the original read request for 10 registers in this example would be 12 bytes sent as the request, and 22 bytes returned as the response (12 byte header plus 10 word response = 22 bytes)
22 bytes transmitted at 9,600 baud = (22 * 8) / 9600 = 18.3ms not including the slave response time.
The same example with a 100 register read is (222 * 8) / 9600 = 185ms.
Note that signaling overhead and intermessage gaps for RTU communications will increase that time.
Therefore, you can see that the number of devices and the size of the request plays a role in overall response time.