Protocol basics

Modbus Slave vs Modbus Master: What's the Difference?

The single rule that explains almost every Modbus behavior you'll ever debug: the master always asks, the slave only ever answers. Here's what that means in practice.

Quick take: Master = initiates requests (reads/writes). Slave = responds only when polled, never speaks first. Everything else — timeouts, addressing, exception codes — follows from that one asymmetry.

The core difference in one sentence

A Modbus master (also called a client) sends a request; a Modbus slave (also called a server) waits for a request and replies to it. A slave never transmits unprompted — there's no "publish" or "push" mode in standard Modbus, which is a common point of confusion for engineers coming from MQTT or other pub/sub protocols.

Who is the master and who is the slave in a typical setup?

SetupMasterSlave
SCADA polling a PLCSCADA softwarePLC
PLC polling a field devicePLCSensor, meter, VFD, etc.
HMI reading tags from a controllerHMIController
Gateway bridging two networksGateway acts as slave upstreamGateway acts as master downstream

Notice the gateway row: the same physical device can be a slave on one interface and a master on another at the same time. This is normal in multi-tier SCADA architectures.

How the request/response cycle actually works

  1. The master sends a request frame — function code (e.g. 03 = Read Holding Registers), start address, and quantity.
  2. The addressed slave (by Unit ID on RTU, or IP+Unit ID on TCP) processes the request.
  3. The slave replies with the data, or an exception response if the request was invalid (bad address, illegal function, etc.).
  4. If no response arrives within the master's timeout window, the master logs a timeout and moves to the next poll — the slave is never expected to retry or re-send.

Addressing: how a master finds the right slave

On Modbus RTU (serial), every slave on the bus has a Unit ID from 1-247, and all slaves share the same physical wire — the master addresses one at a time by ID. On Modbus TCP, the slave is identified primarily by IP address and port (usually 502); the Unit ID field still exists (mostly for TCP-to-RTU gateways) but is often ignored or set to 0/255 for a pure TCP device.

Master/slave vs client/server terminology

The official Modbus specification from the Modbus Organization still uses "master" and "slave." In modern documentation and some tooling you'll increasingly see "client" (=master) and "server" (=slave) used instead — same protocol roles, more neutral naming. Don't let the terminology switch confuse you; the request/response asymmetry is identical either way.

Which role should you simulate?

Most engineers testing PLC/SCADA integrations need slave simulation, since the thing under test (the SCADA system or PLC program) is almost always the master.

Related pages

Simulate either role in one tool

ModbusSimulator runs as both master and slave — poll a simulated device, or respond to a real master, without touching hardware. Free 30-day trial, then a $99 one-time license.

Download Free tier

FAQ

What is the difference between a Modbus master and a Modbus slave?

The master initiates every request (read or write); the slave only responds when polled. A slave never sends data on its own — this is the core distinction that trips up people coming from other protocols with unsolicited/publish-style messaging.

Can a device be both a Modbus master and a slave at the same time?

Yes, common in gateway and multi-tier SCADA setups. A device can poll field devices as a master on one interface while responding to a higher-level SCADA system as a slave on another.

How many slaves can one Modbus master talk to?

On Modbus RTU (serial), up to 247 slave addresses (1-247) on a single bus. On Modbus TCP, there's no hard protocol limit — practical limits come from network design and polling cycle time, not the protocol itself.

Is the terminology 'master/slave' still used in the Modbus spec?

The official Modbus specification (maintained by the Modbus Organization) still uses master/slave terminology, though 'client/server' is increasingly used informally as a more neutral synonym — client=master, server=slave, same protocol behavior.

Which role do I need to simulate to test my PLC or SCADA system?

If you're testing a SCADA system or PLC program that polls field devices, simulate the slave (device) side. If you're testing a field device's firmware or response handling, simulate the master (polling) side instead.