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

映翰通 IG502 从零到上云:Modbus RTU + MQTT 工业数据采集实战(附代码)

一、前言

在工业物联网场景中,Modbus RTU凭借布线简单、抗干扰能力强等优势,广泛用于现场设备数据采集;而MQTT作为轻量级发布/订阅协议,传输效率高、适配云平台架构,已成为工业数据上云的主流选择。

映翰通 IG502工业网关作为轻量级边缘计算设备,可实现 Modbus RTU 与 MQTT 的完美桥接:南向采集现场 Modbus RTU 设备数据,北向通过 MQTT 发布至云平台,实现「现场采集、云端汇聚」。

本文将通过本地模拟环境,完整演示以下全流程:

  1. Modbus Slave模拟 RTU 从站设备,生成测试数据
  2. IG502采集 Modbus RTU 数据(配置控制器与测点)
  3. IG502配置 MQTT 云服务并发布数据
  4. 云端或 MQTT 客户端接收并验证数据

步骤细化到接线、配置、验证,并附完整 Python 代码,确保新手也能快速复现。

二、测试环境准备

2.1 硬件清单

序号设备/物料说明
1映翰通 IG502 工业网关已通电并接入本地局域网
2USB 转 RS485 转换器用于电脑与网关的 485 通信
3485 通信线A、B 两根信号线
4电脑 1 台安装调试软件,与网关同网段

2.2 软件清单

序号软件用途
1Modbus Slave模拟 Modbus RTU 从站设备,生成测试数据
2MQTT 客户端(如 MQTTX)订阅云端 Topic,接收 IG502 转发的数据
3浏览器登录 IG502 网关 Web 管理界面

三、Step1:Modbus Slave 模拟 RTU 从站数据

  1. 打开Modbus Slave,新建一个 Modbus RTU 从站连接
  2. 配置串口参数:波特率 9600无校验8 数据位1 停止位(与 IG502 控制器配置一致)
  3. 设置从站地址为1
  4. 在保持寄存器(如 40001~40009)中填入测试数据,供 IG502 采集
  5. 将电脑的 USB 转 485 与 IG502 的 RS485 口(A、B)正确连接,确保 Modbus Slave 能正常响应主站请求

四、Step2:登录 IG502 边缘计算网关

  1. 在浏览器中输入 IG502 的 LAN 地址(如http://192.168.2.1
  2. 进入边缘计算网关登录页面,输入用户名和密码(默认一般为adm
  3. 登录后进入InGateway管理界面,顶部导航栏包含「概览」「网络」「边缘计算」「系统管理」「高级功能」
  4. 概览页面可查看设备型号(如 IG502L)、网络连接状态、Python 边缘计算引擎是否启用等,确保设备运行正常

五、Step3:配置 Modbus RTU 控制器

进入边缘计算 → 设备监控 → 测点监控,在「控制器列表」中新建 Modbus RTU 控制器。

5.1 操作步骤

步骤 1:点击新建控制器
在控制器列表右侧,点击「+」图标,新建控制器。

步骤 2:填写控制器参数
在弹出的「编辑控制器」窗口中,填写以下必填项:

参数说明示例值
名称控制器标识测试PLC1
控制器协议选择 Modbus RTUModbus RTU
从站地址与 Modbus Slave 一致1
通讯方式串口类型RS485
轮询周期采集间隔(秒)10

步骤 3:确认
点击「确认」保存配置,控制器列表中会出现「测试PLC1 (Modbus RTU)」。

六、Step4:添加测点

在控制器「测试PLC1」下,点击添加测点,配置需要采集的数据点。

6.1 添加测点配置项

在「添加测点」弹窗中,填写以下关键字段:

字段说明示例
测点名称数据点标识point1、point2...
地址类型Modbus寄存器类型保持寄存器
地址寄存器地址40002~40009(对应 Modbus Slave 的保持寄存器)
数据类型数据格式WORD、FLOAT 等
读写权限一般选只读Read
所属分组用于MQTT发布时筛选qunlixi
存储历史数据按照需要开启可选

七、Step5:配置 MQTT 云服务

进入边缘计算 → 设备监控 → 云服务,配置 MQTT 连接与发布。

7.1 操作步骤

步骤 1:点击云服务
在左侧菜单「设备监控」下,点击「云服务」

步骤 2:启用云服务
将「启用云服务」开关拨至开启,云平台类型选择「标准 MQTT」

步骤 3:输入云服务器地址
在「基本设置」中填写:

参数说明示例值
服务器地址MQTT Broker 地址broker.emqx.io
MQTT 客户端 ID设备唯一标识,可用${SN}自动填充${SN}
启用用户验证若 Broker 需认证则开启按需

点击「提交」,确认状态栏显示「连接成功」。

步骤 4:新建发布消息
在「消息管理(标准 MQTT) → 发布」中,点击「添加」,新建一条发布配置。

八、Step6:配置 MQTT 发布消息(附代码)

在「添加发布」弹窗中,配置以下参数:

参数说明示例值
名称发布任务标识test
启用开关开启
数据源类型选择测点数据测点数据
分组/标签选择要上云的测点分组qunlixi
TopicMQTT 发布主题inhand_sub
Qos(MQTT)消息质量等级1
入口函数脚本入口main

8.1 函数代码(核心)

在「函数代码」编辑器中,粘贴以下 Python 代码。该脚本将测点数据以 JSON 格式发布到 MQTT:

# Enter your python code. import json from common.Logger import logger from quickfaas.remotebus import publish def main(message, wizard_api, cloudName): logger.debug("publish topic:%s, payload: %s, cloudName: %s" % (__topic__, message, cloudName)) publish(__topic__, json.dumps(message), __qos__, cloud_name=cloudName)

说明__topic____qos__为系统在运行发布脚本时自动注入的变量,对应当前发布消息的 Topic 和 Qos,无需手动定义。

8.2 高级用法:自定义 Topic 与数据格式

若需对数据进行过滤、转换或自定义 Topic,可参考以下扩展代码:

# Enter your python code. import json from common.logger import logger from quickfaas.remotebus import publish def main(message, wizard_api, cloudName): """自定义发布:筛选字段、添加时间戳""" try: # 可选:只上传部分字段 filtered = { "timestamp": message.get("timestamp", ""), "points": message.get("points", {}), "device_sn": message.get("device_sn", "") } payload = json.dumps(filtered, ensure_ascii=False) publish(__topic__, payload, __qos__, wizard_data=None, cloud_name=cloudName) logger.info("已发布自定义格式消息到 Topic: %s" % __topic__) except Exception as e: logger.error("发布消息失败: %s" % str(e))

配置完成后点击「确认」保存,发布列表中会出现「test」任务,状态为「启用」。

九、Step7:MQTT 验证数据上云

使用MQTTX客户端连接 MQTT Broker 并订阅 Topic,验证 IG502 发布的数据是否正确上云。

9.1 新建连接并填写参数

1.打开MQTTX,点击左侧「+」新建连接

2.在「编辑」页面的General(通用)部分填写:

参数说明示例值
Name连接名称test
HostMQTT Broker 地址broker.emqx.io
Port端口(非 TLS 一般为 1883)1883
Client ID客户端唯一标识,可自动生成mqttx_xxxx
Username / Password若 Broker 需认证则填写,EMQX 公测服务器可留空留空

3.在Advanced(高级)中可保持默认:MQTT 版本 5.0、连接超时 10s、Keep Alive 60s、自动重连开启

4.点击右上角「Connect」连接,连接成功后左侧会显示test@broker.emqx.io:1883并带绿色对勾

9.2 新建订阅

  1. 连接成功后,点击「+ New Subscription」新建订阅
  2. 在弹窗中填写:
参数说明示例值
Topic订阅主题,需与 IG502 发布配置一致inhand_sub
QoS消息质量等级,建议与发布端一致1(At least once)

  1. 点击「Confirm」确认,订阅列表中会出现inhand_sub

9.3 验证接收数据

  1. 等待 IG502 按轮询周期(如 10 秒)采集 Modbus Slave 数据并发布
  2. MQTTX 消息面板中应持续收到 JSON 格式消息,Topicinhand_subQoS为 1
  3. 典型消息结构如下(以测点分组qunlixi、控制器测试PLC1为例):

{ "timestamp": 1772164800, "timestampMsec": 1772164800193, "group_name": "qunlixi", "values": { "测试PLC1": { "point1": { "raw_data": 1, "timestamp": 1772164800, "status": 1, "timestampMsec": 1772164800193 }, "point2": { "raw_data": 2, "timestamp": 1772164800, "status": 1, "timestampMsec": 1772164800193 }, "point3": { "raw_data": 3, "timestamp": 1772164800, "status": 1, "timestampMsec": 1772164800193 }, "point4": { "raw_data": 4, "timestamp": 1772164800, "status": 1, "timestampMsec": 1772164800193 }, "point5": { "raw_data": 5, "timestamp": 1772164800, "status": 1, "timestampMsec": 1772164800193 }, "point6": { "raw_data": 6, "timestamp": 1772164800, "status": 1, "timestampMsec": 1772164800193 }, "point7": { "raw_data": 7, "timestamp": 1772164800, "status": 1, "timestampMsec": 1772164800193 }, "point8": { "raw_data": 8, "timestamp": 1772164800, "status": 1, "timestampMsec": 1772164800193 }, "point9": { "raw_data": 9, "timestamp": 1772164800, "status": 1, "timestampMsec": 1772164800193 }, "point10": { "raw_data": 0, "timestamp": 1772164800, "status": 1, "timestampMsec": 1772164800193 } } } }

9.4 验证要点

验证项说明
连接状态左侧连接显示绿色对勾,表示已成功连接 Broker
订阅生效订阅列表中有inhand_sub,且能持续收到新消息
数据格式消息为 JSON,包含timestampgroup_namevalues等字段
数据内容values.测试PLC1下各pointraw_data与 Modbus Slave 中配置的寄存器值一致
时间戳timestamptimestampMsec随轮询周期更新,可验证数据实时性
QoS消息显示 QoS 1,表示至少送达一次,发送端会收到确认

若以上均符合预期,说明Modbus RTU 采集 → IG502 处理 → MQTT 上云全链路已打通,验证通过。

十、小结

步骤内容
Step1Modbus Slave 模拟 RTU 从站,生成测试数据
Step2登录 IG502 边缘计算网关 Web 管理界面
Step3配置 Modbus RTU 控制器(名称、从站地址、串口参数)
Step4添加测点(地址、数据类型、分组)
Step5启用 MQTT 云服务,配置 Broker 地址
Step6新建发布消息,填写 Topic、分组,粘贴 Python 发布脚本
Step7使用 MQTTX 连接 Broker、订阅 Topic、验证接收的 JSON 数据

核心要点

  • Modbus RTU用于现场采集,MQTT用于云端汇聚,IG502 作为桥接设备实现协议转换
  • 控制器串口参数(波特率、校验位等)必须与 Modbus Slave 一致
  • 发布脚本中main(message, wizard_api, cloudName)message为测点数据字典,可直接json.dumps后通过publish()发送
  • __topic____qos__为系统注入变量,无需在脚本中定义

按上述流程操作,即可在映翰通 IG502 上完成Modbus RTU + MQTT工业数据采集与上云实战。

http://www.jsqmd.com/news/571869/

相关文章:

  • 2026年紫外臭氧清洗机厂家推荐榜:半导体/光学镜片/等离子清洗机源头工厂家选择指南 - 品牌推荐大师
  • 2026最强Java面试八股文(精简、纯手打)
  • Phi-4-mini-reasoning多场景落地实践:编程辅助、数学解题与逻辑分析
  • Graphormer开源模型价值:替代传统QSAR方法的深度学习新范式
  • League Director:用开源工具重构电竞录像制作流程,效率提升200%的全指南
  • 数智出海,全域赋能——千匠网络跨境出口电商系统,重构全球贸易新生态 - 圆圆小达人
  • mysql/mariadb查看慢日志,MariaDB 记录执行过的 SELECT 语句
  • CnDataSeed 发布 :中国高校财政预算数据库(CUFBD)
  • 简书|# 本地好物在乐居 小城生意,选对一处安稳仓储
  • 未来图景对制造系统提出全面理解、
  • 链通能源全场景 数赋交易新未来——千匠网络能源供应链电商系统震撼登场 - 圆圆小达人
  • PyQt 使用QChartView绘制极坐标图(QPolarChart)详解
  • 2026年农用EM菌厂家推荐:种植/水产/发酵剂/功能菌专业供应,如何科学选型不踩坑? - 品牌推荐官
  • 04动态规划
  • cool-admin(midway版)前端路由动画:实现与优化
  • Qwen1.5-1.8B-Chat-GPTQ-Int4开源大模型:vLLM在Kubernetes集群中的水平扩缩容实践
  • Pixel Language Portal 低代码平台集成:在 Dify 中快速构建像素语言应用
  • 基于 LLM 的金融文本分类实战:In-Context Learning 少样本落地(Qwen2.5+Ollama)
  • Flutter 实战避坑:相册页二次刷新被清空、全屏图片拉伸、ML Kit 人脸检测最小尺寸问题
  • 再议高中阶段的换元法 (上)
  • AtomGit「码动四季·开源同行」征稿活动来了,开源入门赛道怎么写更容易脱颖而出
  • python3中pyarrow库介绍和基础使用
  • 3步让Fiji在macOS上稳定运行:从启动崩溃到顺畅启动的完整指南
  • SingleFile:保存完整网页的终极解决方案
  • Lingbot-Depth-Pretrain-Vitl-14 在医疗影像的潜在应用:手术场景深度感知辅助
  • 3步突破AI编程助手限制:免费解锁Cursor Pro高级功能全指南
  • AutoGen Studio在内容创作领域的应用:自动化文案生成
  • 告别游戏本性能枷锁:OmenSuperHub的硬件轻控方案
  • 教程创作加速器:用快马平台秒建Vue3项目原型,专注编写安装指南
  • 2026年,探寻市场口碑佳的高压电磁阀靠谱工厂