Modbus Gateways Ins And Outs

I have a bunch of customers using our software to build gateways devices.


A lot of the time they are taking a group of serial RS485 Modbus RTU devices moving that data to some higher level system using networks like EtherNet/IP, DeviceNet, Modbus TCP, BACnet IP or even PROFIBUS.


Why Modbus RTU? There are lots of good reasons. Mostly because there are literally hundreds of thousands of Modbus RTU devices in applications in a whole host of industries. You’ll have to remember that this electrical specification (RS485) and protocol have been around for about 40 some years. 40 years! Devices can really proliferate in all that time.


[By the way – I once met a guy that worked for Modicon in Boston in the 70s. He claimed to be part of the group that invented it. I don’t know if I believe him. He seemed kind of young. If you are someone who really was part of this effort or know something about it, contact me.]


And there is no reason to believe that the number of devices won’t keep growing. Modbus is still the lowest cost, easiest to implement most adaptable communication option you can put on your device. As long as you have a UART and a small bit of Flash you can have Modbus RTU. So, why not?


But once you’re on Modbus RTU how do you move that data over to DeviceNet, CANopen, EtherNet/IP, Modbus TCP, BACnet/IP or some of these other protocols?


There are a couple of architectural issues to consider in these kinds of applications. One of them is do you want each Modbus device to show up on the other network as its own entity? For example, you could build a box that takes up to 32 Modbus devices and makes a connection for each of those devices on the other network.


Siemens Profinet IO gateways do this. You get a TCP/IP connection with a different IP address for each device on the other side of the Profinet IO gateway.


In most cases, this is pretty impractical. It eats up bandwidth, processor resources and connections. That’s not very attractive. Instead, all of the read registers are grouped together, all the write registers are grouped together and the Modbus devices end up looking like a single device with lots of data.


The only time this isn’t done is with one of my favorite networks, Modbus TCP. With Modbus TCP you can use the UID field to talk to a specific device on the other side of the gateway. From the Ethernet side you connect to a single IP address but specify a value in the UID field that targets that command to a specific device on the Modbus RTU side. That works very well for lot of gateways.


If you’re building one of these gateway devices, use the Contact US form and send me a message. I’ve got a few other ideas for you.