Modbus协议详细规范
一、协议概述
Modbus是一种应用层通信协议,由施耐德电气(原Modicon公司)于1979年推出,专为工业自动化设备设计,支持主从架构的数据交互,具有开放、兼容性强等特点。
二、协议架构与传输模式
主从架构
主设备(Master):发起请求(如PLC、工控机)。
从设备(Slave):响应请求(如传感器、执行器),地址范围为1-247。
传输模式
RTU(Remote Terminal Unit):二进制编码,高效紧凑,默认采用CRC校验。
ASCII:可读性强但效率低,采用LRC校验。
TCP/IP:基于以太网(端口502),支持现代工业网络。
三、数据模型与寄存器分类
Modbus通过4类寄存器管理数据,地址采用5位或6位格式:
- 线圈(Coils)(地址范围00001-09999):1位读写,用于开关量输出控制。
- 离散输入(Discrete Inputs)(10001-19999):1位只读,用于状态检测。
- 输入寄存器(Input Registers)(30001-39999):16位只读,存储传感器数据。
- 保持寄存器(Holding Registers)(40001-49999):16位读写,用于参数配置。
四、功能码规范
功能码定义操作类型,核心功能码包括:
功能码(十六进制) | 操作描述 | 适用范围 |
---|---|---|
0x01 | 读取线圈状态 | 开关量输出控制 |
0x03 | 读取保持寄存器 | 模拟量数据读取 |
0x05 | 写入单个线圈 | 开关量控制 |
0x06 | 写入单个保持寄存器 | 参数设置 |
0x0F | 写入多个线圈 | 批量开关量控制 |
0x10 | 写入多个保持寄存器 | 批量参数配置 |
五、报文格式
RTU模式请求帧
[从机地址][功能码][起始地址高字节][起始地址低字节][寄存器数量高字节][寄存器数量低字节][CRC校验低字节][CRC校验高字节]
示例:读取地址1的保持寄存器40001-40002(功能码0x03)。
TCP/IP模式报文
在RTU帧基础上添加MBAP头(事务标识符、协议标识符、长度字段等)。
六、应用场景
- 工业设备监控:通过功能码0x03读取变频器频率、温度等参数。
- 电力系统数据采集:获取电压、电流等模拟量数据(输入寄存器)。
- 远程控制:使用0x05/0x0F控制继电器开关。
七、规范文档与扩展
核心标准
- IEC 61158:定义Modbus作为工业通信标准。
- Modbus TCP/IP规范:基于RFC 793/791实现以太网传输。
扩展协议
Modbus over TLS:增强通信安全性。
Modbus Plus(MB+):高速令牌环网络扩展,支持多主站。
总结
Modbus协议通过标准化寄存器模型和功能码机制实现设备间高效通信,适用于中小规模工业系统。其详细规范涵盖物理层(RS-485、以太网)、数据链路层(帧结构)及应用层(功能码定义),具体实现需参考IEC 61158及厂商文档。