这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 坤创E-Geek/天科大新电社 » 【2021全国电赛】坤创3队记录:02 modbus协议学习(二)

共5条 1/1 1 跳转至

【2021全国电赛】坤创3队记录:02 modbus协议学习(二)

菜鸟
2021-07-20 17:42:26     打赏

测试第一步

先查询0x0001的原始数据01 03 00 01 00 01 D5 CA

结果如下:

1626772452164951.jpg

让我们对这两组数据进行分析。

首先是主机发送的01 03 00 01 00 01 D5 CA:

01-地址,也就是你传感器的地址

03-功能码,03代表查询功能,查询传感器的数据

00 01-代表查询的起始寄存器地址。说明从0x0001开始查询。这里需要说明以下,Modbus把数据存放在寄存器中,通过查询寄存器来得到不同变量的值,一个寄存器地址对应2字节数据

00 01-代表查询了一个寄存器。结合前面的00 01,意思就是查询从0x0001开始的1个寄存器值。

D5 CA-循环冗余校验,是modbus的校验公式,从首个字节开始到D5前面为止;

接下来,就是从机回复的数据01 03 02 00 22 38 5D的分析:

01-从机返回给主机自己的地址,说明这就是主机查的从机;

03-功能码;

02-代表后面数据的字节数。因为上面说到,一个寄存器有2个字节,所以后面的字节数肯定是2*查询的寄存器个数;

00 22-寄存器的值是00 22,结合发送的数据看出,01这个寄存器的值为00 22;

38 5D-循环冗余校验。

这也就是查询功能码0x03的使用。

测试第二步

就是修改功能码0x06的使用

1626773731213599.jpg

以上数据是修改后得到的数据,首先就是原本的03换成了06,06就是修改功能码,从机得到命令后就将0x0001处的数据改成00 11,从机返回的数据意味着修改成功,那怎么验证它确实修改过呢?那我们就再查询一遍......

测试第三步

1626773898416081.jpg

你看看,这不就改成了!

测试第四步

我们测试一下CRC校验码不匹配的情况,结果如下:

1626773263728130.jpg    

测试第五步

最后测试一下从机地址不匹配的情况

1626774090993539.jpg

这就非常的nice,这也是刚刚跑通modbus,如果有不对的地方希望大家多多交流哦~




关键词: 2021全国电赛     modbus    

工程师
2021-07-20 18:46:29     打赏
2楼

干货


工程师
2021-07-20 18:50:02     打赏
3楼

感谢楼主分享


菜鸟
2021-07-21 19:23:27     打赏
4楼

非常棒


菜鸟
2021-07-22 19:54:21     打赏
5楼


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]