Modbus 是怎么工作的
Modbus 是 1979 年提出的工业通信协议,至今仍是使用最广的现场协议之一。它的模型很简单:主站(客户端)发出请求,从站(服务器)应答,从站不主动上报;数据被组织为四类数据区,通过功能码读写。协议本身不定义物理层,因此存在串行链路上的 RTU 与 ASCII 模式,以及以太网上的 Modbus TCP。它的价值是简单、开放、易于实现,代价是几乎没有内置安全机制。
基本信息
| 通信模型 | 请求应答式,主从或客户端服务器结构,从站不主动上报 |
|---|---|
| 数据区 | 线圈、离散输入、保持寄存器、输入寄存器 |
| 承载方式 | 串行 RTU 与 ASCII、以太网 TCP、串口服务器与网关透传 |
| 默认端口 | Modbus TCP 使用 TCP 502,实际以设备手册为准 |
| 安全能力 | 协议本身无认证与加密;Modbus/TCP Security 基于 TLS 另行定义,端口 802,具体以规范为准 |
| 适用场景 | 点位规模适中、实时性要求不极端、设备支持度高的场合 |
四种数据区
| 数据区 | 读写能力 | 典型用途 | 常用功能码 |
|---|---|---|---|
| 线圈 | 可读写 | 继电器、指示灯等开关量输出 | 01、05、0F |
| 离散输入 | 只读 | 限位、按钮等开关量输入 | 02 |
| 保持寄存器 | 可读写 | 参数、设定值等可写数据 | 03、06、10 |
| 输入寄存器 | 只读 | 测量值与状态数据 | 04 |
典型使用场景
- 仪表与传感器数据采集:流量、温度、压力等模拟量读取
- 小型 PLC 与远程 IO 的开关量控制与状态监视
- 电力、水处理与楼宇设备的运行数据汇聚
- 串口设备通过网关接入以太网监控系统
- 跨厂商设备集成时的通用备选协议
Modbus 的简单也是它的限制:串行链路上同一时刻只能有一个主站发起请求,也没有标准的事件上报机制,因此不适合高实时性或数据频繁突变的场景。各厂商实现差异较大,能力与限制以设备手册为准。
Modbus 没有认证与加密,能访问 502 端口或串行链路的人通常可以直接读写数据区。它适合在受控网络内使用,跨区或远程暴露时必须由防火墙、网关或隧道提供访问控制与保护。