RS-232 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 RS-232. Could it work? Actually, it is possible, but let’s look into it a little deeper.
The key to understanding RS-232 (and RS-485) 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 with other integrated circuits (ICs) so it only emits 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 RS-232 and RS-485 drivers come in. RS-232 and RS-485 drivers convert bits emitted by a processor to signal levels that can drive a signal over some distance. The RS-232 standard specifies a 12V electrical signal and enough current to drive 50 feet of wire, while the RS-485 standard specifies a 5V electrical signal and current to drive about 1,000 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 RS-232 or RS-485 device and a different level of performance from a different device. For example, one RS-232 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.
RS-232 is a point-to-point standard while RS-485 is multi-drop. Why the difference? The RS-232 standard is designed for point-to-point communications, so the RS-232 drivers aren’t usually designed to emit enough current to drive more than one receiver input. RS-485, on the other hand, is designed to drive the receivers for up to 32 RS-485 devices.
So, getting back to our multi-drop RS-232 guy, can you multi-drop RS-232? Yes, it’s possible. If you have good quality wire, excellent terminations and an over-designed RS-232 driver, you can 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 RS-232 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 RS-485 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!