协议概要
模式
单主站/多从站
特点
同一时间,总线上只能有一个主站设备,可以有一个或多个从站设备,从站设备最多不超过247个。
通信模式
总是由主站设备发起。
从设备未收到主站设备请求时,不主动发送数据。
设备间不能相互通信,主站设备只能启动一个Modbu访问事务。
报文发送的两种方式
单个从站设备(点对点单播PearToPear)
模式:主站设备通过寻址单个从站设备。从站设备接收并处理完成请求后,给主站设备返回一个响应报文。
该事务处理含两个报文:
- 主站设备的请求报文;
- 从站设备的响应报文。
要求:
- 每个从站设备必须有唯一地址(1-247不等),用于区别其他从站设备,从而完成独立寻址,
- 主站设备无需寻址
多个从站设备发送(广播boardcast)
模式:主站直接向多个从站发送请求指令。从站收到广播指令后,处理指令,但不返回响应报文。
要求:
- 请求指令必须是Modbus标准功能中的写指令。
- 该方式是依据Modbus标准协议的要求,所有的设备必须接收广播模式下的写指令,且地址0被保留用于识别广播通信。
报文格式
详见前面章节说明。
请求报文格式
主站设备消息 | 作用说明 |
---|---|
设备地址 | 设备地址或广播地址0 |
功能码 | 告知选中的设备执行何种功能 |
数据域 | 包含从设备需要执行功能的任何附加信息。必须包含:从何寄存器开始读取以及要读取的寄存器数量(可以理解为偏移量) |
差错检测 | 为从站设备提供的验证消息内容是否正确 |
响应报文格式
从站设备消息 | 作用说明 |
---|---|
设备地址 | 设备地址或广播地址0 |
功能码 | 正常回应:在响应消息中的该段代码是在查询消息中的功能代码的回应。 错误情况:功能码将被修改,指出回应消息是错误的,同时数据段包含描述错误信息的代码。 |
数据域 | 包含从站设备收集的数据。e.g. 寄存器值或状态。 |
差错检测 | 允许主设备确认消息内容是否可用 |
其他说明
两种传输帧模式:
- ASCII(American Standard Code for Information Interchange,美国标准信息交换码)模式:特殊情况下的可选项。
- RTU(Remote Terminal Unit)模式:传输效率更高,应用广泛。
对于同一网络或链路,所有设备保持统一,要么统一为ASCII模式,要么为RTU模式,不可共存。