Modbus软件开发实战指南
上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。