Arduino Modbus master slave (1 master - 2 slave)

Berikut contoh program Arduino Modbus 1 master 2 slave yang dapat Anda gunakan sebagai referensi:

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.