
直接回答
Modbus 是基于线圈与寄存器的请求-响应协议。RTU 走串行链路,TCP 走以太网。它只传数据,不传语义,因此寄存器表、缩放、字序与写权限必须以书面确认。Modbus 适合电表、逆变器与简单设备,不适合快速联动。
寄存器模型,不是数据模型
Modbus 暴露线圈、离散输入、输入寄存器与保持寄存器。它不定义寄存器含义,含义由设备厂商定义。一块表可能用两个保持寄存器表示电量,另一块字序不同,第三块还要求缩放系数。所以 Modbus 项目从寄存器表开始,而不是从一根线开始。表里要写清地址、数据类型、缩放、单位、访问权限,以及设备不再应答时的行为。只写“电量”、没有单位、缩放或字序的寄存器表不是规格,而是一种希望在调试时被检验,而且往往在最不合适的时候。
- 从厂商寄存器表开始
- 记录每个点的缩放、单位与数据类型
- 定义每个数值离线时的行为
RTU 与 TCP 是不同的链路
Modbus RTU 跑在 RS485 或 RS232 上。RS485 是共享总线:终端、偏置、线缆路由与从站地址都重要,一个主站轮流轮询从站。Modbus TCP 跑在以太网上,TCP 帧里带单元标识,常用来访问串口网关。TCP 更容易路由与诊断,但如果后面的网关慢,它并不会自动变快。按设备、距离与现有基础设施选择链路,并把中间的网关写进文档。即使网关由电表厂商提供,它的寄存器映射与固件仍应写进点位表,而不是只留在厂商手册里。
- RS485 需要终端与分段规划
- TCP 仍受其后网关影响
- 记录协议转换点
缩放、符号与字序
多数集成故障不是协议故障,而是解释故障。数值可能是有符号或无符号、16 位或 32 位,还可能以两种字序拆在两个寄存器里。温度可能以十分之一度为单位,压力可能以百分之一巴为单位,一个状态字可能把多个告警打包成一个整数。寄存器表必须定义这些,点位表要记录换算。用已知值测试,不要被屏幕上看似合理的数字骗过。调试时把原始值与工程值并排记录;这能让以后的缩放错误一眼可见,也给下一位工程师一个参照。
- 确认符号与位宽
- 确认寄存器配对与字序
- 用已知物理值测试
轮询、写入与故障行为
Modbus 是轮询的,每个点都要花时间和网络负载。合并读取,不要比设备应答能力更快地轮询,把超时当作数据质量事件,而不是零值。写入需要权限、范围检查与读回。如果控制器写设定值,要定义设备拒绝或离线时怎么办。安全联锁不要放在慢速轮询回路里。Modbus 是计量与机房数据的好胶水,却不是要求确定性响应顺序的好基础。慢协议也可以很可靠;错误的是让它做快速的任务,然后在顺序滞后时怪协议。
- 合并读取并遵守轮询预算
- 把超时当作质量标志,而不是零值
- 安全联锁不要放在慢速回路
Modbus 数据区
6 行| 数据区 | 访问 | 典型用途 | 注意事项 |
|---|---|---|---|
| 线圈 | 读写 | 启停命令与状态位 | 确认 0 还是 1 表示开启 |
| 离散输入 | 只读 | 运行反馈、告警与限位 | 检查极性与防抖 |
| 输入寄存器 | 只读 | 测量值与计数器 | 缩放与符号 |
| 保持寄存器 | 读写 | 设定值、模式与配置 | 写权限与读回 |
| 32 位数值 | 读写 | 电量、流量与大计数 | 字序与寄存器配对 |
| 设备状态 | 只读 | 通信与故障标志 | 区分离线与零值 |
项目图景
3 张图片


常见问题
01选 RTU 还是 TCP?
RTU 适合串行现场设备与较长线缆;TCP 适合以太网与网关。很多现场两者并用,由网关连接。
02一条 RS485 段可以接多少设备?
取决于驱动器、线缆、波特率与轮询预算。分段方案应计算得出,而不是套用一个通用数字。
03Modbus 安全吗?
本身不安全。它没有认证或加密。应把它当现场总线,通过网络分区与网关保护。
04为什么数值大了十倍?
缩放问题。寄存器可能以十分之一或百分之一为单位,或者 32 位值的字序拼错了。
05Modbus 可以无线传输吗?
可以,通过无线串口桥或网关。用于控制前要确认延迟、重试与故障状态。
下一步
把建筑交给我们。
告诉我们建筑类型、纳入范围的系统,以及你需要的结果。我们会给出通往可用系统的最短路径。