一、Modbus简介
Modbus是 OSI 模型第 7 层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备。
Modbus是一个请求/应答协议,并且提供功能码规定的服务。Modbus功能码是 Modbus请求/应答 PDU 的元素。 之间提供客户机/服务器通信。
MODBUS 协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上 的 MODBUS 协议映射能够在应用数据单元(ADU)上引入一些附加域。
二、Modbus类型
- 串行链路上的 Modbus
MODBUS 串行链路取决于 TIA/EIA 标准:232-F 和 485-A - TCP/IP 上的 MODBUS
MODBUS TCP/IP 取决于 IETF 标准:RFC793 和 RFC791 有关。
三、缩略语
- ADU 应用数据单元
- HDLC 高级数据链路控制
- HMI 人机界面
- IETF 因特网工程工作组
- I/O 输入/输出设备
- IP 互连网协议
- MAC 介质访问控制
- MB MODBUS 协议
- MBAP MODBUS 协议
- PDU 协议数据单元
- PLC 可编程逻辑控制器
- TCP 传输控制协议
四、Modbus规范
4.1 Modbus协议定义了三种PDU:
- MODBUS 请求 PDU,mb_req_pdu
- MODBUS 响应 PDU,mb_rsp_pdu
- MODBUS 异常响应 PDU,mb_excep_rsp_pdu
定义 mb_req_pdu 为: mb_req_pdu = { function_code, request_data},其中
function_code --- [1 个字节] MODBUS 功能码
request_data --- [n 个字节],这个域与功能码有关,并且通常包括诸如可变参考、变量、数据偏移
量、子功能码等信息。 定义 mb_rsp_pdu 为:
mb_rsp_pdu = { function_code, response_ data},其中
function_code --- [1 个字节] MODBUS 功能码
response_data --- [n 个字节],这个域与功能码有关,并且通常包括诸如可变参考、变量、数据偏 移量、子功能码等信息。 定义 mb_excep_rsp_pdu 为:
mb_excep_rsp_pdu = { function_code, request_data},其中
function_code --- [1 个字节] MODBUS 功能码 + 0x80
exception_code --- [1 个字节],在下表中定义了 MODBUS 异常码。
4.2 数据编码
- MODBUS 使用一个‘big-Endian’ 表示地址和数据项。这意味着当发射多个字节时,首先发 送最高有效位。例如:
寄存器大小 值
16bits 0x1234 发送的第一字节为 0x12 然后 0x34
4.3 Modbus数据模型
modbus协议中的线圈、寄存器等的解释
输入与输出之间以及比特寻址的和字寻址的数据项之间的区别并没有暗示任何应用操作。
4.4Modbus事务处理的定义
服务器侧 MODBUS 事务处理的一般处理过程
一旦服务器处理请求,使用合适的 MODBUS 服务器事务建立 MODBUS 响应。
根据处理结果,可以建立两种类型响应:- 一个正 MODBUS 响应:
- 响应功能码 = 请求功能码
- 一个 MODBUS 异常响应(参见第 6.14 节):
- 用来为客户机提供处理过程中与被发现的差错相关的信息;
- 响应功能码 = 请求功能码 + 0x80;
- 提供一个异常码来指示差错原因
4.5 功能码分类
- 公共功能码
- 用户定义功能码
- 保留功能码
五、Modbus协议在串行链路上的实现指南
**5.1 协议概述**
<p>Modbus 标准定义了 OSI 模型第 7 层上的应用层报文传输协议,它在连接至不同类型总线或网络 的设备之间提供客户机/服务器通信。它还将串行链路上的协议标准化,以便在一个主站和一个或多 个从站之间交换 Modbus 请求。</p>
<p>Modbus 串行链路协议是一个主/从协议。该协议位于 OSI 模 型的第二层。</p>
<p>在 Modbus 串行链路上客户机的功能由主节点提供而服务器功能由子节点 实现</p>
5.2 Modbus 主站/从站协议原理
Modbus 串行链路协议是一个主-从协议。 在同一时刻,只有一个主节点连接于总线,一个或多个子节点 (最大编号为 247 ) 连接于同一个串行总线。Modbus 通信总是由主节点发起。子节点在没 有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只 会发起一个 Modbus 事务处理。
主节点以两种模式对子节点发出 Modbus 请求:<.p>
- 单播模式
- 广播 模式
5.3电气接口
- 无中继器情况下,最大32 台设备,依据如下:
- 所有允许的地址
- 设备使用的 RS485 单元负载总量
- 以及需要的线偏置
- 长度
主干电缆端到端的长度必须有限制。其长度由波特率,电缆(规格,电容或特征阻抗),菊花链上的负载数,以及网络配置(2 线或 4 线制)所决定。
分支必须短,不能超过 20m 。如果使用 n 分支的多口接头,每个分支最大长度必须限制为 40m 除 以 n。