1. Modbus协议概述:工业通信的基石
Modbus协议自1979年由Modicon公司推出以来,已成为工业自动化领域应用最广泛的通信协议之一。作为现场总线通信的事实标准,Modbus以其简单可靠的特点在PLC、传感器、仪表等设备间建立了通用通信语言。协议采用主从式架构,通过明确的报文格式实现设备间的数据交换。
在实际工业场景中,Modbus协议主要呈现三种形态:RTU(二进制编码)、ASCII(文本编码)和TCP(基于以太网)。其中Modbus RTU凭借其紧凑的报文结构和高效的传输性能,在RS-485等串行通信场景中占据主导地位。一个典型的Modbus网络由主站设备(如工控机)和多个从站设备(如温度传感器)组成,主站通过轮询方式与各从站进行数据交互。
注意:Modbus协议中地址0通常保留用于广播通信,实际设备地址范围应为1-247。广播模式下从站不会返回响应,适用于需要同时控制多个设备的场景。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Modbus RTU帧结构深度解析
2.1 报文组成要素
Modbus RTU报文采用紧凑的二进制格式,标准帧结构包含四个核心部分:
-
设备地址(1字节):标识网络中的目标从站设备,有效范围1-247。地址0保留用于广播通信,地址248-255为特殊用途保留。
-
功能码(1字节):定义请求的操作类型,常见功能包括:
- 0x03:读取保持寄存器
- 0x06:写入单个寄存器
- 0x10:写入多个寄存器
-
数据域(可变长度):根据功能码不同而结构各异,包含寄存器地址、数据值等信息。
-
CRC校验(2字节):采用循环冗余校验算法,确保数据传输的完整性。
2.2 典型报文实例分析
以读取保持寄存器(功能码0x03)为例:
主机请求帧:
code复制01 03 00 00 00 01 84 0A
- 01:从站地址1
- 03:读取保持寄存器功能码
- 00 00:起始寄存器地址0x0000
- 00 01:读取1个寄存器
- 84 0A:CRC校验值
从站响应帧:
code复制01 03 02 19 98 B2 7E
- 01:从站地址1
- 03:与请求对应的功能码
- 02:返回数据字节数(2字节)
- 19
