基于Arduino IDE 野火ESP8266模块 MODBUS RTU开发

一、工程创建

1.新建工程,工程另存为modbusRtu。
在这里插入图片描述
2.官网搜索modbus 相关库

https://www.arduino.cc/reference/en/libraries/

在这里插入图片描述
或者在Arduino IDE中库管理中搜索选择modbus库
在这里插入图片描述
安装完如下
在这里插入图片描述
选择更多信息,会跳到库的代码示例,可查看如何使用该库。
这里使用的是 ModbusMaster
在这里插入图片描述
ModbusMaster 库文件的github网址如下:

https://github.com/4-20ma/ModbusMaster

该库支持RS232和RS485接口。

二、测试代码

官方提供的测试例程,代码如下:

/*

  Basic.pde - example using ModbusMaster library

  Library:: ModbusMaster
  Author:: Doc Walker <4-20ma@wvfans.net>

  Copyright:: 2009-2016 Doc Walker

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/

#include <ModbusMaster.h>


// instantiate ModbusMaster object
ModbusMaster node;


void setup()
{
  // use Serial (port 0); initialize Modbus communication baud rate
  Serial.begin(19200);

  // communicate with Modbus slave ID 2 over Serial (port 0)
  node.begin(2, Serial);
}


void loop()
{
  static uint32_t i;
  uint8_t j, result;
  uint16_t data[6];

  i++;

  // set word 0 of TX buffer to least-significant word of counter (bits 15..0)
  node.setTransmitBuffer(0, lowWord(i));

  // set word 1 of TX buffer to most-significant word of counter (bits 31..16)
  node.setTransmitBuffer(1, highWord(i));

  // slave: write TX buffer to (2) 16-bit registers starting at register 0
  result = node.writeMultipleRegisters(0, 2);

  delay(1000);

  // slave: read (6) 16-bit registers starting at register 2 to RX buffer
  result = node.readHoldingRegisters(2, 6);

  // do something with data if read is successful
  if (result == node.ku8MBSuccess)
  {
    for (j = 0; j < 6; j++)
    { 
      data[j] = node.getResponseBuffer(j);
    }
    delay(5000);
  }
}

串口波特率为19200,其余默认配置:8位数据位,1位停止位,无校验位。
从站地址为2,功能码为0x03即Holding Register保持寄存器。
写地址为0,寄存器长度为2。
读地址为2,寄存器长度为6。
将代码下载到野火esp8266模块,开启测试软件进行配置。打开软件的通信log,可看到数据写和读。
在这里插入图片描述

三、库安装的方法

1.直接通过Arduino IDE进行安装
在这里插入图片描述
2.官网下载库,将库导入到Arduino IDE软件。
在 Arduino IDE 中,导航到
Sketch > Include Library > Add .ZIP Library。
系统将提示您选择要添加的库。导航到 .zip 文件的位置并将其打开。
注意:库通常以 ZIP 文件或文件夹的形式分发。文件夹的名称是库的名称。文件夹内将包含一个 .cpp 文件、一个 .h 文件,通常还有一个 keywords.txt 文件、examples 文件夹和库所需的其他文件。从版本 1.0.5 开始,可以在 IDE 中安装第三方库。不要解压缩下载的库,请保持原样。
在这里插入图片描述

在这里插入图片描述
参考:
库安装方法:
https://docs.arduino.cc/software/ide-v1/tutorials/installing-libraries/

库文件:
https://www.arduino.cc/reference/en/libraries/

### ESP8266 Modbus 配置 使用教程 示例代码 #### 一、简介 ESP8266可以通过特定库实现Modbus协议通信,作为从设备工作,并支持通过无线网络进行IP通信[^1]。 #### 二、硬件连接说明 对于主控ESP8266与外部组件(如电位器和RS485模块)的接口设计,在RS485模块上存在多个引脚用于数据传输等功能;其中六个引脚需同ESP8266板相联结以完成基本的数据交换需求[^2]。 #### 三、软件环境搭建 为了便于开发者快速入门并掌握如何利用Arduino IDE来编写适用于ESP8266平台下的MODBUS RTU应用程序,建议先安装好对应的IDE版本之后再按照官方指导文档中的指示操作。具体来说就是打开Arduino IDE内的“库管理”,从中找到名为`modbus`的相关条目予以下载安装即可[^4]。 #### 四、示例代码展示 下面给出一段简单的C++语言编写的Arduino sketch片段,它展示了怎样初始化一个基于ESP8266芯片组构建而成的产品成为遵循RTU标准规范的服务端实例: ```cpp #include <ModbusSlave.h> // 创建一个新的ModbusSlave对象 ModbusSlave node(1); void setup() { Serial.begin(9600); // 设置串口参数 node.begin(Serial, 9600); pinMode(LED_BUILTIN, OUTPUT); } void loop() { // 处理来自客户端的消息请求 node.poll(); } ``` 这段程序实现了最基础的功能——使能指定ID号为1的目标节点监听来自于其他主机发送过来的信息包,并据此作出响应动作,比如控制内置LED灯亮灭状态变化等。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值