A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ModBus用户自定义文件读写功能功能分类公共功能码
  • 是较好地被定义的功能码,
  • 保证是唯一的,
  • MODBUS 组织可改变的,
  • 公开证明的,
  • 具有可用的一致性测试,
  • MB IETF RFC 中证明的,
  • 包含已被定义的公共指配功能码和未来使用的未指配保留供功能码。
用户定义功能码
  • 有两个用户定义功能码的定义范围,即 65 至 72 和十进制 100 至 110。
  • 用户没有 MODBUS 组织的任何批准就可以选择和实现一个功能码
  • 不能保证被选功能码的使用是唯一的。
  • 如果用户要重新设置功能作为一个公共功能码,那么用户必须启动 RFC,以便将改变引入公共分类中,并且指配一个新的公共功能码。
保留功能码
  • 一些公司对传统产品通常使用的功能码,并且对公共使用是无效的功能码。

(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)
而实际当次读写的长度,定义为记录长度。


3 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
棒棒哒
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马