> 技术文档 > Modbus 常用功能码(01/02 03/04 05/06 10)用法 及常见数据类型_modbus 10功能码

Modbus 常用功能码(01/02 03/04 05/06 10)用法 及常见数据类型_modbus 10功能码

1.数据类型:

SINT,有符号短整型,1个字节

USINT,无符号短整型,1个字节;

INT,有符号整型,2个字节;

UINT,无符号整型,2个字节;

DINT,有符号双整型,4个字节;

UDINT,无符号双整型,4个字节;

LINT,有符号长整型,8个字节;

ULINT,无符号长整型,8个字节

2.功能码使用:

(1.)01/02功能码(DI量):

发送命令:  拨码地址  + 功能码  + 寄存器起始地址 + 长度 + 校验码 读取的响应命令:拨码地址  +  功能码  +  字节数  +  数据  +  校验码例子:    读取08 到 17 开关状态[16:18:07.049]发→◇03 01 00 08 00 0A 3C 2D 拨码地址:03 功能码:01 起始地址:00 08 长度:00 0A 校验码:3C 2D      [16:18:07.054]收←◆03 01 02 EF 03 CC 0D 拨码地址:03 功能码:01 字节数:02(响应数据 EF 03 为两个字节) 数据:EF 03 校验码:CC 0D   ​ 响应数据解析: 十六进制:   EF 03 转为2进制:11101111  00000011   例如:11101111                     1  1  1  0  1  1  1  1    对应寄存器地址:15 14 13 12 11 10 09 08(开关状态)     单个字节8位(11101111 从右往左读取)     08状态:1     09状态:1     10状态:1     11状态:1     12状态:0     13状态:1     14状态:1     15状态:1   (00000011 从右往左读  16 17)     16状态:1     17状态:1        

(2.)03/04 功能码(AI量):

发送命令:拨码地址  + 功能码 + 寄存器起始地址  + 长度 +校验码响应命令:拨码地址  + 功能码 + 发送命令的字节数 *2 + 数据  + 校验码 例子:    [15:29:38.156]发→◇01 03 02 1A 00 02 E4 74[15:29:38.161]收←◆01 03 04 4A 16 00 00 0D EF 响应命令解析:拨码地址:01功能码:03发送命令长度 * 2: 04寄存器数值:4A 16 00 00CRC检验码:0D EF备注:存在高低位反转情况,正常情况默认 高位在前 低位在后    [15:29:39.158]发→◇01 04 02 1A 00 02 E4 74[15:29:40.171]收←◆01 04 04 4A 16 00 00 0D EF     

(3.)05/06 功能码(控制单个寄存器):

拨码地址 + 功能码 + 寄存器地址 + 寄存器设定数值 + 校验码例子:[17:00:43.609]发→◇04 06 00 0B 00 C8 F9 CB    拨码地址:04    功能码:06    寄存器地址:00 0B    寄存器数值:00 C8    校验码:F9 CB [17:00:43.611]收←◆04 06 00 0B 00 C8 F9 CB    

(4.)10功能码命令(控制多个寄存器):

操作描述:报警温度阀值下限(℃)​发送:01 10 72 7B 00 01 02 00 0B BF DB   拨码地址:01(一个字节)​功能码:10(一个字节)​起始地址:72 7B(两个字节)29307​寄存器数目:00 01(两个字节)​字节数:02(一个字节)​寄存器值:00 0B(N*2字节)​CRC校验码:BF DB(两个字节)​