Modbus 功能码
Modbus 功能码是 Modbus 消息帧(报文)的重要组成部分,是 Modbus 协议中通信事务处理的基础。
概述
Modbus 功能码占用一个字节,取值范围是 1~127(即 0x01~0x7F)。同时,使用功能码 + 0x80 表示异常状态,即 129~255 代表异常码。
在 Modbus 标准协议中,一共规定了三类 Modbus 功能码。
- 公共功能码
- 被明确定义的功能码;
- 保证唯一性;
- 由 Modbus 协会确认,并提供公开的文档;
- 可进行一致性测试;
- 包括协议定义的功能码和保留将来使用的功能码。
- 用户自定义功能码
- 有两个用户自定义功能码区域,分别是 65
72 和 100110; - 用户自定义,不保证唯一性。
- 有两个用户自定义功能码区域,分别是 65
- 保留功能码
- 保留功能码是因为历史遗留 原因,某些公司的传统产品上现行使用的功能码不作为公共使用。
本教程主要介绍公共功能码,下表展示了 Modbus 协议中的部分公共功能码。
代码 | 名称 | 英文 | 寄存器 PLC 地址 | 位/字操作 | 操作数量 |
---|---|---|---|---|---|
01 | 读线圈状态 | Read Coils | 00001~09999 | 位操作 | 单个或多个 |
02 | 读离散输入状态 | Read Discrete Inputs | 10001~19999 | 位操作 | 单个或多个 |
03 | 读保持寄存器 | Read Holding Registers | 40001~49999 | 字操作 | 单个或多个 |
04 | 读输入寄存器 | Read Input Registers | 30001~39999 | 字操作 | 单个或多个 |
05 | 写单个线圈 | Write Single Coil | 00001~09999 | 位操作 | 单个 |
06 |