Easy Modbus · plain-English Modbus reference

What is the difference between Modbus and BACnet?

Short answer

The one difference that matters in practice: BACnet describes itself and Modbus does not. A BACnet controller will tell you what it has — you ask for its object list and it answers with names, units and types. A Modbus device tells you nothing; it returns the sixteen bits in the slot you named and has no opinion about what they mean. Everything else — discovery, priorities, alarms, scheduling — follows from that. Modbus is simpler, older, and in far more equipment; BACnet is purpose-built for buildings and far easier to integrate.

Side by side

ModbusBACnet
Published19791995
Self-describingNo. Meaning lives in a PDFYes. Names, units and types come from the device
DiscoveryNone. You must sweep the networkWho-Is broadcast; devices answer
Data types16-bit slots. You supply the interpretationTyped values: real, boolean, enumerated, string
UnitsNot carried at allA standard property of each point
WritingLast writer wins. No undo16 priority levels, and a release that hands control back
Alarms and trendsNot in the protocolBuilt in
Typical portTCP 502UDP 47808
Found inMeters, drives, generators, UPSs, sensors, packaged plantBuilding controllers, chillers, AHUs, BMS head ends

What this means when you are integrating something

With BACnet, the work is mostly selection: discover the devices, read their point lists, and pick the points you want. The device has already told you what everything is called.

With Modbus, the work is mostly archaeology. You need the register map, you need to resolve which addressing convention it uses, you need the data type and the word order and the multiplier for every value, and none of it can be checked against the device because the device has no opinion. That knowledge exists only in documents and in people's heads, and it is worth writing down properly the first time, because the second time costs just as much as the first.

Why anyone still chooses Modbus

It is trivial to implement, which means it can go into a $40 sensor. It is not owned by anybody. It has essentially no version problems. And it is already in an enormous installed base, so supporting it is not optional regardless of what anyone would prefer. A modern building very often has both: BACnet between the controllers, and Modbus out to the meters, drives and packaged plant.

Gateways between them

Most building systems can present Modbus equipment as BACnet objects. That gives the head end names and units — but the names and units were typed in by whoever configured the gateway, from the register map. The archaeology still happened; it just happened once, at commissioning, and the result is now hidden inside a gateway configuration that may or may not be documented anywhere.

If you are working on BACnet equipment rather than Modbus, the same author publishes Easy BACnet, which discovers BACnet/IP devices, reads their point lists, and exports them the same way.