Modbus TCP 网关后的从站号填多少:怎样核对 Unit ID

2026-10-23

Modbus TCP的Unit Identifier与网关后的串行从站寻址有关,不能因为TCP目的IP正确就统一填1。直连服务器与TCP转RTU网关需要分别按手册验证其处理规则。

适用条件与证据边界

依据Modbus TCP实现指南1.0b的MBAP与Unit Identifier说明。本文报文使用文档演示地址和只读功能码03,未连接真实网关或扫描从站。

本文交付可执行的测试方法、合成演示和空白记录表;未连接现场硬件,未取得设备实测、现场照片或稳定性结论。规范定义与示例判据分别说明,示例数值不能用作设备参数。

按这个顺序核对

  1. 画出客户端、网关IP、串行端口和从站号映射,记录网关是否为透明转发、路由映射或本机服务器模式。

  2. 选择一个已知存在的从站与只读寄存器,构造带唯一Transaction ID的请求,保存MBAP长度和Unit ID。

  3. 将Unit ID改为另一个已登记从站,比较响应中的身份或已知量。错误号、超时和网关异常响应分别记录。

  4. 对直连Modbus TCP服务器单独查其手册;即便它忽略Unit ID,也不能把该行为推到网关。禁止对未知从站号做无界广播式尝试。

输入与期望结果(合成演示)

合成报文字段解释
00 01 00 00 00 06 11 03 00 00 00 01Unit ID=0x11网关映射示例从站17
00 02 00 00 00 06 12 03 00 00 00 01Unit ID=0x12另一已登记从站18
Length=6含Unit ID与PDU不是整包总长度

附件报文实际解码后总长12字节,MBAP长度为6,Unit ID分别为17和18。该验证只说明结构一致,不证明网关存在这些从站。

下载夹具并复用

下载本题JSON夹具与空白工作表。文件中的“演示输入”用于先核对判断逻辑,“现场空白记录”供复制后填写;原演示数据请保留,实测数据另存一份并标注型号、版本和采集时间。可先用 python -m json.tool fixture.json 检查结构,再按上表逐行核对输入与预期。

交付映射表要把十进制和十六进制基准写清,0x11是17而不是11。回包还需检查Transaction ID、功能码、字节数及异常标记,防止连接到另一个服务却只看见“有数据”。将请求和应答配对保存,才能判断访问的是哪一个具体从站。 同一个从站号可能在不同网关的不同串行口重复使用,因此资产键至少还要包含网关身份和串行路由,不能只拿17作为全馆唯一设备名。对照测试前先选能区分两台设备的只读已知量,例如已登记的型号或状态;如果两台值恰好相同,读回相同数值仍不足以证明寻址正确。

容易误判的边界

某些网关有自定义映射和固定Unit ID设置。串行广播地址与只读请求的响应语义不应混用;没有回包也不能单独证明Unit ID错误。

继续核对

基础说明见Modbus 协议速查(功能码 / RTU / TCP);还可核对Modbus 写入超时后要不要重发:怎样避免动作重复。相关资料可从串口与 Modbus 对接专题继续查找;需要核对项目实现时,按SoftControl 设备联动需求列出具体接口与验收条件。

一级依据

核对日期:2026-10-23。引用版本用于界定本文方法,实际设备支持范围仍须与对应型号手册核对。

需要展厅软硬件方案或定制开发?

加微信,把这一页发到你手机上

扫码加站长企业微信,会自动把这一页的链接发给你。问软件授权、报价,或者现场遇到问题,也可以直接聊。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。