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?
| Setup | Master | Slave |
|---|---|---|
| SCADA polling a PLC | SCADA software | PLC |
| PLC polling a field device | PLC | Sensor, meter, VFD, etc. |
| HMI reading tags from a controller | HMI | Controller |
| Gateway bridging two networks | Gateway acts as slave upstream | Gateway 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
- The master sends a request frame — function code (e.g. 03 = Read Holding Registers), start address, and quantity.
- The addressed slave (by Unit ID on RTU, or IP+Unit ID on TCP) processes the request.
- The slave replies with the data, or an exception response if the request was invalid (bad address, illegal function, etc.).
- 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?
- Simulate a slave when you're testing SCADA/HMI software, PLC polling logic, or any master-side application — the simulator stands in for the real field device.
- Simulate a master when you're testing firmware on a real device (like a new sensor or meter) and need something to poll it and validate its responses.
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 tierFAQ
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.