如何使用modbusmaster库与多个设备进行读写?

最近在做一个机器人项目,用arduino mega2560通过modbus RTU控制多个伺服电机驱动器,找到了modbus master库的官方文档,实现了对单个伺服从站的读取与写入,但是当有多个伺服从站的时候遇到了问题。
具体问题:我的程序如下,不知道在有多个从站的情况下如何成功的访问到2号从站,每次读取和写入数据都只能访问到1号从站;我按照官方文档编程,问题就出现在了下面的红色代码,不清楚如何初始化对象和分配串口。
请知道我出现的问题的师兄帮忙解决,有偿帮助,在做一个项目。

#include <ModbusMaster.h>

ModbusMaster servo_node1;
ModbusMaster servo_node2;

// 获取当前转速值
void GetCurrentRotateSpeed(){
  int CurrentRotateSpeed;
  uint16_t RotateSpeedVal;
  uint8_t result, j;
  result = servo_node1.readHoldingRegisters(0x00E4, 1);     // 00E4地址
  if (result == servo_node1.ku8MBSuccess){
    RotateSpeedVal = servo_node1.getResponseBuffer(0);
    CurrentRotateSpeed = int(float(RotateSpeedVal) / 8192 * 3000);
  }
  Serial.print("CurrentRotateSpeed : "); Serial.print(CurrentRotateSpeed); Serial.println("rpm");
  delay(50);

  int CurrentRotateSpeed2;
  uint16_t RotateSpeedVal2;
  uint8_t result2, i;
  result2 = servo_node2.readHoldingRegisters(0x00E4, 1);
  if (result2 == servo_node2.ku8MBSuccess){
    RotateSpeedVal2 = servo_node2.getResponseBuffer(0);
    CurrentRotateSpeed2 = int(float(RotateSpeedVal) / 8192 * 3000);
  }
  Serial.print("CurrentRotateSpeed : "); Serial.print(CurrentRotateSpeed2); Serial.println("rpm");
  delay(50);
}

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  servo_node1.begin(1, Serial1);     // 分配串口
  servo_node2.begin(2, Serial1);
  delay(500);
}

void loop() {
  if(digitalRead(2) == LOW){  
    GetCurrentRotateSpeed();
    delay(50);
  }
}

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。