上QQ阅读APP看书,第一时间看更新
4.1 功能码概要
简而言之,Modbus功能码占用一个字节,取值范围是1~127。之所以127以上不能使用,是因为Modbus规定当出现异常时,功能码+0x80(十进制128)代表异常状态,因此129(1+128)~255(127+128)的取值代表异常码。
Modbus标准协议中规定了有3类Modbus功能码,分别是:
1.公共功能码
(1)被明确定义的功能码;
(2)保证唯一性;
(3)由Modbus协会确认,并提供公开的文档;
(4)可进行一致性测试;
(5)包括协议定义的功能码和保留将来使用的功能码。
2.用户自定义功能码
(1)有两个用户自定义功能码区域,分别是65~72和100~110;
(2)用户自定义,不保证唯一性。
3.保留功能码
保留功能码是因为历史遗留原因,某些公司的传统产品上现行使用的功能码不作为公共使用。
在这里,主要讨论公共功能码。
Modbus部分功能码如表4-1所示。
表4-1 Modbus部分功能码
功能码可分为位操作和字操作两类。位操作的最小单位为一位(bit),字操作的最小单位为两个字节。
• 位操作指令:读线圈状态功能码01,读(离散)输入状态功能码02,写单个线圈功能码06和写多个线圈功能码15。
• 字操作指令:读保持寄存器功能码03,读输入寄存器功能码04,写单个保持寄存器功能码06,写多个保持寄存器功能码16。