RS232 and Modbus are two words that just don’t go together. Sort of like Lawrence Welk and Fifty Cent. They’re just not compatible. But this week I had a guy who was trying to multi-drop Modbus using RS232. Could it work? Actually, it is possible, but let’s look into it a little deeper.
The key to understanding RS232 (and RS485) is that they are electrical standards. They have nothing to do with what bits are on the wire. A microprocessor has bits to send out: a Modbus Read Holding Register command for example. Those bits are emitted by a processor out of some pin at processor voltage levels. The processor is designed to interface to other integrated circuits (ICs) so it only emits a very small amount of current. Just enough current to drive an input port in some other IC. It does not have the voltage or current to drive a signal over even a few inches of wire.
That’s where RS232 and RS485 drivers come in. RS232 and RS485 drivers convert bits emitted by a processor to signal levels that can drive a signal over some distance. The RS232 standard specifies a 12V electrical signal and enough current to drive a 50 foot length of wire, while the RS485 standard specifies a 5V electrical signal and current to drive about 1000 feet of wire.
Driver integrated circuits vary in quality and performance. The standard may indicate a particular power level and some drivers may exceed that standard and some may not. That’s why you can get one kind of performance from one RS232 or RS485 device and a different level of performance from a different device. For example, one RS232 device may be able to only work reliably for 30 feet, while another may drive a signal 75 feet. There are also other issues that affect the performance in a specific application, including noise, wire quality, the gauge of the wire, and the quality of the terminations.
RS232 is a point to point standard while RS485 is multi-drop. Why the difference? The RS232 standard is designed for point to point communications and the RS232 drivers are thus usually not designed to emit enough current to drive more than one receiver input. RS485, on the other hand, is designed to drive the receivers for up to 32 RS485 devices.
So, getting back to our multi-drop RS232 guy, can you multi-drop RS232? Yes, you might be able to. Given good quality wire, excellent terminations and an over-designed RS232 driver, it might be possible to drive multiple receivers over some short piece of wire. You would wire the transmitter of the Modbus Master to the receivers of the Modbus slaves, but it could only work over a short distance given the best possible circumstances. It might not be reliable and it would probably be especially sensitive to noise.
Implementing Modbus RTU over RS232 might be fun to try; you can get it to work under the right conditions, but it’s just too risky to use in any kind of important application. What I told this guy was to use RS485 instead, which gives you high noise immunity and the proven ability to drive a lot of slave devices.
Or you he could just use Ethernet (Modbus TCP) and move past the entire serial experience!