Modbus RTU和Modbus TCP共享功能码与数据模型,但传输封装不同。RTU常用于串行线路,报文含地址与CRC;TCP通过TCP/IP传输,使用MBAP头而不附加RTU的CRC字段。两者互连通常需要能处理Modbus转换的网关,不是普通接口转接头就能完成。
相同的是“问什么”,不同的是“怎样送达”
Modbus的功能码表示读取线圈、读取寄存器或写入等操作,数据部分说明地址、数量或内容。功能码和数据构成协议数据单元PDU。将同一请求送上串行线路或TCP连接时,会加入不同的传输相关字段。
RS485主要规定电气接口,不等于Modbus RTU;以太网主要解决链路传输,也不等于Modbus TCP。设备有RS485或RJ45端口,仅说明部分接口条件,必须继续核对其支持的应用协议。

报文结构的差别怎样影响接入
RTU报文可概括为设备地址、功能码、数据和CRC校验。串行线路还依靠时序规则识别报文边界。TCP报文以MBAP头加PDU组织,MBAP包含事务标识、协议标识、长度和单元标识等信息,用于识别与匹配请求响应。
Modbus TCP没有RTU的CRC字段,不表示整条网络没有错误检测;TCP/IP和底层链路有各自机制。反过来,RTU的CRC主要检查报文差错,不是身份认证或加密。不能把任何一种基础模式默认视为具备网络安全保护。

串行总线与TCP并发不能简单换算
常见串行Modbus采用一个客户端发起请求、服务器响应的方式,在同一总线上协调访问;多个主控不能不加协调就同时发送。TCP服务器可能接受多个连接,但允许连接数、并发请求数和处理速度由设备实现决定。
TCP网关的另一端若仍是共享串行总线,多路TCP请求通常需要排队。增加网口速率不等于仪表响应立即变快,串行波特率、报文长度、从站处理与超时都会影响总轮询周期。对高优先级操作也要设计访问节奏。
一个读取寄存器的例子
上位软件希望读取某台仪表的两个保持寄存器,需要明确目标设备、功能码、起始地址和数量。仪表文档可能用类似40001的习惯编号,而报文地址采用偏移表示,软件填写方法未必相同。应结合手册与软件约定核对,避免偏移一位。
收到两个16位寄存器,也不能马上判定它们是一个正确的浮点数。字节序、寄存器字序、有符号数、比例因子和单位可能由厂家定义。通信成功与数据解释正确是两次检查,最好用已知测量值验证。
为什么普通串口服务器不一定够用
透明串口服务器可能只把串行字节放入TCP数据流,它不一定拆解MBAP、生成RTU地址与CRC或匹配事务。这类产品可用于明确的透传方案,但不能默认当作Modbus协议网关。购买时应明确需要TCP到RTU转换,而不是只写“串口转网口”。
网关还需核对工作角色、单元标识映射、串口格式、超时与轮询策略。TCP侧的单元标识如何定位串行设备,要按网关实现配置;直接TCP设备的使用习惯可能不同,不能把所有设备都按一条规则填写。
故障分成连接、报文和业务三层
TCP连不上时查地址、端口、路由和访问规则;连接建立但超时时查网关映射、串口参数、终端状态与排队;收到异常响应时查功能码和地址范围。异常响应表示设备明确报告某类问题,与完全没有回应不同。
RTU侧还需检查布线、终端匹配、地址冲突与电气条件。不要把A/B名称直接等同正负定义,按设备资料匹配。测试优先从单台设备、低频只读请求开始,再逐步扩大负载;未经授权不要在生产设备上试写寄存器。
基础Modbus部署应限制访问源、分区并按需求设置防火墙,不把502端口直接暴露公网。若采用Modbus安全扩展或安全网关,仍需核对兼容与证书管理。选择RTU还是TCP,要看既有终端、数据规模与维护条件,而不是简单排“新旧高低”。


