|
|
@@ -0,0 +1,406 @@
|
|
|
+## 演示模块概述
|
|
|
+
|
|
|
+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 中,例如:
|
|
|
+
|
|
|
+```lua
|
|
|
+-- 读取请求:
|
|
|
+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 中,例如:
|
|
|
+
|
|
|
+```lua
|
|
|
+-- 读取请求:
|
|
|
+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、Air8000 开发板一块
|
|
|
+
|
|
|
+2、TYPE-C USB数据线一根
|
|
|
+
|
|
|
+3、网线两根(一根开发板使用,一根电脑使用)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## 演示软件环境
|
|
|
+
|
|
|
+1、[Luatools下载调试工具](https://docs.openluat.com/air8000/luatos/common/download/)
|
|
|
+
|
|
|
+2、[Air8000 V2018 版本](https://docs.openluat.com/air8000/luatos/firmware/)(理论上最新版本固件也可以,如果使用最新版本的固件不可以,可以烧录 V2018-1 固件对比验证)
|
|
|
+
|
|
|
+3、[摩尔信使(MThings)官网](https://www.gulink.cn/)(用于模拟 modbus 从站设备)
|
|
|
+
|
|
|
+## 演示核心步骤
|
|
|
+
|
|
|
+### TCP 主站应用模块(字段参数方式,对应 param_field.lua)
|
|
|
+
|
|
|
+1、搭建硬件环境
|
|
|
+
|
|
|
+- 将 TYPE-C USB 数据线一端接在 Air8000 开发板上,另一端接在电脑上
|
|
|
+- 将网线一端接在 Air8000 开发板网口上,另一端接在路由器/交换机上
|
|
|
+
|
|
|
+- 将另一根网线一端接在电脑网口上,另一端接在同一个路由器/交换机上
|
|
|
+
|
|
|
+- 参考图见 演示硬件环境
|
|
|
+
|
|
|
+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-18 15:04:33.822][000000002.471] I/user.exmodbus 连接服务器成功
|
|
|
+[2025-12-18 15:04:34.174][000000002.845] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:34.236][000000002.893] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 15:04:36.234][000000004.893] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:36.250][000000004.906] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 15:04:36.264][000000004.906] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
|
|
|
+[2025-12-18 15:04:36.280][000000004.925] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:38.069][000000006.667] I/mobile sim0 sms ready
|
|
|
+[2025-12-18 15:04:38.071][000000006.668] D/mobile cid1, state0
|
|
|
+[2025-12-18 15:04:38.079][000000006.668] D/mobile bearer act 0, result 0
|
|
|
+[2025-12-18 15:04:38.087][000000006.669] D/mobile NETIF_LINK_ON -> IP_READY
|
|
|
+[2025-12-18 15:04:38.090][000000006.669] I/user.dnsproxy 开始监听
|
|
|
+[2025-12-18 15:04:38.092][000000006.745] D/mobile TIME_SYNC 0
|
|
|
+[2025-12-18 15:04:38.255][000000006.925] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:38.273][000000006.939] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 15:04:40.272][000000008.940] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:40.284][000000008.953] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 15:04:40.294][000000008.953] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
|
|
|
+[2025-12-18 15:04:40.310][000000008.966] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:42.297][000000010.966] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:42.327][000000010.979] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 15:04:42.899][000000011.563] I/user.exmodbus 连接断开
|
|
|
+[2025-12-18 15:04:44.319][000000012.979] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:44.325][000000012.980] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 15:04:44.330][000000012.981] I/user.exmodbus_test 未收到从站 1 的响应(超时)
|
|
|
+[2025-12-18 15:04:44.338][000000012.981] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
|
|
|
+[2025-12-18 15:04:44.344][000000012.983] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 15:04:44.352][000000012.983] I/user.exmodbus_test 未收到从站 2 的响应(超时)
|
|
|
+[2025-12-18 15:04:46.314][000000014.984] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:46.335][000000014.985] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 15:04:46.365][000000014.986] I/user.exmodbus_test 未收到从站 1 的响应(超时)
|
|
|
+[2025-12-18 15:04:47.901][000000016.566] D/socket connect to 192.168.1.100,6000
|
|
|
+[2025-12-18 15:04:47.911][000000016.567] D/net adapter 4 connect 192.168.1.100:6000 TCP
|
|
|
+[2025-12-18 15:04:48.320][000000016.987] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:48.326][000000016.988] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 15:04:48.333][000000016.989] I/user.exmodbus_test 未收到从站 1 的响应(超时)
|
|
|
+[2025-12-18 15:04:48.346][000000016.989] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
|
|
|
+[2025-12-18 15:04:48.350][000000016.991] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 15:04:48.356][000000016.991] I/user.exmodbus_test 未收到从站 2 的响应(超时)
|
|
|
+[2025-12-18 15:04:50.324][000000018.992] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:50.328][000000018.993] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 15:04:50.333][000000018.994] I/user.exmodbus_test 未收到从站 1 的响应(超时)
|
|
|
+[2025-12-18 15:04:50.913][000000019.573] I/user.exmodbus 连接服务器成功
|
|
|
+[2025-12-18 15:04:52.335][000000020.994] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:52.343][000000021.006] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 15:04:52.352][000000021.007] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
|
|
|
+[2025-12-18 15:04:52.359][000000021.019] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:54.357][000000023.020] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:54.384][000000023.032] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 15:04:56.371][000000025.033] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:56.410][000000025.045] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 15:04:56.426][000000025.046] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
|
|
|
+[2025-12-18 15:04:56.441][000000025.063] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1 的值
|
|
|
+```
|
|
|
+
|
|
|
+7、如下图所示,鼠标右键点击 “通道” 下方的按钮,当我们把摩尔信使上由上位机与 Air8000 之间的网络通道关闭后,此时 Air8000 在发送请求时便会收不到响应,Luatools 工具上显示的日志如下:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+```
|
|
|
+[2025-12-18 15:04:42.899][000000011.563] I/user.exmodbus 连接断开
|
|
|
+[2025-12-18 15:04:44.319][000000012.979] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:44.325][000000012.980] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 15:04:44.330][000000012.981] I/user.exmodbus_test 未收到从站 1 的响应(超时)
|
|
|
+[2025-12-18 15:04:44.338][000000012.981] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
|
|
|
+[2025-12-18 15:04:44.344][000000012.983] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 15:04:44.352][000000012.983] I/user.exmodbus_test 未收到从站 2 的响应(超时)
|
|
|
+```
|
|
|
+
|
|
|
+8、如下图所示,鼠标右键点击 “通道” 下方的按钮,当我们把摩尔信使上由上位机与 Air8000 之间的网络通道打开后,此时 Air8000 在发送请求时便会接收到响应,Luatools 工具与摩尔信使上显示的日志如下:
|
|
|
+
|
|
|
+> 程序设计为每隔 2 秒执行一次读取,每隔 4 秒执行一次写入
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+```
|
|
|
+[2025-12-18 15:04:50.913][000000019.573] I/user.exmodbus 连接服务器成功
|
|
|
+[2025-12-18 15:04:52.335][000000020.994] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 15:04:52.343][000000021.006] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 15:04:52.352][000000021.007] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值,寄存器 0 数值为 123 ,寄存器 1 数值为 456
|
|
|
+[2025-12-18 15:04:52.359][000000021.019] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1 的值
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+9、关于 Air8000 执行读取和写入请求后,摩尔信使上位机的数值变化如下图所示:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+### TCP 主站应用模块(原始帧方式,对应 raw_frame.lua)
|
|
|
+
|
|
|
+1、搭建硬件环境
|
|
|
+
|
|
|
+- 将 TYPE-C USB 数据线一端接在 Air8000 开发板上,另一端接在电脑上
|
|
|
+- 将网线一端接在 Air8000 开发板网口上,另一端接在路由器/交换机上
|
|
|
+
|
|
|
+- 将另一根网线一端接在电脑网口上,另一端接在同一个路由器/交换机上
|
|
|
+
|
|
|
+- 参考图见 演示硬件环境
|
|
|
+
|
|
|
+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-18 16:13:55.214][000000002.707] I/user.exmodbus 连接服务器成功
|
|
|
+[2025-12-18 16:13:55.371][000000002.858] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:13:55.405][000000002.869] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 16:13:57.371][000000004.870] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:13:57.380][000000004.881] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 16:13:57.388][000000004.882] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:13:57.396][000000004.893] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1
|
|
|
+[2025-12-18 16:13:59.400][000000006.894] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:13:59.416][000000006.907] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 16:14:01.409][000000008.907] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:01.419][000000008.918] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 16:14:01.429][000000008.919] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:01.434][000000008.930] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1
|
|
|
+[2025-12-18 16:14:03.432][000000010.931] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:03.443][000000010.942] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 16:14:04.549][000000012.037] I/user.exmodbus 连接断开
|
|
|
+[2025-12-18 16:14:05.442][000000012.943] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:05.453][000000012.944] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 16:14:05.462][000000012.945] I/user.exmodbus_test 未收到从站 1 的响应(超时)
|
|
|
+[2025-12-18 16:14:05.471][000000012.945] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:05.479][000000012.946] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 16:14:05.488][000000012.947] I/user.exmodbus_test 未收到从站 2 的响应(超时)
|
|
|
+[2025-12-18 16:14:07.452][000000014.947] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:07.459][000000014.948] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 16:14:07.463][000000014.949] I/user.exmodbus_test 未收到从站 1 的响应(超时)
|
|
|
+[2025-12-18 16:14:09.447][000000016.949] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:09.460][000000016.950] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 16:14:09.464][000000016.950] I/user.exmodbus_test 未收到从站 1 的响应(超时)
|
|
|
+[2025-12-18 16:14:09.467][000000016.951] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:09.475][000000016.952] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 16:14:09.478][000000016.952] I/user.exmodbus_test 未收到从站 2 的响应(超时)
|
|
|
+[2025-12-18 16:14:09.539][000000017.040] D/socket connect to 192.168.1.100,6000
|
|
|
+[2025-12-18 16:14:09.544][000000017.040] D/net adapter 4 connect 192.168.1.100:6000 TCP
|
|
|
+[2025-12-18 16:14:11.460][000000018.953] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:11.467][000000018.954] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 16:14:11.475][000000018.954] I/user.exmodbus_test 未收到从站 1 的响应(超时)
|
|
|
+[2025-12-18 16:14:12.549][000000020.047] I/user.exmodbus 连接服务器成功
|
|
|
+[2025-12-18 16:14:13.454][000000020.955] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:13.470][000000020.966] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 16:14:13.472][000000020.966] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:13.482][000000020.978] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1
|
|
|
+[2025-12-18 16:14:15.483][000000022.979] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:15.499][000000022.990] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 16:14:17.502][000000024.991] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:17.513][000000025.003] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 16:14:17.520][000000025.003] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:17.529][000000025.016] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1
|
|
|
+```
|
|
|
+
|
|
|
+7、如下图所示,鼠标右键点击 “通道” 下方的按钮,当我们把摩尔信使上由上位机与 Air8000 之间的网络通道关闭后,此时 Air8000 在发送请求时便会收不到响应,Luatools 工具上显示的日志如下:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+```
|
|
|
+[2025-12-18 16:14:04.549][000000012.037] I/user.exmodbus 连接断开
|
|
|
+[2025-12-18 16:14:05.442][000000012.943] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:05.453][000000012.944] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 16:14:05.462][000000012.945] I/user.exmodbus_test 未收到从站 1 的响应(超时)
|
|
|
+[2025-12-18 16:14:05.471][000000012.945] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:05.479][000000012.946] E/user.exmodbus TCP 连接未建立或已断开,无法发送请求
|
|
|
+[2025-12-18 16:14:05.488][000000012.947] I/user.exmodbus_test 未收到从站 2 的响应(超时)
|
|
|
+```
|
|
|
+
|
|
|
+8、如下图所示,鼠标右键点击 “通道” 下方的按钮,当我们把摩尔信使上由上位机与 Air8000 之间的网络通道打开后,此时 Air8000 在发送请求时便会接收到响应,Luatools 工具与摩尔信使上显示的日志如下:
|
|
|
+
|
|
|
+> 程序设计为每隔 2 秒执行一次读取,每隔 4 秒执行一次写入
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+```
|
|
|
+[2025-12-18 16:14:12.549][000000020.047] I/user.exmodbus 连接服务器成功
|
|
|
+[2025-12-18 16:14:13.454][000000020.955] I/user.exmodbus_test 开始读取从站 1 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:13.470][000000020.966] I/user.exmodbus_test 成功读取到从站 1 保持寄存器 0-1 的值,寄存器 0 数值为 0 ,寄存器 1 数值为 0
|
|
|
+[2025-12-18 16:14:13.472][000000020.966] I/user.exmodbus_test 开始写入从站 2 保持寄存器 0-1 的值
|
|
|
+[2025-12-18 16:14:13.482][000000020.978] I/user.exmodbus_test 成功写入从站 2 保持寄存器 0-1
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+9、关于 Air8000 执行读取和写入请求后,摩尔信使上位机的数值变化如下图所示:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|