当前位置: 首页 > news >正文

数据交互与消息优化:Air8000 Modbus通信消息设计之道

高效的数据交互离不开精心设计的通信消息。本章聚焦Air8000 Modbus数据区及消息帧的创建,解析寄存器地址定义、消息结构优化等要点,结合主从交互案例,分享提升通信效率与稳定性的实用技巧。

一、MODBUS 概述

Modbus 是一种广泛应用于工业自动化领域的串行通信协议,由 Modicon 公司(现为施耐德电气旗下)于 1979 年推出,主要用于可编程逻辑控制器(PLC)与工业设备之间的通信。其设计简单、开放、易于实现,成为工业通信的事实标准。

1. 1 核心特点

主从架构:由主设备(Master)发起请求,从设备(Slave)响应,支持单主或多从模式。

典型应用:一台工控机(主)与多个传感器/执行器(从)通信。

1.2 常用协议变体

Modbus RTU:基于二进制编码,通过串行接口(RS-232/RS-485)传输,紧凑高效。

Modbus ASCII:使用 ASCII 字符编码,可读性强但效率低。

Modbus TCP/IP:基于以太网,适用于现代工业网络。

协议类型对比:

image

1.3 数据模型

1.3.1 Modbus 定义四种数据类型,每种通过不同功能码访问:

线圈(Coils):可读可写的布尔量(功能码 01 读,05 写单个,15 写多个)。

离散输入(Discrete Inputs):只读布尔量(功能码 02 读)。

保持寄存器(Holding Registers):可读可写的 16 位整数(功能码 03 读,06 写单个,16 写多个)。

输入寄存器(Input Registers):只读的 16 位整数(功能码 04 读)。

1.3.2 简单报文结构

请求帧:功能码 + 数据地址 + 数据长度 + CRC 校验(RTU)或 TCP 头(Modbus TCP)。

响应帧:功能码 + 返回数据 + 校验。

1.4 优缺点

1.4.1 优点:

开放免费,兼容性强。

在多种电气接口(RS232、RS485)及多种通信介质(以太网,串行电路,蓝牙,wifi 等)中运行 。

报文帧简单紧凑。

1.4.2 缺点:

无内置安全机制(需依赖网络隔离或加密层)。

仅支持基础数据类型(需扩展协议处理浮点数等)。

二、演示功能概述

本篇文章演示的内容为:通过 RTU、ASCII 和 TCP 三种常用协议,Air8000 开发板作为主站(客户端)与从站连接通讯的过程,或开发板作为从站(服务器)与主站连接通讯的过程。

三、准备硬件环境

3.1 硬件准备

参考:硬件环境清单第二章节内容,准备以及组装好硬件环境。(硬件环境清单:https://docs.openluat.com/air8000/luatos/common/hwenv/)
485/232 转 USB:

image

网线:

image

3.2 开发板组合演示

3.2.1 RTU 协议和 ASCII 协议测试连接

image

3.2.2 TCP 协议测试连接

image

四、准备软件环境

在开始实践本示例之前,先筹备一下软件环境:

  1. Luatools 工具;

  2. LuatOS-SoC_V2014_Air8000_2;此页面有新版本固件的话选用最新版本固件。

3.LuatOS 需要的脚本和资源文件:https://gitee.com/openLuat/LuatOS/tree/master/module/Air8000/demo/modbus

4.lib 脚本文件:使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件;

准备好软件环境之后,接下来查看(如何烧录项目文件到 Air8000 开发板中:https://docs.openluat.com/air8000/luatos/common/download/),将本篇文章中演示使用的项目文件烧录到 Air8000 开发板中。

5.上位机下位机模拟软件:https://gulink.cn/

5.1 API 接口介绍
https://docs.openluat.com/osapi/core/modbus/

5.2 代码解析

5.2.1 RTU

5.2.1.1 MASTER_RTU

1.初始化通讯串口

image

2.Modbus 主站创建

image

3.添加从站
image

4.创建数据区和通信消息

image

5.启动 Modbus 设备
image

6.定时状态检查
image

7.数据读取并转化为 json
image

5.2.1.2 SLAVE_RTU

1.初始化设置

image

2.Modbus 从站创建:创建了一个 RTU 模式的 Modbus 从站,添加了两个数据块:保持寄存器区和线圈区

image

3.启动 modbus 从站
image

4.数据更新
image

5.2.1 ASCII

5.2.2.1 MASTER_ASCII

1.初始化通讯串口

image

2.Modbus 主站创建
image

3.添加从站
image

4.创建数据区和通信消息
image

5.启动 Modbus 设备
image

6.定时状态检查
image

7.数据读取并转化为 json
image

5.2.2.2 SLAVE_ASCII

1.初始化设置
image

2.Modbus 从站创建:创建了一个 RTU 模式的 Modbus 从站,添加了两个数据块:保持寄存器区和线圈区
image

3.启动 modbus 从站
image

4.数据更新
image

5.2.3 TCP

5.2.3.1 MASTER_TCP

1.初始化
image

2.SPI 和以太网驱动初始化
image

3.创建主站
image

4.添加从站
image

5.创建数据请求消息
image

6.启动 Modbus 主站
image

7.从站状态监控
image

8.数据处理
image

5.2.3.2 SLAVE_TCP

1.网络硬件初始化
image

2.SPI 和网络驱动初始化
image

3.等待网络连接
image

4.IP 地址配置
image

5.DHCP 和 DNS 服务

image

6.系统监控任务
image

7.创建 Modbus TCP 从站
image

8.创建数据存储区
image

9.启动 Modbus 从站
image

10.定时数据更新
image

六、运行结果展示

6.1 RTU 协议运行结果

6.1.1 modbus.master_rtu

6.1.1.1 完整代码展示

image

6.1.1.2 效果展示

1.打开 MThings(第四章中 第五项提到的上位机下位机软件 摩尔信使),界面如下。

image

2.点击右上角进入通道管理。

image

3.点击通道管理。
image

4.进入后可以看到 4 个 com 口,选择 485 通道的 com 口进行配置。
image

由设备管理器可知 485 通道是 com20
image

5.点入配置,按照代码中 uart.setup 设置参数后,点击确定即可,设置完毕后在通道管理界面配置的通道显示属于正常状态,用户如果接的是自己的下位机,请将 uart.setup 传入的参数成自己下位机的配置参数。

image

6.返回初始界面,点击添加设备。
image

7.通道选择刚刚配置过的 485 通道 COM20,设备类型是模拟从机,地址是添加从站的 id。
image

8.增加数据配置,数据条目是寄存器的数量。
image

点击确定后可以看到增加了 4 个条目,双击数值一栏,然后再双击固定值一栏即可按需选择模拟数据的方法。

image
image

9.数据配置完成后,在主界面可以看到数值按照设置的通讯时间间隔开始变换,在日志中也可以看到收到的数据,modbus 连接和通讯成功。
image

6.1.2 modbus.slave_rtu

6.1.2.1 完整代码展示

image

6.1.2.2 效果展示
1.打开 MThings(第四章中 第五项提到的上位机下位机软件 摩尔信使),界面如下。

image

2.点击右上角进入通道管理。

image

3.点击通道管理。
image

4.进入后可以看到 4 个 com 口,选择 485 通道的 com 口进行配置。
image

由设备管理器可知 485 通道是 com20
image

5.点入配置,按照代码中 uart.setup 设置参数后,选择 RTU 传输协议,点击确定即可,设置完毕后在通道管理界面配置的通道显示属于正常状态。用户如果接的是自己的下位机,请将 uart.setup 传入的参数成自己下位机的配置参数。
image

6.返回初始界面,点击添加设备。
image

7.通道选择刚刚配置过的 485 通道 COM20,设备类型是模拟主站,地址是创建从站的 id。
image

8.增加数据配置,根据需要选择读取的寄存器与线圈数据。
image
image

9.添加成功后,双击数值栏就可以获取目前从站的数据了,开发板做从站和主站连接通讯成功。
image

6.2 ASCII 协议运行结果

6.2.1 modbus.master_ascii

6.2.1.1 完整代码展示

image

6.2.1.2 效果展示

1.打开 MThings(第四章中 第五项提到的上位机下位机软件 摩尔信使),界面如下。

image

2.点击右上角进入通道管理。
image

3.点击通道管理。
image

4.进入后可以看到 4 个 com 口,选择 485 通道的 com 口进行配置。
image

由设备管理器可知 485 通道是 com20
image

5.点入配置,按照代码中 uart.setup 设置参数后,选择 ASCII 传输协议,点击确定即可,设置完毕后在通道管理界面配置的通道显示属于正常状态。用户如果接的是自己的下位机,请将 uart.setup 传入的参数成自己下位机的配置参数。

image

6.返回初始界面,点击添加设备。

image

7.通道选择刚刚配置过的 485 通道 COM20,设备类型是模拟从机,地址是添加从站的 id。

image

8.增加数据配置,数据条目是寄存器的数量。

image

点击确定后可以看到增加了 4 个条目,双击数值一栏,然后再双击固定值一栏即可按需选择模拟数据的方法
image

image

9.数据配置完成后,在主界面可以看到数值按照设置的通讯时间间隔开始变换,在日志中也可以看到收到的数据,modbus 连接和通讯成功。
image
image

6.2.2 modbus.slave_ascii

6.2.2.1 完整代码展示

image

6.2.2.2 效果展示

1.打开 MThings(第四章中 第五项提到的上位机下位机软件 摩尔信使),界面如下。

image

2.点击右上角进入通道管理。
image

3.点击通道管理。
image

4.进入后可以看到 4 个 com 口,选择 485 通道的 com 口进行配置。
image

由设备管理器可知 485 通道是 com20
image

5.点入配置,按照代码中 uart.setup 设置参数后,选择 ASCII 传输协议,点击确定即可,设置完毕后在通道管理界面配置的通道显示属于正常状态。用户如果接的是自己的下位机,请将 uart.setup 传入的参数成自己下位机的配置参数。
image

6.返回初始界面,点击添加设备。

image

7.通道选择刚刚配置过的 485 通道 COM20,设备类型是模拟主站,地址是创建从站的 id。
image

8.增加数据配置,根据需要选择读取的寄存器与线圈数据。
image

image

9.添加成功后,双击数值栏就可以获取目前从站的数据了,开发板做从站和主站连接通讯成功。
image

6.3 TCP 协议运行结果

6.3.1 modbus.master_tcp

6.3.1.1 完整代码展示

mian.lua

image

lan.lua

image

6.3.1.2 效果展示

1.打开 MThings(第四章中 第五项提到的上位机下位机软件 摩尔信使),界面如下。

image

2.点击右上角进入通道管理。
image

3.点击通道管理。
image

4.进入后选择网络通道,然后进行网络参数配置。
image

5.连接模式选择 tcp 服务器,本地 ip 在把脚本烧录后可以看到开发板分配的 ip,端口号设置为代码中 mb_slave1 = modbus.add_slave(mb_tcp, 1, "192.168.4.100", 6000)创建从站的端口号。

image

6.返回初始界面,点击添加设备。
image

7.通道选择刚刚配置的 NET001 网络通道,设备类型是模拟从机,地址是创建从站的 id。
image

8.增加数据配置,根据需要选择寄存器或线圈数据。
image

9.点击确定后可以看到增加了 4 个条目,双击数值一栏,然后再双击固定值一栏即可按需选择模拟数据的方法。
image

image

10.设置完成后则可以看到模拟从机数据开始变化,日志上显示开发板获取数据,主站与从站连接通讯成功。
image

6.3.2 modbus.slave_tcp

6.3.2.1 完整代码展示

main.lua
image

lan.lua
image

6.3.2.2 效果展示

1.打开 MThings(第四章中 第五项提到的上位机下位机软件 摩尔信使),界面如下。

image

2.点击右上角进入通道管理。
image

3.点击通道管理。
image

4.进入后选择网络通道,然后进行网络参数配置。

image

5.连接模式选择 tcp 客户端,本地 ip 在把脚本烧录后可以看到开发板分配的 ip,目标 ip 是开发板的 IP,为 192.168.4.1,目标端口号为脚本中 mb_tcp_s = modbus.create_slave(modbus.MODBUS_TCP, slave_id, 6000, socket.LWIP_ETH)设置的。
image

6.返回初始界面,点击添加设备。
image

7.通道选择刚刚配置的 NET001 网络通道,设备类型是模拟主站,地址是创建从站的 id。
image

8.增加数据配置,根据需要选择寄存器或线圈数据。
image

image

9.点击数值栏获取到从站寄存器和线圈的数据,主站与从站连接与通讯成功。
image

七、总结

本教程演示了 Air8000 modbus 在 RTU、ASCII 和 TCP 三种协议下的使用过程,请根据具体场景选择您需要的 demo 即可。

八、常见问题

1.删除从站地址和句柄位删除失败

删除失败可能是主站为关闭,删除从站需要在主站关闭后,删除后可再次打开主站观察从站是否删除成功。

2.开发板用 TCP 协议,如何修改开发板与 PC 端的连接方式

在 lan.lua 中修改 socket API。

今天的内容就分享到这里了!

http://www.gsyq.cn/news/33847.html

相关文章:

  • DataTable所有数据转换成实体类列表
  • 2025年合同纠纷律师联系电话推荐:靠谱律师一次找全
  • 2025年合同纠纷律师联系电话推荐:高效沟通赢在起点
  • 2025年10月智能工厂规划咨询公司推荐:五强排行与选择指南
  • 2025年10月智能工厂规划咨询公司推荐:精选榜单一键查
  • 2025年10月北京商业工装设计公司推荐榜单:权威评测与选择指南
  • 详细介绍:网络爬虫技术规范与应用指南系列(xc—1)
  • 从环保到美学:2025年艺术涂料厂家的消费逻辑与行业进化,意大利进口艺术涂料,进口艺术涂料厂家推荐
  • 2025年上海装修公司权威推荐榜:老房翻新/毛胚改造/局部装修/设计施工/现代简约/奶油法式/全包半包/自住出租/婚房公寓/别墅大宅/办公室餐饮装修
  • 2025年不锈钢铸造厂家推荐榜:兴化德邺五星突围!800 吨年产量适配多场景,3 家企业凭精密 / 耐腐 / 高性价比筑品质根基
  • 在java中使用二维数组保存颜色值
  • 装修石材藏辐射?海鲜怕核污染?核辐射检测选对才有用,正点原子ND1核辐射检测仪到手,精度够硬,居家户外都能测!
  • QML学习笔记(二十二)QML的TextInput - 实践
  • C++内联函数inline及与宏使用的比较
  • vue2x添加一个元素拖拽功能
  • 直扩信号参数估计:载频、码速率和扩频增益
  • 2025 年防爆位移传感器厂家联系方式推荐,杭州浙达精益提供专业设备与可靠技术支持
  • 2025年振弦式频率读数仪609供货厂家权威推荐榜单:读数仪609/测读仪读数仪609/土木工程用609读数仪源头厂家精选
  • 直播|均降 40% 的 GPU 成本,大规模 Agent 部署和运维的捷径是什么?
  • 2025年户外面料厂家推荐排行榜:尼龙/涤纶/尼龙格子/珍珠点/登山布/户外速干/瑜伽/梭织/TR消光面料公司推荐
  • 2025年铝单板厂家推荐排行榜,氟碳铝单板,仿木纹铝单板,仿石材铝单板,幕墙装饰铝单板公司精选
  • 基于Matlab的深度堆叠自编码器(SAE)实现与分类应用
  • WComputer2027.1下载 WComputer2027.1 downloadWComputer2027.1ダウンロード
  • 2025 年工业不锈钢管,激光切割不锈钢管,铁管不锈钢管厂家最新推荐,产能、专利、环保三维数据透视
  • 2025 年不锈钢管圆筒,焊管不锈钢管,花纹不锈钢管,菱形不锈钢管厂家最新推荐,技术实力与市场口碑深度解析
  • 【大数据高并发核心场景实战】 数据持久化层 - 查询分离
  • 2025 保研辅导,保研机构,保研星途,保研规划机构最新推荐,聚焦资质、案例、售后的五家机构深度解读
  • 2025年气缸管厂家权威推荐榜:精密气缸管,不锈钢气缸管,珩磨气缸管,薄壁气缸管,焊接气缸管,冷拔气缸管,食品级气缸管,海洋用气缸管专业供应商
  • 20251029
  • 2025年反应釜厂家权威推荐榜:搪玻璃反应釜/搪瓷反应釜/开式闭式反应釜/非标搪玻璃反应釜专业选购指南