厦门机器猫 2023-08-04 16:08 采纳率: 50%
浏览 17
已结题

Modbus TCP连接从机问题

在使用esp32实现modbus tcp通信的时,无法连接从机进行通信。
程序实现了esp32作为modbus RTU从设备和modbus TCP从设备的桥接,把从RTU从设备读取到的保持寄存器值转发到TCP从设备。

main.cpp

#include <Arduino.h>
#include <WiFi.h>
#include <ModbusIP_ESP8266.h>
#include <ModbusMaster.h>

// Modbus RTU
#define TX_PIN 17
#define RX_PIN 16
ModbusMaster node;

// Modbus TCP
ModbusIP mb;
IPAddress remote(192, 168, 44, 1);
// WiFi credentials
const char* ssid = "向阳5G1";
const char* password = "xyzxs1234";

void setup() {
  Serial.begin(9600);

  // Connect to Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
   Serial.println("Connected to Wi-Fi");
   Serial.print("IP address: ");
   Serial.println(WiFi.localIP()); 



  // Modbus RTU setup
  node.begin(4, Serial2);
  Serial2.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);

  // Modbus TCP setup
  mb.client();
  
}


void loop() {
  // Read data from Modbus RTU device
  uint8_t result = node.readHoldingRegisters(0x0000, 4);

  if(mb.isConnected(remote)){
      if (result == node.ku8MBSuccess ) {
      // Copy data to Modbus TCP registers
      Serial.println("RTU Data receive and TCP slave connect");
      for (int i = 0; i < 4; i++) {
        uint16_t value = node.getResponseBuffer(i);
        mb.writeHreg(1,i,value);
    }
  }
  }else {
    Serial.print("remote error");
    mb.connect(remote,502);           // Try to connect if no connection
  }
  // Handle Modbus TCP requests
  mb.task();
  delay(5000);
}

modbus salve模拟器配置

img

创建从机后无法进行连接

img

开发环境:PlatformIO
开发板:esp32
相关库文件:1.modbus-esp8266
2.ModbusMaster

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-04 17:29
    关注

    【相关推荐】




    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 已采纳回答 8月11日
  • 创建了问题 8月4日

悬赏问题

  • ¥15 孟德尔随机化连锁不平衡无法运行代码
  • ¥15 烝救者笔记本然后刷thinkbook笔记本的bios
  • ¥15 同心圆环圆心的高精度测量
  • ¥15 vs2010修改时间编辑控件
  • ¥15 郑州牧原测试岗值得去吗
  • ¥100 复现论文:matlab仿真代码编写
  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态