黑马程序员技术交流社区

标题: 【上海校区】ModBus用户自定义文件读写功能 [打印本页]

作者: 梦缠绕的时候    时间: 2018-7-4 11:11
标题: 【上海校区】ModBus用户自定义文件读写功能
ModBus用户自定义文件读写功能功能分类公共功能码用户定义功能码保留功能码(0x03)读多个寄存器

发送

地址域
功能码
起始地址
寄存器数量
CRC

0x05
0x03
0x1000
0x0001
crcL crcH

回复

地址域
功能码
字节数
寄存器值
CRC

0x05
0x03
0x02
0x0001
crcL crcH
(0x10)写多个寄存器

发送

地址域
功能码
起始地址
寄存器数量
字节数
寄存器值
CRC

0x05
0x10
0x0000
0x0001
0x02
0x0001
crcL crcH

回复

地址域
功能码
起始地址
寄存器数量
CRC

0x05
0x10
0x0000
0x0001
crcL crcH
(0x14)读文件记录

发送

地址域
功能码
字节数
参考类型
文件号
记录号
记录长度
CRC

0x05
0x14
0x06
0x06
0x0001
0x0001
0x0002
crcL crcH

回复

地址域
功能码
响应数据长度
文件响应长度
参考类型
记录数据
CRC

0x05
0x14
0x07
0x05
0x06
xx xx xx xx
crcL crcH
(0x15)写文件记录

发送

地址域
功能码
请求数据长度
参考类型
文件号
记录号
记录长度
记录数据
CRC

0x05
0x15
0x0a
0x06
0x0001
0x0001
0x0002
xx xx
crcL crcH

回复

地址域
功能码
请求数据长度
参考类型
文件号
记录号
记录长度
记录数据
CRC

0x05
0x15
0x0a
0x06
0x0001
0x0001
0x0002
xx xx
crcL crcH

有感于ModBus的文件读写文件功能有点怪异和不合理
1. 写文件功能不合理,发送和回复是一样的
2. 参考类型定死了0x06,不清楚其作用。
而且ModBus 256字节的限制,导致读写速度很慢,所以想自己扩展ModBus读写文件功能。

(0x44)自定义读文件

发送

地址域
功能码
文件号
记录号
记录包长度
记录长度
CRC

0x05
0x44
0x0001
0x0001
0x0400
0x0002
crcL crcH

回复

地址域
功能码
记录长度
记录数据
CRC

0x05
0x44
0x0002
xx xx
crcL crcH
(0x45)自定义写文件

发送

地址域
功能码
文件号
记录号
记录包长度
记录长度
记录数据
CRC

0x05
0x45
0x0001
0x0001
0x0400
0x0002
xx xx
crcL crcH

回复

地址域
功能码
文件号
记录号
记录包长度
记录长度
CRC

0x05
0x45
0x0001
0x0001
0x0400
0x0001
crcL crcH

N个文件,通过文件号来区分(0x0000~0xFFFF)
1个文件分成N包来读写,通过记录号来区分(0x0000~0xFFFF)
每个记录包的长度大小固定,通过记录包长度来区分(0x0000~0xFFFF)
而实际当次读写的长度,定义为记录长度。



作者: 梦缠绕的时候    时间: 2018-7-5 10:08

作者: 吴琼老师    时间: 2018-7-5 17:43

作者: 不二晨    时间: 2018-7-17 14:18
棒棒哒




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2