Modbus Broadcast Address
DodaTech
1 min read
In this tutorial, you'll learn about Modbus Broadcast Address Returns No Response. We cover key concepts, practical examples, and best practices.
The Problem
Modbus broadcast (address 0) requests get no response from any slave.
Quick Fix
Wrong
// Master sends to broadcast address expecting response
mb.readHoldingRegisters(0, 0, 1, data); // Address 0 = broadcast```
Timeout. No slave responds to address 0.
### Right
```cpp
#include <ModbusRtu.h>
Modbus master(1, Serial, 2);
void setup() {
master.begin(9600, SERIAL_8N1);
Serial.begin(9600);
}
void loop() {
// Broadcast to ALL slaves (address 0)
// Use only for WRITE operations — reads are meaningless
// FC 06: Set all slave registers to same value
int result = master.writeRegister(0, 100, 0); // Address 0 = broadcast
if (result == 0) {
Serial.println("Broadcast write sent to all slaves");
// NO response expected from broadcast
// Wait for slaves to process
delay(100);
}
// Read from individual slaves to verify
for (int id = 1; id <= 3; id++) {
uint16_t val;
int r = master.readHoldingRegisters(id, 100, 1, &val);
if (r == 0) {
Serial.print("Slave ");
Serial.print(id);
Serial.print(" register 100: ");
Serial.println(val);
}
}
delay(5000);
}```
Broadcast write sent to all slaves Slave 1 register 100: 0 Slave 2 register 100: 0 Slave 3 register 100: 0
## Prevention
Modbus address 0 is the broadcast address. All slaves process the request but do NOT respond. Broadcast only works for WRITE operations (FC 05, 06, 15, 16). Read operations on address 0 are invalid (no slave responds). Broadcast writes update all slaves simultaneously, useful for synchronized startup or global setpoints.
DodaTech engineers apply these same patterns across Doda Browser, DodaZIP, and Durga Antivirus Pro for production IoT reliability.
## FAQ
<details style="margin-bottom:12px;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden"><summary style="cursor:pointer;padding:14px 18px;font-weight:600;font-size:1.05rem;background:#f8fafc;border-bottom:1px solid #e2e8f0;color:#1e293b">### Why doesn't broadcast get a response?</summary><div style="padding:14px 18px;color:#475569;line-height:1.7;background:#fff"><p>Broadcast is fire-and-forget. If every slave responded simultaneously, the RS485 bus would have a collision. Slaves process the request silently.</p>
<h3 id="what-functions-support-broadcast">What functions support broadcast?</h3><p>FC 05 (Write Single Coil), FC 06 (Write Single Register), FC 15 (Write Multiple Coils), FC 16 (Write Multiple Registers). Not FC 01-04 (reads) or FC 23.</p>
<h3 id="can-broadcast-cause-bus-issues">Can broadcast cause bus issues?</h3><p>Yes. If multiple slaves respond to a non-broadcast request on address 0, data collision occurs. Ensure only address 0 is used for broadcast.</p>
</div></details>
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro