Modbus 透传和 Modbus 转发区别

做工业采集、电表 / 传感器 RS485 无线改造的时候,经常会碰到 LoRa、WiFi、串口模块的两个模式:透传 和 Modbus 转发。很多人容易混淆,以为两者都只是把数据从 A 传到 B,底层逻辑其实完全不一样。本文用大白话 + 真实 Modbus RTU 报文讲清楚两者区别。 适用场景:RS485 Modbus 设备(电表、传感器)通过 LoRa/WiFi/ 以太网对接上位机。

一、Modbus 透传(透明传输)

原理

透传模块完全不认识 Modbus 协议。不管收到的数据是什么内容,收到字节就原样转发到链路另一端,不会解析从站地址、功能码、CRC 校验。本质就是一根加长版 RS485 串口线。 硬性要求:两端串口参数(波特率、数据位、校验位、停止位)必须完全一致,否则直接乱码。

实例链路

上位机电脑 ↔ LoRa 模块 A【透传模式】 ↔ 无线链路 ↔ LoRa 模块 B【透传模式】 ↔ Modbus RTU 从站电表(地址 01)

电脑下发 Modbus RTU 读寄存器报文: 01 03 00 00 00 01 84 0A 含义:从站 01,功能码 03 读保持寄存器,起始地址 0,读取 1 个寄存器。

✅ 透传模块行为: 模块 A 收到这 8 个字节,一字不改通过无线发给模块 B;模块 B 收到后,直接原样输出到 RS485 总线,电表收到报文正常返回应答。电表回复的报文,同样原路原样传回电脑。

特性

整条链路只能有 1 个主站,和原生 RS485 总线规则一致; 不做报文过滤,广播报文、错误报文、CRC 错误的坏包全部原样转发; 不支持地址映射,上位机访问地址必须和真实从站地址一致; 无法做 Modbus RTU ↔ Modbus TCP 协议转换; 波特率参数两端不匹配,直接乱码通信失败。

一句话总结透传:物理延长线,不懂 Modbus,只搬字节。

二、Modbus 转发(Modbus 网关 / 协议转发)

原理

Modbus 网关完整解析 Modbus 报文,识别主站请求、从站地址、功能码。 工作流程:网关收到前端主站请求 → 解析报文 → 网关充当中间主站,去后端总线访问真实从设备 → 获取从站应答 → 重新打包应答报文,返回给前端主站。 具备能力:RTU 与 TCP 互转、虚拟地址映射、坏包过滤、多从站管理。

实例 1:Modbus TCP 转 Modbus RTU

链路:电脑(Modbus TCP 主站) ↔ Modbus 网关(转发模式) ↔ RS485 总线 ↔ 电表 1 (01)、电表 2 (02)

电脑下发 Modbus TCP 请求报文: 00 01 00 00 00 06 01 03 00 00 00 01

✅ 网关转发行为:

  1. 网关解析 TCP 报文,提取目标从站地址 01,功能码 03,读寄存器指令;
  2. 网关自动把 TCP 报文转换成 Modbus RTU 报文:01 03 00 00 00 01 84 0A,发送到 RS485 总线;
  3. 电表 01 返回 RTU 应答报文;
  4. 网关把 RTU 应答重新打包成 Modbus TCP 报文,回传给电脑上位机。

实例 2:高级功能 ------ 地址映射(透传做不到)

配置网关映射规则:上位机访问虚拟地址 10 → 网关去读取 RS485 真实地址 02 的电表。 上位机只需要读写地址 10,网关自动翻译成真实地址 02 去采集。上位机看到的从站地址,可以和硬件真实地址完全分离,方便项目统一规划地址。

一句话总结转发:懂 Modbus 的翻译官,可以拆包重组、跨协议转换、地址映射。

三、对比汇总表

表格

项目 Modbus 透传 Modbus 转发(Modbus 网关)
是否解析 Modbus 报文 ❌ 不解析,仅搬运原始字节 ✅ 解析协议头、从站地址、功能码
报文内容处理 完全原样,不修改任何字节 可拆包、重组、修改地址
地址映射 不支持 支持虚拟地址映射
协议转换 不能 RTU↔TCP 支持 Modbus RTU <-> Modbus TCP 互转
主站限制 整条链路只能 1 个主站 前后端主从隔离,可灵活配置
CRC 校验处理 不检查 CRC 好坏 可校验 CRC,自动丢弃错误报文
典型硬件 LoRa 透传模块、WiFi 串口透传模块 Modbus RTU 转 TCP 网关

四、开发调试注意点

  1. 很多 LoRa、串口模块同时支持透传模式和 Modbus 网关转发模式。模式配置错误时,现象是能收到原始数据流,但 Modbus 业务通信报错。
  2. 透传模式下 CRC 错误报文会完整转发,CRC 校验逻辑需要在上位机实现;转发网关可开启报文校验,直接丢弃非法报文,减少无效传输。
  3. 选型参考:
  • 仅用于 RS485 线路延伸,不需要以太网、地址转换场景,选择透传;
  • 需要以太网对接、多设备集中采集、RTU 转 TCP、统一地址规划场景,选用 Modbus 网关转发。

五、适用场景选择

✅ 选透传: 短距离无线延长 RS485; 上位机原生 Modbus RTU,不需要 TCP; 保留原有 Modbus 地址规划; 仅搭建简单数据通道。

✅ 选 Modbus 转发网关: 上位机为网口 Modbus TCP,后端挂载 RS485 电表传感器; 多从站采集,需要地址映射; 过滤无效报文,提升通信稳定性; 项目多设备,需要统一虚拟地址管理。

相关推荐
jeo陽1 小时前
05-数组与冒泡排序:第一个数据结构与经典算法
c语言·数据结构·算法
水饺编程2 小时前
第2章:Linux 基础,mkdir 命令的简单入门
linux·c语言·汇编
燕落南枝2 小时前
C 语言学习大总结:从入门到进阶的完整知识体系
服务器·c语言·学习
不会C语言的男孩2 小时前
libxml2 源码编译与 XML 读取验证(x86 / ARM)
xml·c语言·嵌入式
David猪大卫2 小时前
【C++修炼】STL容器—模板进阶:非类型模板参数、模板特化、模板分离编译
c语言·开发语言·c++·经验分享·笔记·学习·面试
老当益壮梁奶奶2 小时前
驱动学习(二):从零开始:驱动工程搭建与字符设备驱动框架详解(基于IMX6ULL)
c语言·arm开发·驱动开发·嵌入式硬件·学习
星 海3 小时前
【json】cJSON库解析文件
c语言·json·cjson
Zip-List3 小时前
工作小记-pytorch的算子优化: 转gpu核函数 python调c
c语言·c++·pytorch·python·cuda
C++ 老炮儿的技术栈4 小时前
char 造成的数据溢出
linux·服务器·c语言·c++·算法·c