Master
#include <ModbusMaster.h>
// instantiate ModbusMaster object
ModbusMaster node;
void setup()
{
Serial.begin(9600);
// initialize Modbus communication parameters
node.begin(1, Serial);
node.setSlaveId(1);
}
void loop()
{
uint8_t result;
uint16_t data;
// read data from slave 1
result = node.readHoldingRegisters(0, 1);
if (result == node.ku8MBSuccess) {
data = node.getResponseBuffer(0);
Serial.println("Data from slave 1: " + String(data));
}
else {
Serial.println("Error reading data from slave 1");
}
// read data from slave 2
result = node.readHoldingRegisters(1, 1);
if (result == node.ku8MBSuccess) {
data = node.getResponseBuffer(0);
Serial.println("Data from slave 2: " + String(data));
}
else {
Serial.println("Error reading data from slave 2");
}
delay(1000);
}
Slave #1
#include <ModbusSlave.h>
// instantiate ModbusSlave object
ModbusSlave node;
void setup()
{
Serial.begin(9600);
// initialize Modbus communication parameters
node.begin(1, Serial);
// set slave address
node.setSlaveId(1);
// set holding register data
node.setHreg(0, 123);
}
void loop()
{
// handle Modbus communication
node.poll();
}
Slave #2
#include <ModbusSlave.h>
// instantiate ModbusSlave object
ModbusSlave node;
void setup()
{
Serial.begin(9600);
// initialize Modbus communication parameters
node.begin(1, Serial);
// set slave address
node.setSlaveId(2);
// set holding register data
node.setHreg(1, 456);
}
void loop()
{
// handle Modbus communication
node.poll();
}
Pastikan untuk menghubungkan modul Modbus ke Arduino dengan benar dan sesuai dengan skema yang digunakan. Selain itu, pastikan juga bahwa setiap slave memiliki alamat yang berbeda dan komunikasi Modbus berjalan dengan benar.