industrial//industrial communication//fieldbus//Modbus

Modbus is one of the oldest and simplest industrial protocols, published by Modicon in 1979 and immortal because it is simple. One device asks and another answers: traditionally master and slave, today client and server. That conversation shape is what sets it apart from CAN, where every node announces to all with priorities settled on the wire: same cable class, opposite conversation, and the reason CAN owns vehicles while Modbus owns instruments.


Modbus is one of the oldest and simplest industrial protocols, published by Modicon in 1979 and immortal because it is simple. One device asks and another answers: traditionally master and slave, today client and server. That conversation shape is what sets it apart from CAN, where every node announces to all with priorities settled on the wire: same cable class, opposite conversation, and the reason CAN owns vehicles while Modbus owns instruments.

A Modbus frame says who, what operation and what data.

The who is the address of the device being asked; the operation is the function code (read holding registers, write coil, and so on); the data is the starting register and how many.

Everything the protocol knows is areas of memory: coils, discrete inputs, input registers, holding registers. It carries numbers and almost no semantics; the meaning of register 40015 is in the vendor's register map, which is why the manual is not optional (a REST endpoint's schema plays the same role forty years later: both are request-response and both push the meaning of the payload onto documentation the protocol does not carry).

Two transports, one vocabulary: Modbus RTU over a serial RS-485 bus with device addresses, and Modbus TCP over TCP/IP with IP addresses and Ethernet switches. Changing the transport does not change what the registers mean (protocol stack).

Polling sets the timing. At 19,200 baud, reading ten registers from one device takes roughly 25 ms as a worked estimate (an 8-byte request and a 25-byte answer at 11 bits per character are about 19 ms on the wire, plus the silent gaps between frames and the device's turnaround), so a master polling thirty devices refreshes each value about every three quarters of a second. Fine for meters and tank levels; the reason a fast interlock never waits on a Modbus poll.

Its simplicity is also its ceiling: no data model, no units, no quality, no timestamps, no events. Reading a device is what it does; distributing data between systems is what MQTT does, and describing data is what OPC UA does (MQTT, OPC UA).