Modbus issues

I am trying to use XBee ZB RS-485 Adapters to move Modbus RTU between a Siemens S7-1200 with RS-485 comm module (acting as the master) and a compressor module with RS-485 that acts as a Modbus slave. The compressor only speaks Modbus RTU, with data rate of either 19200 or 38400.

With S7-1200 connected with wires to the compressor module, everything works OK. But when the wires are replaced by one XBee PRO ZB RS-485 adapter (configured as an AT coordinator) and one XBee ZB RS-485 adaptor (configured as an AT router), the Siemens S7-1200 stops seeing good replies over Modbus. Modbus write commands are getting from the S7-1200 to the compressor module, but the return packet over Modbus does not get sent back successfully to the S7-1200. Modbus read commands get a partial packet (usually 3 bytes) back from the compressor module.

The X-Bee adaptors work fine if I use them with Hyperterminal etc. I can even manually put together Modbus packets and send them to my compressor module and see the correct Modbus RTU responses coming back.

My guess is that the issue is that the Siemens S7-1200 Modbus library instructions are enforcing the Modbus intercharacter timing requirements, and that the XBee adaptors have too much intercharacter delay for Modbus RTU.

I have tried adjusting the RO parameter on both adaptors from 03 to 05 to 10 to 50 to A0, all with no effect.

I changed the Coordinator from sending broadcast packets to sending unicast to the Router. No effect.

Is there anything else I can do to get the RS-485 Adaptors to successfully send Modbus RTU at 19200 or 38400 baud?


See the following article, which has some info/links regarding the 485 adapter being used for modbus:,7926

What is the size of the response? If larger than 60 or 65 bytes, it might never work as XBee will always fragment.