ESP-IDF Modbus从站例子

这篇具有很好参考价值的文章主要介绍了ESP-IDF Modbus从站例子。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

支持的芯片型号 ESP32 ESP32-C2 ESP32-C3 ESP32-C6 ESP32-H2 ESP32-S2 ESP32-S3

Modbus从站例子

此示例演示了使用FreeModbus协议栈来实现ESP32作为从站设备来进行通信,
该示例允许外部 Modbus主站使用 Modbus协议读取/写入的从站设备参数, “mb_example_common/modbus_params.h”头文件中,定义了可通过Modbus协议操作的参数,用户修改该文件来添加/删除自己的自定义参数。
这些在结构“holding_reg_params”、“input_reg_params”、“coil_reg_params”和“discrete_reg_params”中表示,分别用于保存寄存器、输入参数、线圈和离散输入。
app_main应用程序演示了如何启动Modbus协议,当参数发生变化时会通知主站设备。
FreeModbus 协议栈位于“components/freemodbus”文件夹中,包含“/port”文件夹,该文件夹中包含与 ESP32 连接的堆栈端口。 可以在 KConfig 文件中配置一些端口参数,以正确启动协议栈(有关详细信息,请参阅下面的说明)。

“examples/protocols/modbus/mb_example_common”文件夹中定义从站示例使用到的参数结构。

所需硬件 :

选项1:
PC (Modbus从站应用软件) + 连接到USB端口的USB串行适配器 + RS485线路驱动器 + ESP32开发板
MAX485线路驱动器芯片在下文中作为示例,但其他类似的芯片也可以使用。

选项2:
根据其README.md文件的说明配置了modbus_master示例应用程序,并将其烧录到ESP32开发板上。
注意: 在modbus_master示例中,可以编辑“Example Data (Object) Dictionary”来处理连接到Modbus段的从站设备的参数。
RS485示例电路示意图:

         VCC ---------------+                               +--------------- VCC
                            |                               |
                    +-------x-------+               +-------x-------+
         RXD <------| RO            | DIFFERENTIAL  |             RO|-----> RXD
                    |              B|---------------|B              |
         TXD ------>| DI   MAX485   |    \  /       |    MAX485   DI|<----- TXD
ESP32 board         |               |   RS-485 side |               |    Modbus master
         RTS --+--->| DE            |    /  \       |             DE|---+
               |    |              A|---------------|A              |   |
               +----| /RE           |    PAIR       |            /RE|---+-- RTS
                    +-------x--------+              +-------x-------+
                            |                               |
                           ---                             ---

如何设置和使用示例:

配置软件

输入下面的命令开始配置:

idf.py menuconfig

选择“Modbus示例配置”菜单项。
使用以下命令和表格配置用于 Modbus 通信的 UART 引脚。

  ------------------------------------------------------------------------------------------------------------------------------
  |  UART Interface       | #define            | Default pins for      | Default pins for          | External RS485 Driver Pin |
  |                       |                    | ESP32 (C6)            | ESP32-S2 (S3, C3, C2, H2) |                           |
  | ----------------------|--------------------|-----------------------|---------------------------|---------------------------|
  | Transmit Data (TxD)   | CONFIG_MB_UART_TXD | GPIO23                | GPIO9                     | DI                        |
  | Receive Data (RxD)    | CONFIG_MB_UART_RXD | GPIO22                | GPIO8                     | RO                        |
  | Request To Send (RTS) | CONFIG_MB_UART_RTS | GPIO18                | GPIO10                    | ~RE/DE                    |
  | Ground                | n/a                | GND                   | GND                       | GND                       |
  ------------------------------------------------------------------------------------------------------------------------------

注意: 每个目标芯片都有不同的GPIO引脚可用于UART连接。有关更多信息,请参阅所选目标的UART文档。

在 Kconfig 中定义Modbus communiction mode- CONFIG_MB_COMM_MODE(对于主站和从站应用程序必须相同)。
为示例应用程序设置Modbus slave address(对于示例脚本默认设置为 1)。
FreeModbus协议栈的通信参数(Component config->Modbus configuration)允许进行适当的配置,但通常使用默认设置就足够了。
请查看参数的帮助字符串以获取更多信息。

设置外部 Modbus主站软件

选项1:
根据应用程序中使用的端口配置参数配置外部Modbus主站软件。
例如,可以使用Modbus Poll应用程序与该示例一起使用。

选项2:
设置基于ESP32的电路板,并根据其README.md文件中的说明设置modbus_master示例配置。
设置一个或多个从站电路板,具有不同的从站地址,并将它们连接到相同的Modbus段(参见上文中的配置)。
注意:主站和从站示例应用程序的Modbus communiction mode参数必须相同,以便能够相互通信。

应用编译和烧写

构建项目并烧写程序到板上,然后运行监视器工具查看串行输出:

idf.py -p PORT flash monitor

(退出串行监视器, 输入 Ctrl-].)

有关配置和使用ESP-IDF构建项目的完整步骤,请参阅《Getting Started Guide》

示例输出

应用程序的示例输出:

I (13941) SLAVE_TEST: INPUT READ (13651163 us), ADDR:1, TYPE:8, INST_ADDR:0x3ffb2fd0, SIZE:2
I (13951) SLAVE_TEST: HOLDING READ (13656431 us), ADDR:1, TYPE:2, INST_ADDR:0x3ffb2fe0, SIZE:2
I (13961) SLAVE_TEST: INPUT READ (13665877 us), ADDR:3, TYPE:8, INST_ADDR:0x3ffb2fd4, SIZE:2
I (13971) SLAVE_TEST: HOLDING READ (13676010 us), ADDR:3, TYPE:2, INST_ADDR:0x3ffb2fe4, SIZE:2
I (13981) SLAVE_TEST: INPUT READ (13686130 us), ADDR:5, TYPE:8, INST_ADDR:0x3ffb2fd8, SIZE:2
I (13991) SLAVE_TEST: HOLDING READ (13696267 us), ADDR:5, TYPE:2, INST_ADDR:0x3ffb2fe8, SIZE:2
I (14001) SLAVE_TEST: COILS READ (13706331 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb2fcc, SIZE:8
I (14001) SLAVE_TEST: Modbus controller destroyed.

输出行描述了操作类型、时间戳、Modbus地址、访问类型、参数结构中的存储地址和寄存器数量。文章来源地址https://www.toymoban.com/news/detail-809970.html

到了这里,关于ESP-IDF Modbus从站例子的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP-IDF开发框架添加自定义组件 ESP32-C3

    因为熟悉了STM32的开发方式,同时随着项目文件越来越多,可以将自己写的代码分模块添加到工程中,下面分析如何将自己写的组件添加到工程中使其能够正常编译运行。 在ESP-IDF中,构建,编译,以及下载都是通过idf.py脚本来实现的,该脚本使用 CMake,配置待构建的项目 N

    2024年02月02日
    浏览(60)
  • ESP-IDF + Vscode ESP32 开发环境搭建以及开发入门

    创作不易,转载请注明出处! Tips: 虽然笔者采用的是Linux开发环境,但是Windows开发环境的亦可阅读,所述内容与系统关联性不大,尤其是后文介绍的如何将自己的文件加入到工程,解决头文件找不到等问题,无论哪种系统均会存在。 Tips: 最近更新了一篇windows下搭建的,大家

    2024年02月02日
    浏览(50)
  • 【ESP32】Espressif-IDE及ESP-IDF安装

    1.打开ESP-IDF 编程指南 2.点击快速入门–安装–手动安装–Windows Installer–Windows Installer Download 3.点击下载Espressif-IDE 2.10.0 with ESP-IDF v5.0.2 1.双击安装 espressif-ide-setup-2.10.0-with-esp-idf-5.0.2.exe 2.点击“确定” 3.选择“我同意此协议(A)”,点击“下一步” 4.点击“下一步” 5.点击“

    2024年02月15日
    浏览(60)
  • ESP32在ESP-IDF框架下使用LVGL(v8.3)

    VSCode + ESP-IDF 插件 说明: IDF版本为4.4.4 ,最新版的5.0.1弃用了些东西,而lvgl_esp32_drivers对5以上的版本未适配,所以 不建议使用5以上的版本 。 安装:安装教程,建议整体看完在进行安装,以免安装失败, 教程安装的是5.0.1,需要改为4.4.4 。 Arduino移植教程:点击此处 lvgl :g

    2023年04月16日
    浏览(64)
  • vscode+esp-idf 搭建esp32开发环境,编译信息中文乱码

    1.修改波特率 2.C:UsersAdministrator.vscodeextensionsvsciot-vscode.vscode-arduino-0.6.0-win32-x64outsrccommon  打开文件 util.js 屏蔽掉这部分的代码 、  

    2024年02月10日
    浏览(47)
  • ESP32 ESP-IDF + LVGL + SquareLine Studio 设计 UI 界面

    陈拓 2022/12/10-2022/12/12 关于SquareLine Studio,乐鑫官方的ESP技术文章有介绍: 在 ESP 开发板上开发 UI 不再复杂 - 知乎 如果您尝试过在没有图形库的情况下开发 UI,那么您一定知道这有多困难。幸运的是,由乐鑫芯片驱动的屏幕,可支持用户使用多种图形库来开发 UI, LVGL 就是其

    2024年01月19日
    浏览(57)
  • ESP-IDF安装配置食用教程(以Windows系统示例)

    徐小宝:本文仅以经验指南,涉及ESP-IDF安装,编译环境配置等。 1、Git安装包,移步官网下载 2、Python安装包,移步官网下载 3、ESP-IDF文件包,移步官方Github下载或Gitee下载 4、本博文所用文件,移步附件(ESP-IDF环境安装文件,含esp-idf-v4.0.1资源包、Git-2.35.1.2-64-bit安装包、py

    2023年04月08日
    浏览(45)
  • 使用一键安装工具快速搭建 ESP-IDF 开发环境 (Windows)

    我们收到用户对 ESP-IDF SDK 软件开发环境感到搭建难、门槛高的反馈。为解决用户在此方面的问题。为此,我们推出本期教程介绍在 Windows 操作系统下使用一键安装工具快速搭建 ESP-IDF 开发环境。 您可以观看下面的教程视频,也可以阅读接下来本篇的图文教程。 【乐鑫教程】

    2024年02月09日
    浏览(76)
  • VSCode安装Esp-IDF开发环境(pip version)出错解决办法

    可以看出是 pip版本问题 ,所以只需要在安装程序使用pip命令之前,完成pip的升级即可。 好像下载4点几的版本会出现此警告,导致安装失败;而下面安装5.0.1版本的时候同样出现了此警告,但是能够安装成功。 在VSCode扩展中找到Esp-IDF插件,点击卸载按钮。 注意:此时并没有

    2024年02月08日
    浏览(64)
  • 利用群晖服务器安装乐鑫ESP-IDF编译环境

    NAS内通过套件中心下载Docker并安装ubuntu容器 打开Docker后进入注册表搜索ubuntu20.04选择第一个就可以(其余版本未进行测试) 等待安装成功后点击映像可查看 点击启动按钮后为容器命名,点击高级设置中的存储空间可在NAS本地创建一个文件夹(便于后续搭建完成后与本地交互) 点击

    2023年04月17日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包