Files
mobile_comm/luatos/air780epm/module/Air780EPM/demo/modbus/rtu_slave
wangfq 173dd6874f init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码
- 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等)
- 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
2026-08-31 08:53:49 +08:00
..

一、演示模块概述

1、main.lua:主程序入口;

2、rtu_slave_manage.luaRTU 从站应用模块;

二、演示功能概述

本 demo 演示的核心功能为:

1、将设备配置为 modbus RTU 从站模式

2、等待并且应答主站请求

注意事项:

1、该示例程序需要搭配 exmodbus 扩展库使用

2、设备作为 modbus RTU 从站模式时,仅支持接收 modbus RTU 标准格式的请求报文

3、进行回应时也需要符合 modbus RTU 标准格式

三、演示硬件环境

3.1 硬件环境说明

本Demo支持两种硬件环境,请根据实际使用的开发板版本选择对应的配置:

硬件环境 HARDWARE_ENV值 控制485接收和发送的使能脚
V1.3开发板 "DEV_BOARD_V1.3" GPIO24(默认)
V1.2开发板 "DEV_BOARD_V1.2" GPIO25

配置方法:main.lua中修改HARDWARE_ENV变量的值即可切换硬件环境。

3.1.1 V1.3开发板(DEV_BOARD_V1.3,默认)

配置说明

main.lua中设置:

HARDWARE_ENV = "DEV_BOARD_V1.3"

485_uart驱动会自动完成以下操作:

  • 使用 GPIO24 作为485使能脚

3.1.2 V1.2开发板(DEV_BOARD_V1.2

配置说明

main.lua中设置:

HARDWARE_ENV = "DEV_BOARD_V1.2"

485_uart驱动会自动完成以下操作:

  • 使用 GPIO25 作为485使能脚

3.2 硬件清单

下面以Air780EPM V1.3开发板为例进行演示:

1、Air780EPM V1.3 开发板一块

2、TYPE-C USB数据线一根

3、USB-RS485 串口板

此处购买链接仅为推荐,如有问题请直接联系店家

四、演示软件环境

1、Luatools下载调试工具

2、Air780EPM V2018 版本(理论上最新版本固件也可以,如果使用最新版本的固件不可以,可以烧录 V2018-1 固件对比验证)

3、摩尔信使(MThings)官网(用于模拟 modbus 主站设备)

五、演示核心步骤

1、搭建硬件环境

  • 将 USB-RS485 串口板与 Air780EPM 开发板进行连接
  • 将 USB-RS485 串口板 与 Air780EPM 开发板的 USB 端同时接在电脑上
  • 参考图见 演示硬件环境

2、在摩尔信使上配置模拟 RTU 主站设备环境

  • 点击左上角的 “通道管理”按钮,在 “通道管理” 窗口选择对应的串口(USB-RS485 串口板与 Air780EPM 开发板进行 485 通信时的端口),点击对应串口后面的 “配置” 按钮,在 “串口参数配置” 窗口配置串口参数(要求与代码中调用 exmodbus.create 接口时填入的配置参数一致),操作流程图如下:

  • 点击左上角的 “添加设备”按钮,在 “添加设备” 窗口对通信设备参数进行配置,配置好后点击 “添加” 按钮,左侧栏即为添加后的效果,操作流程图如下:

  • 点击左侧的第一个主站(我这里显示为 “COM36-001”),点击中上部分的 “新增数据” 按钮,在 “新增数据配置” 窗口将 “数据条数” 、“区块” 、“起始数据地址” 按照下图中所示进行配置,最后点击 “确定” 按钮,此时便成功新增线圈 0-2,操作流程图如下,此时按照刚才操作,依次分别创建离散输入 0-2、保持寄存器 0-2、输入寄存器 0-2

  • 此时在摩尔信使上的配置操作已经完成,如果需要在摩尔信使上查看报文,那么操作流程图如下:

4、打开 Luatools 工具,根据要求烧录本次所需要的内核固件和脚本代码

5、烧录成功后,自动开机运行

6、开机运行后 Luatools 工具上记录的日志如下,此时便开始等待主站发送请求

[2025-12-29 11:22:47.269][000000000.323] I/user.main RTU_SLAVE 001.000.000
[2025-12-29 11:22:47.271][000000000.350] Uart_ChangeBR 1338:uart1, 115200 115203 26000000 3611
[2025-12-29 11:22:47.273][000000000.351] I/user.exmodbus 串口 1 初始化成功,波特率 115200
[2025-12-29 11:22:47.277][000000000.351] I/user.exmodbus_test rtu_slave 创建成功, 从站 ID 为 1
[2025-12-29 11:22:47.280][000000000.351] I/user.exmodbus 已注册从站请求处理回调函数
[2025-12-29 11:22:47.289][000000000.351] I/user.从站回调函数已注册,开始监听主站请求...

7、如下图所示,在摩尔信使上鼠标右击第一个主站,然后点击 “启动轮询”,此时上位机便会模拟主站设备开始执行轮询请求操作

8、如下图所示,如果需要修改轮询的间隔时间或者其他参数,先将滑动条滑到右边,然后鼠标左键双击对应参数即可修改

9、开启轮询后 Luatools 工具与摩尔信使上的日志如下:

[2025-12-29 11:24:22.254][000000095.742] I/user.exmodbus_test rtu_slave 收到主站请求
[2025-12-29 11:24:22.258][000000095.742] I/user.exmodbus_test 读取成功,返回数据:  0, 0
[2025-12-29 11:24:25.268][000000098.756] I/user.exmodbus_test rtu_slave 收到主站请求
[2025-12-29 11:24:25.271][000000098.757] I/user.exmodbus_test 读取成功,返回数据:  1, 1
[2025-12-29 11:24:28.279][000000101.767] I/user.exmodbus_test rtu_slave 收到主站请求
[2025-12-29 11:24:28.281][000000101.768] I/user.exmodbus_test 读取成功,返回数据:  201, 202
[2025-12-29 11:24:31.269][000000104.759] I/user.exmodbus_test rtu_slave 收到主站请求
[2025-12-29 11:24:31.272][000000104.760] I/user.exmodbus_test 读取成功,返回数据:  101, 102
[2025-12-29 11:24:34.277][000000107.766] I/user.exmodbus_test rtu_slave 收到主站请求
[2025-12-29 11:24:34.284][000000107.767] I/user.exmodbus_test 读取成功,返回数据:  0, 0
[2025-12-29 11:24:37.276][000000110.764] I/user.exmodbus_test rtu_slave 收到主站请求
[2025-12-29 11:24:37.280][000000110.765] I/user.exmodbus_test 读取成功,返回数据:  1, 1
[2025-12-29 11:24:40.297][000000113.785] I/user.exmodbus_test rtu_slave 收到主站请求
[2025-12-29 11:24:40.309][000000113.785] I/user.exmodbus_test 读取成功,返回数据:  201, 202
[2025-12-29 11:24:43.327][000000116.814] I/user.exmodbus_test rtu_slave 收到主站请求
[2025-12-29 11:24:43.329][000000116.814] I/user.exmodbus_test 读取成功,返回数据:  101, 102
[2025-12-29 11:24:46.333][000000119.821] I/user.exmodbus_test rtu_slave 收到主站请求
[2025-12-29 11:24:46.335][000000119.822] I/user.exmodbus_test 读取成功,返回数据:  0, 0

10、如下图所示,如果需要执行写入请求,需要先在执行可写操作的对应区块行的指令处鼠标左键双击填入要写入的数值,然后在鼠标右键双击该数值,最后点击下发写指令

11、执行写入请求后 Luatools 工具与摩尔信使上的日志如下:

[2025-12-29 11:28:38.214][000000351.702] I/user.exmodbus_test rtu_slave 收到主站请求
[2025-12-29 11:28:38.216][000000351.702] I/user.exmodbus_test 写入成功,写入地址:  0 写入数据:  123

12、如下图所示,在摩尔信使上鼠标右击第一个主站,然后点击 “停止轮询”,此时上位机便不会再执行轮询请求操作