ZBLD.C20 系统 485 MODBUS(RTU)协议
ZBLD.C20 系列 485 MODBUS(RTU)协议
1、 数据帧格式
地址码 功能码
ADDR
CMD
MODBUS--RTU 方式
数据
DATA
校验码
CRC16_L
CRC16_H
1 Byte
1 Byte
n Bytes
1 Byte
1 Byte
波特率:19200(默认) 起始位:1bit 数据位:8bit 校验位:无校验 停止位:1bit
MODBUS RTU 方式下,每两个字符之间发送或者接收的时间间隔超过 1.5 倍字符时,此数据
无效; 如果两个字符时间间隔超过了 3.5 倍的字符传输时间,依规定就认为一帧数据已经
传输完毕,新的一帧数据可以传输开始。
a) 地址码:1 Byte
0x00(0)----广播地址,广播时从机无回复,适用于多台群控
0x01(1)-0xf7(247)----从机地址
0xf8(248)-0xff(255)----系统保留,请勿使用
b) 功能码:1 Byte
0x03(3)
----读单个寄存器操作
0x06(6)
----写单个寄存器操作
0x10(16)
----写多个寄存器操作
c) 数据: n Byte
不同指令有不同数据格式!
d) 校验码:2 Byte
CRC16校验对象:地址码+功能码+数据
CRC16校验算法:MODBUS(x16+x15+x2+1)
1 / 12
ZBLD.C20 系统 485 MODBUS(RTU)协议
1) 0x03 读单个寄存器操作
0x03(读单个寄存器)数据帧格式
主机请求
帧数据
数据长度
数据内容
说明
地址
功能码
1 Byte
1 Byte
0x01-0xf7
0x03
寄存器地址
2 Byte
0x2000-0x30ff
高字节+低字节
寄存器个数
2 Byte
0x0001
高字节+低字节
校验码
2 Byte
CRC16L+CRC16H
低字节+高字节
从机接收正确后回应
帧数据
数据长度
数据内容
说明
地址
功能码
字节数
数据
校验码
1 Byte
1 Byte
1 Byte
2 Byte
2 Byte
0x01-0xf7
0x03
0x02
数据区字节总数
读取数据内容
高字节+低字节
CRC16L+CRC16H
低字节+高字节
从机接收异常后回应
帧数据
数据长度
数据内容
说明
地址
功能码
异常码
校验码
1 Byte
1 Byte
1 Byte
2 Byte
0x01-0xf7
0x83
Msb=1
0x00-0xff
详见 4)异常码
CRC16L+CRC16H
低字节+高字节
注:所有寄存器地址为 2Byte,高字节在前,低字节在后;
所有寄存器数据位 2Byte,高字节在前,低字节在后;
此操作仅可对 RW 或 RW*类型寄存器操作;
2 / 12
ZBLD.C20 系统 485 MODBUS(RTU)协议
0x03(读单个寄存器)举例
a) 读0x01号从机的0x0001寄存器数据
寄存器地址
寄存器个数
校验码
地址 功能码
高字节 低字节 高字节 低字节 低位 高位
0x01
0x03
0x20
0x01
0x00
0X01
CRCL CRCH
地址 功能码
字节数
校验码
高字节 低字节
数据
0x01
0x03
0x02
0x00
0X01
CRCL CRCH
b) 读0x01号从机的0x0001寄存器数据异常
寄存器地址
寄存器个数
校验码
地址 功能码
高字节 低字节 高字节 低字节 低位 高位
0x01
0x03
0x20
0x01
0x00
0X01
CRCL CRCH
地址 功能码
异常码
校验码
0x01
0x83
详见 4)异常码
CRCL CRCH
主
机
从
机
主
机
从
机
3 / 12
ZBLD.C20 系统 485 MODBUS(RTU)协议
2)0x06 写单个寄存器操作
0x06(写单个寄存器)数据帧格式
主机请求
帧数据
数据长度
数据内容
说明
地址
功能码
1 Byte
1 Byte
0x01-0xf7
0x06
寄存器地址
2 Byte
0x2000-0x30ff
高字节+低字节
数据
校验码
2 Byte
2 Byte
写入数据内容
高字节+低字节
CRC16L+CRC16H
低字节+高字节
从机接收正确后回应
帧数据
数据长度
数据内容
说明
地址
功能码
1 Byte
1 Byte
0x01-0xf7
0x06
寄存器地址
2 Byte
0x2000-0x30ff
高字节+低字节
数据字节数
2 Byte
写入数据内容
高字节+低字节
校验码
2 Byte
CRC16L+CRC16H
低字节+高字节
从机接收异常后回应
帧数据
数据长度
数据内容
说明
地址
功能码
异常码
校验码
1 Byte
1 Byte
1 Byte
2 Byte
0x01-0xf7
0x86
Msb=1
0x00-0xff
详见 4)异常码
CRC16L+CRC16H
低字节+高字节
注:所有寄存器地址为 2Byte,高字节在前,低字节在后;
所有寄存器数据位 2Byte,高字节在前,低字节在后;
此操作仅可对 RW 或 RW*类型寄存器操作;
4 / 12
ZBLD.C20 系统 485 MODBUS(RTU)协议
0x06(写单个寄存器)举例
a) 写0x01号从机的0x2001寄存器写数据
寄存器地址
数据
校验码
地址 功能码
高字节 低字节 高字节 低字节 低位 高位
0x01
0x06
0x20
0x01
0x00
0X01
CRCL CRCH
寄存器地址
数据
地址 功能码
校验码
高字节 低字节 高字节 低字节
0x01
0x06
0x20
0x01
0x00
0X01
CRCL CRCH
b) 写0x01号从机的0x0001寄存器数据异常
寄存器地址
数据
校验码
地址 功能码
高字节 低字节 高字节
低字
节
低位 高位
0x01
0x06
0x20
0x01
0x00
0X01
CRCL CRCH
地址 功能码
异常码
校验码
0x01
0x86
详见 4)异常码
CRCL CRCH
5 / 12
主
机
从
机
主
机
从
机
ZBLD.C20 系统 485 MODBUS(RTU)协议
3)0x10 写多个寄存器操作
0x10(写多个寄存器)数据帧格式
主机请求
帧数据
数据长度
数据内容
说明
地址
功能码
1 Byte
1 Byte
0x00-0xf7
0x10
起始寄存器地址
2 Byte
0x2000-0x30ff
高字节+低字节
寄存器数量
2 Byte
数据字节总数
1 Byte
N
2*N
高字节+低字节
高字节+低字节
数据
校验码
2*N Byte
2 Byte
CRC16L+CRC16H
低字节+高字节
从机接收正确后回应
帧数据
数据长度
数据内容
说明
地址
功能码
1 Byte
1 Byte
0x01-0xf7
0x10
起始寄存器地址
2 Byte
0x2000-0x30ff
高字节+低字节
寄存器数量
2 Byte
N
高字节+低字节
校验码
2 Byte
CRC16L+CRC16H
低字节+高字节
从机接收异常后回应
帧数据
数据长度
数据内容
说明
地址
功能码
异常码
校验码
1 Byte
1 Byte
1 Byte
2 Byte
0x01-0xf7
0x90
Msb=1
0x00-0xff
详见 4)异常码
CRC16L+CRC16H
低字节+高字节
注:所有寄存器地址为 2Byte,高字节在前,低字节在后;
所有寄存器数据位 2Byte,高字节在前,低字节在后;
此操作仅可对 RW 或 RW*类型寄存器操作;
6 / 12
ZBLD.C20 系统 485 MODBUS(RTU)协议
0x10(写多个寄存器)举例
写0x01号从机的0x2000,0x2001寄存器写数据
地址 功能码
起始寄存器地址
寄存器数量
高字节 低字节 高字节 低字节
数据字节总
数
0x01
0x10
0x20
0x00
0x00
0x02
0x04
寄存器 1 数据
寄存器 2 数据
高字节 低字节 高字节 低字节
校验码
数据 1
数据 2
CRCL
CRCH
地址 功能码
起始寄存器地址
寄存器数量
高字节 低字节 高字节 低字节
校验码
0x01
0x10
0x20
0x00
0x00
0x02
CRCL CRCH
地址 功能码
异常码
校验码
0x01
0x90
详见 4)异常码
CRCL CRCH
主
机
从
机
正
常
返
回
从
机
异
常
返
回
7 / 12
ZBLD.C20 系统 485 MODBUS(RTU)协议
4)异常码
MODBUS 异常码
异常码
含义
说明
0x01
0x02
0x03
0x04
0x05
0x06
0x07
非法命令
从机不支持此命令或从机在错误状态中处理这
种请求;
非法数据地址
上位机的请求数据地址超出范围;
非法数据值
接收到的数据包含的是不允许的值;
操作失败
参数写操作中对该参数设置为无效设置,如写
功能码时未开启写使能(0x200E);
密码错误
密码效验地址写入的密码不对;
数据帧错误
数据帧的长度不正确或RTU格式CRC校验位不
正确;
参数为只读
上位机写操作时更改的参数为只读参数;
0x08
参数运行不可改
上位机写操作时更改的参数为运行中不可更改
的参数;
8 / 12