Modbus协议学习

文章参考modbus协议详解

主机对从机读数据操作

2、 主机发送报文格式如下:
从站地址 功能码 起始(高) 起始(低) 数量(高) 数量(低) 校验
0x01 0x03 0x00 0x01 0x00 0x01 0xD5 0xCA

0x01:从机的地址
0x03:查询功能,读取从机寄存器的数据
0x00 0x01: 代表读取的起始寄存器地址.说明从0x0001开始读取.
0x00 0x01: 查询的寄存器数量为0x0001个 Modbus把数据存放在寄存器中,通过查询寄存器来得到不同变量的值,一个寄存器地址对应2字节数据; 寄存器地址对应着从机实际的存储地址
0xD5 0xCA: 循环冗余校验 CRC

从机回复报文格式如下:
| 从站地址 | 功能码 | 字节计数 | 字节1 |字节2 | 校验 |

| 0x01 | 0x03| 0x02| 0x01 | 0x00| 0x17| 0xF8 0x4A |

含义:

0x01:从机的地址
0x03:查询功能,读取从机寄存器的数据
0x02: 返回字节数为2个 一个寄存器2个字节
0x00 0x17:寄存器的值是0017
0xF8 0x4A: 循环冗余校验 CRC

主机对从机写数据操作

主机发送报文格式如下:
从站地址 功能码 数据地址(高) 数据地址(低) 数据(高) 数据(低) 校验
0x01 0x06 0x00 0x01 0x00 0x17 0x98 0x04

含义:
0x01:从机的地址
0x06:修改功能,修改从机寄存器的数据
0x00 0x01: 代表修改的起始寄存器地址.说明修改0x0000-0x0001的存储内容
0x00 0x17: 要修改的数据值为0017
0x98 0x04: 循环冗余校验 CRC

从机回复报文格式如下:
从站地址 功能码 数据地址(高) 数据地址(低) 数据(高) 数据(低) 校验
0x01 0x06 0x00 0x01 0x00 0x17 0x98 0x04

含义:
0x01:从机的地址
0x06:修改功能,修改从机寄存器的数据
0x00 0x01: 代表修改的起始寄存器地址.说明是0x0000
0x00 0x17:修改的值为0017
0x98 0x04: 循环冗余校验 CRC

实战

03 查询遥测数据:
查询 1 号机传感器 寄存器值 (16 进制)
地址 功能码 起始高位 起始低位 长度高位 长度低位 CRC16(低) CRC6(高)
01 03 00 09 00 06 CRC16L CRC16H
应答:字节数 = 请求寄存器长度*2
地址 功能码 字节数 数据1高8位 数据1低8位 ......数据 N CRC16(低) CRC6(高)
01 03 N Data1H Data1L ...... DataN CRC16L CRC16H

02 查询遥信数据:
查询 1 号机传感器 寄存器值 (16 进制)
地址 功能码 起始高位 起始低位 长度高位 长度低位 CRC16(低) CRC6(高)
01 02 00 40 00 0A CRC16L CRC16H
应答:字节数 = (请求寄存器长度+8)/8
地址 功能码 字节数 数据1高8位 数据1低8位 ......数据 N CRC16(低) CRC6(高)
01 02 N Data1H Data1L ...... DataN CRC16L CRC16H

配置发送报文1:
(发送省略器件地址)

03 00 0A 00 01

回复报文

01 03 02 00 07 F9 86

配置发送报文2:

03 00 12 00 01

回复报文

01 03 02 00 03 F8 45

配置发送报文3:

02 00 40 00 01
01 02 01 00 01 88 78
  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值