- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码 - 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等) - 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
演示模块概述
1、main.lua:主程序入口;
2、param_field.lua:TCP 主站应用模块(字段参数方式);
3、raw_frame.lua:TCP 主站应用模块(原始帧方式);
4、netdrv_eth_spi.lua:“通过SPI外挂CH390H芯片的以太网卡”驱动模块;
演示功能概述
本 demo 演示的核心功能为:
1、将设备配置为 modbus TCP 主站模式
2、与从站 1 和 从站 2 进行通信
- 对从站 1 进行 2 秒一次的读取保持寄存器 0-1 操作
- 对从站 2 进行 4 秒一次的写入保持寄存器 0-1 操作
注意事项:
1、该示例程序需要搭配 exmodbus 扩展库使用
2、在 main.lua 中 require "param_field" 模块,可以演示标准 modbus TCP 请求报文格式的使用方式
3、在 main.lua 中 require "raw_frame" 模块,可以演示非标准 modbus TCP 请求报文格式的使用方式
4、require "param_field" 和 require "raw_frame" 不要同时打开,否则功能会有冲突
特别说明:
关于 TCP 报文,exmodbus 扩展库支持通过 字段参数 或 原始帧 两种方式进行配置
这两种配置方式本质都由用户将其放入 table 中在调用接口时传入,区别如下:
1、字段参数方式
这种方式需要用户将请求报文进行解析后,将其放入 table 中,例如:
-- 读取请求:
local config = {
slave_id = 1, -- 从站地址
reg_type = exmodbus.HOLDING_REGISTER, -- 寄存器类型:保持寄存器
start_addr = 0x0000, -- 寄存器起始地址
reg_count = 0x0002, -- 寄存器数量
timeout = 1000 -- 超时时间
}
-- 写入请求:
local config = {
slave_id = 2, -- 从站地址
reg_type = exmodbus.HOLDING_REGISTER, -- 寄存器类型:保持寄存器
start_addr = 0x0000, -- 寄存器起始地址
reg_count = 0x0002, -- 寄存器数量
data = {
[start_addr] = 0x0012, -- 寄存器 0 的值
[start_addr + 1] = 0x0034, -- 寄存器 1 的值
}
force_multiple = true, -- 是否强制使用多个寄存器写入操作(写多个线圈功能码:0x0F;写多个寄存器功能码:0x10)
timeout = 1000 -- 超时时间
}
2、原始帧方式
这种方式只需要用户将原始请求报文放入 table 中,例如:
-- 读取请求:
local config = {
raw_request = string.char(
0x00, 0x01, -- 事务标识符
0x00, 0x00, -- 协议标识符
0x00, 0x06, -- 长度
0x01, -- 单元标识符(从站地址)
0x03, -- 功能码:读取保持寄存器
0x00, 0x00, -- 寄存器起始地址
0x00, 0x02 -- 寄存器数量
),
timeout = 1000 -- 超时时间 1000 ms
}
-- 写入请求:
local config = {
raw_request = string.char(
0x00, 0x02, -- 事务标识符
0x00, 0x00, -- 协议标识符
0x00, 0x0B, -- 长度
0x02, -- 单元标识符(从站地址)
0x10, -- 功能码:写入保持寄存器
0x00, 0x00, -- 寄存器起始地址
0x00, 0x02, -- 寄存器数量
0x04, -- 字节数量
0x00, 0x12, -- 寄存器 0 的值
0x00, 0x34 -- 寄存器 1 的值
),
timeout = 1000 -- 超时时间 1000 ms
}
如果你需要发送的请求报文是符合 modbus TCP 标准格式,可以使用 字段参数 或者 原始帧 方式
如果你需要发送的请求报文是非标准格式,必须使用 原始帧 方式,使用 字段参数 方式会导致解析的数据不正确
演示硬件环境
1、Air780EPM V1.3 开发板一块
2、TYPE-C USB数据线一根
3、网线两根(一根开发板使用,一根电脑使用)
演示软件环境
2、Air780EPM V2018 版本(理论上最新版本固件也可以,如果使用最新版本的固件不可以,可以烧录 V2018-1 固件对比验证)
3、摩尔信使(MThings)官网(用于模拟 modbus 从站设备)
演示核心步骤
TCP 主站应用模块(字段参数方式,对应 param_field.lua)
1、搭建硬件环境
-
将 TYPE-C USB 数据线一端接在 Air780EPM 开发板上,另一端接在电脑上
-
将网线一端接在 Air780EPM 开发板网口上,另一端接在路由器/交换机上
-
将另一根网线一端接在电脑网口上,另一端接在同一个路由器/交换机上
-
参考图见 演示硬件环境
2、在摩尔信使上配置模拟 TCP 从站设备环境
-
点击左上角的 “通道管理” 按钮,在 “通道管理” 窗口点击 “网络通道” 按钮,点击 NET000 通道后面的 “配置” 按钮,在 “网络参数配置” 窗口配置网络参数,操作流程如下:
-
点击左上角的 “添加设备”按钮,在 “添加设备” 窗口对通信设备参数进行配置,配置好后点击 “添加” 按钮,左侧栏即为添加后的效果,操作流程图如下:
-
点击左侧的第一个从站(我这里显示为 “NET000-001”),点击中上部分的 “新增数据” 按钮,在 “新增数据配置” 窗口将 “数据条数” 、“区块” 、“起始数据地址” 按照下图中所示进行配置,最后点击 “确定” 按钮,此时便成功新增保持寄存器 0 和 保持寄存器 1,操作流程图如下:
-
点击左侧的第二个从站(我这里显示为 “NET000-002”),点击中上部分的 “新增数据” 按钮,在 “新增数据配置” 窗口将 “数据条数” 、“区块” 、“起始数据地址” 按照下图中所示进行配置,最后点击 “确定” 按钮,此时便成功新增保持寄存器 0 和 保持寄存器 1,操作流程图如下:
-
此时在摩尔信使上的配置操作已经完成,如果需要在摩尔信使上查看报文,那么操作流程图如下:
3、调整软件代码
-
打开 require "param_field" ,注释掉 require "raw_frame" ,操作流程图如下:
-
在 ”param_field.lua“ 文件中修改对应的 IP 地址和端口号(与上位机保持一致)
4、打开 Luatools 工具,根据要求烧录本次所需要的内核固件和脚本代码
5、烧录成功后,自动开机运行
6、开机运行后 Luatools 工具上记录的日志如下:
[2025-12-30 13:51:30.910][000000002.003] I/user.exmodbus 连接服务器成功
[2025-12-30 13:51:31.226][000000002.334] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:31.235][000000002.347] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 13:51:33.240][000000004.276] D/mobile cid1, state0
[2025-12-30 13:51:33.251][000000004.277] D/mobile bearer act 0, result 0
[2025-12-30 13:51:33.257][000000004.277] D/mobile NETIF_LINK_ON -> IP_READY
[2025-12-30 13:51:33.261][000000004.278] I/user.dnsproxy 开始监听
[2025-12-30 13:51:33.268][000000004.347] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:33.271][000000004.365] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 13:51:33.276][000000004.365] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
[2025-12-30 13:51:33.280][000000004.379] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1 的值
[2025-12-30 13:51:33.284][000000004.399] D/mobile TIME_SYNC 0
[2025-12-30 13:51:35.267][000000006.379] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:35.280][000000006.392] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 13:51:37.273][000000008.392] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:37.289][000000008.404] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 13:51:37.296][000000008.405] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
[2025-12-30 13:51:37.300][000000008.417] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1 的值
[2025-12-30 13:51:38.518][000000009.636] I/user.exmodbus 连接断开
[2025-12-30 13:51:39.300][000000010.418] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:39.307][000000010.419] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 13:51:39.312][000000010.420] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 13:51:41.318][000000012.421] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:41.327][000000012.422] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 13:51:41.338][000000012.423] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 13:51:41.348][000000012.424] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
[2025-12-30 13:51:41.355][000000012.425] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 13:51:41.361][000000012.426] I/user.exmodbus_test 未收到从站 2 的响应(超时)
[2025-12-30 13:51:43.321][000000014.426] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:43.327][000000014.427] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 13:51:43.332][000000014.428] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 13:51:43.525][000000014.639] D/socket connect to 192.168.1.100,6000
[2025-12-30 13:51:43.528][000000014.640] D/net adapter 4 connect 192.168.1.100:6000 TCP
[2025-12-30 13:51:45.315][000000016.429] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:45.321][000000016.430] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 13:51:45.325][000000016.431] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 13:51:45.330][000000016.432] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
[2025-12-30 13:51:45.335][000000016.433] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 13:51:45.340][000000016.434] I/user.exmodbus_test 未收到从站 2 的响应(超时)
[2025-12-30 13:51:46.527][000000017.647] I/user.exmodbus 连接服务器成功
[2025-12-30 13:51:47.318][000000018.434] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:47.334][000000018.446] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 13:51:49.340][000000020.447] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:49.351][000000020.459] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 13:51:49.361][000000020.460] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
[2025-12-30 13:51:49.370][000000020.472] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1 的值
[2025-12-30 13:51:51.361][000000022.473] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:51.368][000000022.485] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 13:51:53.382][000000024.486] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:53.388][000000024.498] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 13:51:53.392][000000024.499] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
[2025-12-30 13:51:53.396][000000024.511] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1 的值
7、如下图所示,鼠标右键点击 “通道” 下方的按钮,当我们把摩尔信使上由上位机与 Air780EPM 之间的网络通道关闭后,此时 Air780EPM 在发送请求时便会收不到响应,Luatools 工具上显示的日志如下:
[2025-12-30 13:51:38.518][000000009.636] I/user.exmodbus 连接断开
[2025-12-30 13:51:39.300][000000010.418] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:39.307][000000010.419] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 13:51:39.312][000000010.420] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 13:51:41.318][000000012.421] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:41.327][000000012.422] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 13:51:41.338][000000012.423] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 13:51:41.348][000000012.424] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
[2025-12-30 13:51:41.355][000000012.425] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 13:51:41.361][000000012.426] I/user.exmodbus_test 未收到从站 2 的响应(超时)
8、如下图所示,鼠标右键点击 “通道” 下方的按钮,当我们把摩尔信使上由上位机与 Air780EPM 之间的网络通道打开后,此时 Air780EPM 在发送请求时便会接收到响应,Luatools 工具与摩尔信使上显示的日志如下:
程序设计为每隔 2 秒执行一次读取,每隔 4 秒执行一次写入
[2025-12-30 13:51:46.527][000000017.647] I/user.exmodbus 连接服务器成功
[2025-12-30 13:51:47.318][000000018.434] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:47.334][000000018.446] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 13:51:49.340][000000020.447] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 13:51:49.351][000000020.459] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 13:51:49.361][000000020.460] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
[2025-12-30 13:51:49.370][000000020.472] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1 的值
9、关于 Air780EPM 执行读取和写入请求后,摩尔信使上位机的数值变化如下图所示:
TCP 主站应用模块(原始帧方式,对应 raw_frame.lua)
1、搭建硬件环境
-
将 TYPE-C USB 数据线一端接在 Air780EPM 开发板上,另一端接在电脑上
-
将网线一端接在 Air780EPM 开发板网口上,另一端接在路由器/交换机上
-
将另一根网线一端接在电脑网口上,另一端接在同一个路由器/交换机上
-
参考图见 演示硬件环境
2、在摩尔信使上配置模拟 TCP 从站设备环境
-
点击左上角的 “通道管理” 按钮,在 “通道管理” 窗口点击 “网络通道” 按钮,点击 NET000 通道后面的 “配置” 按钮,在 “网络参数配置” 窗口配置网络参数,操作流程如下:
-
点击左上角的 “添加设备”按钮,在 “添加设备” 窗口对通信设备参数进行配置,配置好后点击 “添加” 按钮,左侧栏即为添加后的效果,操作流程图如下:
-
点击左侧的第一个从站(我这里显示为 “NET000-001”),点击中上部分的 “新增数据” 按钮,在 “新增数据配置” 窗口将 “数据条数” 、“区块” 、“起始数据地址” 按照下图中所示进行配置,最后点击 “确定” 按钮,此时便成功新增保持寄存器 0 和 保持寄存器 1,操作流程图如下:
-
点击左侧的第二个从站(我这里显示为 “NET000-002”),点击中上部分的 “新增数据” 按钮,在 “新增数据配置” 窗口将 “数据条数” 、“区块” 、“起始数据地址” 按照下图中所示进行配置,最后点击 “确定” 按钮,此时便成功新增保持寄存器 0 和 保持寄存器 1,操作流程图如下:
-
此时在摩尔信使上的配置操作已经完成,如果需要在摩尔信使上查看报文,那么操作流程图如下:
3、调整软件代码
-
打开 require "raw_frame" ,注释掉 require "param_field" ,操作流程图如下:
-
在 ”raw_frame.lua“ 文件中修改对应的 IP 地址和端口号(与上位机保持一致)
4、打开 Luatools 工具,根据要求烧录本次所需要的内核固件和脚本代码
5、烧录成功后,自动开机运行
6、开机运行后 Luatools 工具上记录的日志如下:
[2025-12-30 14:06:14.956][000000020.343] I/user.exmodbus 连接服务器成功
[2025-12-30 14:06:14.971][000000020.367] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:14.987][000000020.380] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 14:06:14.998][000000020.380] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
[2025-12-30 14:06:15.003][000000020.393] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1
[2025-12-30 14:06:16.000][000000022.394] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:17.005][000000022.405] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 14:06:19.007][000000024.406] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:19.024][000000024.417] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 14:06:19.029][000000024.417] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
[2025-12-30 14:06:19.038][000000024.434] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1
[2025-12-30 14:06:19.887][000000025.289] I/user.exmodbus 连接断开
[2025-12-30 14:06:21.037][000000026.435] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:21.060][000000026.436] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 14:06:21.064][000000026.437] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 14:06:23.037][000000028.437] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:23.047][000000028.438] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 14:06:23.055][000000028.439] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 14:06:23.060][000000028.439] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
[2025-12-30 14:06:23.067][000000028.440] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 14:06:23.074][000000028.441] I/user.exmodbus_test 未收到从站 2 的响应(超时)
[2025-12-30 14:06:24.890][000000030.292] D/socket connect to 192.168.1.100,6000
[2025-12-30 14:06:24.900][000000030.293] D/net adapter 4 connect 192.168.1.100:6000 TCP
[2025-12-30 14:06:25.045][000000030.441] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:25.056][000000030.442] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 14:06:25.073][000000030.443] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 14:06:27.038][000000032.443] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:27.046][000000032.444] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 14:06:27.051][000000032.445] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 14:06:27.056][000000032.445] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
[2025-12-30 14:06:27.059][000000032.446] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 14:06:27.064][000000032.447] I/user.exmodbus_test 未收到从站 2 的响应(超时)
[2025-12-30 14:06:27.896][000000033.299] I/user.exmodbus 连接服务器成功
[2025-12-30 14:06:29.052][000000034.447] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:29.056][000000034.459] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 14:06:31.063][000000036.460] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:31.068][000000036.471] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 14:06:31.071][000000036.471] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
[2025-12-30 14:06:31.076][000000036.483] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1
[2025-12-30 14:06:33.078][000000038.483] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:33.095][000000038.494] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
7、如下图所示,鼠标右键点击 “通道” 下方的按钮,当我们把摩尔信使上由上位机与 Air780EPM 之间的网络通道关闭后,此时 Air780EPM 在发送请求时便会收不到响应,Luatools 工具上显示的日志如下:
[2025-12-30 14:06:19.887][000000025.289] I/user.exmodbus 连接断开
[2025-12-30 14:06:21.037][000000026.435] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:21.060][000000026.436] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 14:06:21.064][000000026.437] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 14:06:23.037][000000028.437] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:23.047][000000028.438] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 14:06:23.055][000000028.439] I/user.exmodbus_test 未收到从站 1 的响应(超时)
[2025-12-30 14:06:23.060][000000028.439] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
[2025-12-30 14:06:23.067][000000028.440] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
[2025-12-30 14:06:23.074][000000028.441] I/user.exmodbus_test 未收到从站 2 的响应(超时)
8、如下图所示,鼠标右键点击 “通道” 下方的按钮,当我们把摩尔信使上由上位机与 Air780EPM 之间的网络通道打开后,此时 Air780EPM 在发送请求时便会接收到响应,Luatools 工具与摩尔信使上显示的日志如下:
程序设计为每隔 2 秒执行一次读取,每隔 4 秒执行一次写入
[2025-12-30 14:06:27.896][000000033.299] I/user.exmodbus 连接服务器成功
[2025-12-30 14:06:29.052][000000034.447] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:29.056][000000034.459] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 14:06:31.063][000000036.460] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
[2025-12-30 14:06:31.068][000000036.471] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
[2025-12-30 14:06:31.071][000000036.471] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
[2025-12-30 14:06:31.076][000000036.483] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1
9、关于 Air780EPM 执行读取和写入请求后,摩尔信使上位机的数值变化如下图所示:














