Modbus Rtu 通信协议
发布时间:2023-08-27
1、 读取保持寄存器(单个和多个,以字为最小单位)
发送命令帧:
设备地址
功能码
地址h
地址l
数据量h
数据量l
crc h
crc l
addr0
3 h
holdstart
datanum
crc高位
crc低位
帧 长 度:8个字节
设备地址:1~247
功 能 码:3h
数据地址:0~65535 具体范围与相关设备有关
数 量:1~65535 具体范围与相关设备有关
校 验 码:crc16校验
返回命令帧:
设备地址
功能码
数据量
数据1
数据n
crc h
crc l
addr1
3 h
返回数据的字节数n
data (1~n)
crc高位
crc低位
帧 长 度:5+n 个字节
设备地址:1~247
功 能 码:3h
数 据 量:实际的读取数据数量
数 据:返回数据的意义
a=holdstart
n= datanum-1
vw a (vb a)
vwa(vb a+1)
…
vw a+n(vb a+n)
vwa+n(vb a+n+1)
data(1)
data(2)
…
data(n-1)
data(n)
校 验 码:crc16校验
命令有误:
1) 没有任何返回
2) 返回异议帧
设备地址
功能码
错误信息
crc h
crc l
addr1
83 h
一个字节的错误信息
crc高位
crc低位
2、 设置保持寄存器(多个,以字为最小单位)
发送命令帧:
设备地址
功能码
地址h
地址l
数据量h
数据量l
数据字节数
具体
数据
crc h
crc l
addr0
10 h
holdstart
datanum
bytn
1~bytn
crc高位
crc低位
帧 长 度:9+bytn 个字节
设备地址:1~247
功 能 码:10h
数据地址:0~65535 具体范围与相关设备有关
数 量:1~122 具体范围与相关设备有关
字 节 数:设置的字节个数 bytn= datanum×2
#p#分页标题#e#数 据:具体的字节数据
校 验 码:crc16校验
返回命令帧:
设备地址
功能码
地址h
地址l
数据量h
数据量l
crc h
crc l
addr1
10 h
holdstart
datanum
crc高位
crc低位
帧 长 度:8 个字节
设备地址:1~247
功 能 码:10h
数据地址:0~65535 具体范围与相关设备有关
数 量:1~122 具体范围与相关设备有关
校 验 码:crc16校验
命令有误:
1) 没有任何返回
2) 返回异议帧
地址
功能码
错误信息
crc h
crc l
addr1
90 h
一个字节的错误信息
crc高位
crc低位