ESP8266 Modbus通信

开源地址:GitHub - chen1880/esp8266_modbus: esp8266_modbus

工具下载

串口工具

链接:https://pan.baidu.com/s/1UC19I2vIGau9_zQwHfMMLA 
提取码:nzzh  

最好用的modbus仿真工具—调试必备

链接:https://pan.baidu.com/s/11j3jIbSgaTOHt-k2f8_PEw 
提取码:u6ot  

源码下载:

esp8266_modbus

链接:百度网盘-链接不存在
提取码:https://fgk.pw/i/yVTlx6i1746


术语介绍

Modbus主站(modbusMaster):主动发出指令,要求读取数据的一端(此实验中为arduino)。 
Modbus从站(modbusSlaver):被动接收指令,并随指令读自己寄存器内的信息给主站,或是改写寄存器内的信息(此实验中为DDS283-1ZN电能表)

Modbus 03协议解析

Master发送命令:[设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]

例:[11][03][00][6B][00][03][CRC低][CRC高]


Slaver设备响应:[设备地址] [命令号03] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位]

例:[11][03][06][02][2B][00][00][00][64][CRC低][CRC高]

ESP8266接线

USB转TTL,一端接电脑USB,一端接ESP8266 D7,D8

mbslave 从机模拟器设置 Setup->Slave Definition

Connection->Connect

双击数值可修改值

运行测试:

核心代码

#include "ModbusMaster232.h"
#include "SoftwareSerial.h"  // Modbus RTU pins   D7(13),D8(15)   RX,TX

ModbusMaster232 node;
  
void setup() 
{
  Serial.begin(9600);
  delay(100);  
  node.begin(9600);  // Modbus RTU
  delay(100);
  Serial.println("Connected "); 
  Serial.println("Modbus RTU Master Online");
}

void loop()
{
  uint8_t slaveId = 1;
  uint8_t startAddress = 0;
  uint8_t readLength = 2;
  Serial.println("Modbus,SlaveId:" + String(slaveId) + ",StartAddress:" + String(startAddress) + ",ReadLength:" + String(readLength));
  //
  node.setSlaveAddress(slaveId);
  uint8_t result = node.readHoldingRegisters(startAddress, readLength); 
  if (result == node.ku8MBSuccess)
  {
    Serial.println("=======");
    for (uint8_t j = 0; j < readLength; j++)
    {
      String stringOne = String(node.getResponseBuffer(j), DEC);//以DEC(十)进制显示你要的数据
      Serial.println(stringOne);
    }
    Serial.println("=======");
  }
  node.clearResponseBuffer();
  //
  delay(3000);
}

参考资料:
https://blog.csdn.net/ubibots/article/details/51613685

  • 13
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHHC1880

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值