首页 > 编程语言 >Modbus协议概述及实例详解(二)附源码

Modbus协议概述及实例详解(二)附源码

时间:2024-10-21 14:18:46浏览次数:9  
标签:00 01 Modbus 地址 源码 FF 寄存器 详解

        通过上一篇《Modbus协议概述及实例详解(一)》相信大家已经了解到Modbus的相关原理以及应用,也了解到了Modbus中在RTU/ASCII/TCP三种协中必不可少协议RTU协议。本章将详细讲解关于Modbus RTU协议的相关内容并附带源码一份,以帮助有需要的读者朋友可以快速开发迭代自己的软件。

1、Modbus RTU帧结构是什么样的?

        解:

                帧结构 = 地址 + 功能码 + 数据 + 校验;

                地址:占用一个字节(0~255),其中有效范围是1~247,其他地址有特殊用途,如:255是广播地址;

                功能码:占用一个字节,其意义就是表明该指令的意义;

                数据:根据不同的功能码,其数据也有不同的意义及结构;

                校验:为确保数据的安全性,增加相关的校验对校验码前的数据进行计算,接收方根据其值以及帧内容确定接收的数据是否一致。如:一致,就执行相关功能,反之则忽略其数据并舍弃。

2、功能码有什么用?

        解:功能码是Modbus定义其数据的作用,现在在这里简单举例常见的功能码进行讲解,感兴趣的朋友可以看看附件的源码就行查阅。

3、查询功能码0x03

        解:

                主机发送 01 03 00 00 00 01 FF FA

                        01:地址;

                        03:功能码,查询功能;

                        00 00:寄存器地址,其表示从00 00的寄存器地址开始查询。可能大家有疑惑,这里说明一下,Modbus是把数据存放在寄存器中,通过查询寄存器获取不同变量的值,一个寄存器地址对应2Byte数据;

                        00 01:查询寄存器的数量,表示查询一个寄存器;

                        FF FA:循环冗余校验,是Modbus的校验公式(不唯一),从首个字节开始到FF前面的数据为止。

                从机回复:01 03 02 19 98 FF 48

                        01:地址;

                        03:功能码;

                        02:表示后面数据的字节数;

                        19 98:表示所查询寄存器的值为19 98;

                        FF 48:循环冗余校验。

        即:

        发送:从机地址+我要干嘛+我要查的寄存器的地址+我要查的寄存器地址的个数+校验码

        回复:从机地址+主机回复我的功能码+发送给主机数据的字节数+数据+校验码

4、修改功能码0x06

        解:

               主机发送:01 06 00 00 00 01 FF 0A

                        01:要查询的地址;

                        06:功能吗,修改单个寄存器;

                        00 00:表要修改的起始寄存器地址,00 00;

                        00 01:修改寄存器的值为 00 01;

                        FF 0A:循环冗余校验。

                从机回复:01 06 00 00 00 01 FF 0A

                        01:返会自己的地址,即当前从机地址为01;

                        06:功能吗,主机发什么就回什么;

                        00 00:表示修改的寄存器起始地址;

                        00 01:表示修改的值为00 01;

                        FF 0A:循环冗余校验。

        即:从机回复的数据与主机一致,表明修改成功。

5、修改功能码0x10

        解:前面讲了修改功能码0x06,那么在我们实际应用,若涉及多个寄存器修改,那是不是意味着要发送多次关于0x06功能码?当然不是啦,Modbus协议不会这么傻,Modbus有一个功能码0x10,可以修改连续寄存器。其方法与0x06类似。有不明白的朋友可以私信作者或评论区留言。

6、结论

        作者想说的是,Modbus协议只需要看懂0x03、0x06与0x10基本就足够使用了。

标签:00,01,Modbus,地址,源码,FF,寄存器,详解
From: https://blog.csdn.net/qq_40939768/article/details/143110064

相关文章

  • Nuxt.js 应用中的 build:done 事件钩子详解
    title:Nuxt.js应用中的build:done事件钩子详解date:2024/10/21updated:2024/10/21author:cmdragonexcerpt:build:done是Nuxt.js的一个生命周期钩子,它在Nuxt应用的打包构建器完成运行后被调用。这个钩子为开发者提供了一个在构建过程结束后执行特定逻辑的机会,可......
  • 【25届计算机毕设选题推荐】基于python的重庆旅游景点数据分析系统的设计与实现 【附
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 【计算机毕设选题推荐】基于python的在线考试系统的设计与实现【附源码+部署+讲解】
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 基于springboot招聘信息管理系统设计与实现(源码+定制+开发)
    博主介绍:  ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生......
  • java+vue计算机毕设废品上门回收预约系统【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着社会经济的快速发展和人民生活水平的不断提高,各类废品的产生量也在急剧增加。传统的废品回收方式往往依赖于街头巷尾的废品收购站或回收人员,这种......
  • java+vue计算机毕设非遗优品交易系统的设计与实现【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在全球化与现代化的浪潮中,非物质文化遗产(简称“非遗”)作为民族文化的瑰宝,承载着丰富的历史记忆与独特的文化价值。然而,随着时代的变迁,许多非遗项目面......
  • java+vue计算机毕设电影推荐系统【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网娱乐产业的蓬勃兴起,电影作为一种重要的文化娱乐形式,已经深入人们的日常生活。近年来,电影市场的规模不断扩大,电影数量......
  • java+vue计算机毕设儿童培训管理系统的设计与实现【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着社会的快速发展和教育理念的不断进步,儿童培训行业迎来了前所未有的发展机遇。越来越多的家长开始重视孩子的全面发展,不仅关注学校的传统教育,还积......
  • 搭子陪玩伴游线上游戏陪玩付费语音陪聊系统源码线下家政源码一体式部署(h5+小程序+app)
    该平台将满足用户寻找旅行搭子、日常活动搭子、陪伴及享受本地生活服务的需求,同时通过商城分销模式为商家提供新的销售渠道,实现用户、商家与平台的共赢。通过整合线上线下资源,提供一站式服务体验,满足用户多样化需求,同时为商家和合作伙伴创造更多商业价值。现在的年轻人,最常见......
  • 基于Python的学生考勤管理系统(源码+lw+部署文档+讲解等)
    项目整体介绍基于Python+django的学生考勤管理系统是一款专门为学校设计的高效管理工具。该系统充分利用Python的强大编程能力和django的高效Web框架,实现对学生考勤的全面管理。系统具备学生信息管理功能,可以准确记录学生的基本信息,如姓名、学号、班级等。同时,教......