Modbus TCP 网关后的从站号填多少:怎样核对 Unit ID
Modbus TCP的Unit Identifier与网关后的串行从站寻址有关,不能因为TCP目的IP正确就统一填1。直连服务器与TCP转RTU网关需要分别按手册验证其处理规则。
适用条件与证据边界
依据Modbus TCP实现指南1.0b的MBAP与Unit Identifier说明。本文报文使用文档演示地址和只读功能码03,未连接真实网关或扫描从站。
本文交付可执行的测试方法、合成演示和空白记录表;未连接现场硬件,未取得设备实测、现场照片或稳定性结论。规范定义与示例判据分别说明,示例数值不能用作设备参数。
按这个顺序核对
-
画出客户端、网关IP、串行端口和从站号映射,记录网关是否为透明转发、路由映射或本机服务器模式。
-
选择一个已知存在的从站与只读寄存器,构造带唯一Transaction ID的请求,保存MBAP长度和Unit ID。
-
将Unit ID改为另一个已登记从站,比较响应中的身份或已知量。错误号、超时和网关异常响应分别记录。
-
对直连Modbus TCP服务器单独查其手册;即便它忽略Unit ID,也不能把该行为推到网关。禁止对未知从站号做无界广播式尝试。
输入与期望结果(合成演示)
| 合成报文 | 字段 | 解释 |
|---|---|---|
| 00 01 00 00 00 06 11 03 00 00 00 01 | Unit ID=0x11 | 网关映射示例从站17 |
| 00 02 00 00 00 06 12 03 00 00 00 01 | Unit 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。引用版本用于界定本文方法,实际设备支持范围仍须与对应型号手册核对。
相关阅读
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。