MODBUS通讯之数据帧格式解读(文末可免费下载文档)

一.背景
之前在一个项目上用代码分别实现了Modbus主站和Modbus从站(:其实官方提供有现成的MODBUS从站库代码,并且支持大多数的嵌入式平台,如果项目比较急,把官方的库代码移植,剪裁一下就可以用了,但是我发现当你对MODBUS了解的比较熟悉之后,针对你自己特定的项目/产品完全可以自己实现更加精简,高效的代码),目前产品已经量产发布使用。现回过头来整理一下有关Modbus通讯的一些知识,打算把它写成一个系列博客,目前这是第一篇。
Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。本文主要介绍的是MODBUS-RTU。

二.MODBUS数据帧组成
首先我们要知道一帧正常的MODBUS数据帧包含的内容有:地址域 + 功能码 + 数据 + 差错校验

三.下面逐一解释MODBUS数据帧各部分的具体含义:

(1)地址域:即主站要访问的从站地址,其范围0~247

(2)功能码:即主站想要对从站进行何种操作。
从大的方面看分为(主站读取从站数据),(主站向从站读取数据)
再往细分就是具体读取从站哪块区域的数据,以及具体将数据写到从站的哪块区域。操作从站不同的数据区对应有不同的功能码,在文末《MODBUS协议规范》文档中有详细介绍

(3)数据:如果主站的请求是数据,那么该“数据”要包含的信息有: 从哪里开始读数据 + 读多少数据。 如果主站的请求是向从站数据,那么该“数据”要包含的信息有:从哪里开始写数据 + 写多少个字节数据 + 要写的具体数据

(4)差错校验:为了保证数据传输的正确性,Modbus协议会在数据帧最后面加上两个字节的差错校验

四.举实例详细说明主站和从站之间的数据帧交互过程
(1) 主站 请求读 从站数据:

主站向从站发送的实际请求数据帧:03 04 00 08 00 01 B0 3B (假设从站地址为03)
其中:
03:为主站要访问的域名(即从站地址,范围0~247)。
04:表示功能码。
00 08:从从站08这个地址开始读取数据。
00 01:即将读取数据的长度。
b0 3b:两个字节的校验数据。

从站接收到主站的请求数据帧之后实际的响应数据帧为:03 04 02 00 0A 40 F7
其中:
03:为从站地址即域名(即从站地址,范围0~247)。
04:表示功能码。
02:被读取数据长度(包含一个字节高8位数据,一个字节低8八位数据)
00 0A:被读取的具体数据
40 F7两个字节的校验数据

(2) 主站 请求写 从站数据:

主站向从站发送的实际请求数据帧:03 10 00 01 00 02 04 00 0A 01 02 99 88 (假设从站地址为03)
其中
03:为主站要访问的域名(即从站地址,范围0~247)。
10:功能码。
00 01:往从站01这个地址开始写数据。
00 02:寄存器数量。
04:一共写4个字节数据。
04 00 01 02:具体数据。
99 88:两个字节的校验数据。

从站接收到主站的请求数据帧之后实际的响应数据帧为:03 10 00 01 00 02 11 EA
其中
03:为从站地址即域名(即从站地址,范围0~247)。
10:功能码。
00 01:往从站01这个地址开始写数据。(原样返回/响应)
00 02:寄存器数量。(原样返回/响应)
11 EA两个字节的校验数据

以上我们介绍了Modbus数据帧 主站发送从站响应 这么一个“你来我往”的实际数据帧交互过程。下一篇我们将深入到硬件层(物理层)看下数据是如何以“字节”形式进行接收的。

五.资源获取
(1)freemodbus官方库代码下载地址
(2)MODBUS协议规范-中文版:提取码 mep3
(3) MODBUS上位机调试助手:提取码 qcji
(4)ModeBusRTU调试工具CRC16版: 提取码 smt7

MODBUS通讯之数据帧格式解读(附资料下载)相关推荐

  1. 重磅发布: 营销数据中台白皮书(附全文下载)

    编者按:2018年,DMP.CDP.CEM.Data Lake突然引起市场关注,「数据中台」更是成为大中型广告主的数字营销标配. 秒针系统作为中国领先的营销数据技术供应商,先后为近百家头部广告主提供了 ...

  2. 收官蓉城,展望2019多媒体技术新方向(内附资料下载)

    伴随着2018年音视频技术生态的风起云涌,LiveVideoStack多媒体开发技术沙龙收官蓉城,在对过去一年技术梳理的同时,各位大咖也对明年发展趋势做了展望:5G时代即将来临,苹果.高通从" ...

  3. 园区大数据治理解决方案(附PPT下载)

    资料下载:转发朋友圈截图回复666下载,回复"资料下载"下载所有资料 资料下载:转发朋友圈截图回复666下载,回复"资料下载"下载所有资料 推荐阅读: 世界的真 ...

  4. 启发下一代AI研究,《认知神经智能科学》专刊发布[附资料下载]

    [导读]近年来,人工智能技术取得了令人瞩目的进展,能够广泛地解决一系列问题,在某些具有挑战性的任务(包括视觉认知等方面)中达到甚至超越人类的表现. 由于人工智能在深度学习方面的最新进展,很大程度上受到 ...

  5. 【NLP】NLP从业人员必须知道的十大必备知识库(附资料下载)

    作者 | 西山红叶 来源| 红叶看世界 (ID:westM_redL) 转载请联系授权(微信ID: shenjiaweigogogo) 在过去的一年面试了许多NLP相关的技术人员,但是很多人被我内心会 ...

  6. 走进武汉,解密多媒体开发新场景、新实践(内附资料下载)

    2018年初的音视频技术生态并不平静,Codec的争夺进入群雄逐鹿的时代,AV1和国产的AVS2对HEVC发起了挑战:WebRTC 1.0版定稿打通了在浏览器.移动端乃至IoT上的多媒体通信:AI.区 ...

  7. 用python处理excel文件_用python 读写excel文件(附资料下载)

    对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等工具包.利用这些工具,可以方便的对excel 进行操作. 1. 下载 xlutils ...

  8. 探索多媒体开发最新最佳实践(内附资料下载)

    2018年初的音视频技术生态并不平静,Codec的争夺进入群雄逐鹿的时代,AV1和国产的AVS2对HEVC发起了挑战:WebRTC 1.0版定稿打通了在浏览器.移动端乃至IoT上的多媒体通信:AI.区 ...

  9. 聚焦北京,探秘多媒体开发新趋势(内附资料下载)

    走进2018年,一方面视频Codec之争愈演愈烈,一方面WebRTC1.0版本的定版版定稿打通了在浏览器.移动端乃至IoT上的多媒体通信,而AI.区块链技术的发展也催化多媒体开发新趋势,将成为推动生态 ...

最新文章

  1. python表白源代码加音乐_python炫酷烟花表白源代码
  2. UA OPTI544 量子光学7 补充:Density Operator
  3. InputFormat和OutPutFormat
  4. 让Jacob从当前路径读取dll文件及相关打包方法
  5. topcoder srm 410 div1
  6. 线下社群要如何拉新呢?
  7. mysql 记录_mysql记录耗时的sql实例详解
  8. Ubuntu修改open files数
  9. XShell收费?5款免费且超赞的SSH工具,一个比一个香
  10. 角度单位中角分、角秒的进制转换
  11. c语言爱心代码我爱你,C语言告白代码,一闪一闪亮晶晶~
  12. EndNote使用教程
  13. python美元和人民币双向兑换程序_Python:程序练习题(二)
  14. win7右下角的网络图标不显示
  15. 生物信息学(4)——多序列比对之CLUSTAL算法详解及C++实现
  16. 【echarts】在柱状图上方显示数值
  17. 基于opencv实现人脸检测
  18. java 类转换_java实体类转换有没有更优雅的方式?
  19. 高数课后习题讲解下册 pdf(免费)
  20. 软件开发需要测试员吗?

热门文章

  1. 注意力机制的基本思想和实现原理(很详细)(第二篇)
  2. sqlserver 目录名称无效解决办法 在执行批处理时出现错误。错误消息为: 目录名无效
  3. SAP请求TR管理小技巧(持续更新)
  4. 算法导论第三版2.3答案
  5. 谷歌账号登录Google API Oauth 2.0简单申请和使用教程
  6. 天数智芯亮相“2019 世界半导体大会”,宣布国内首款GPGPU芯片推出时间表
  7. 扒一扒net.cn这个后缀域名
  8. [深度而学习从入门到女装]Non-local Neural Networks
  9. js原生ajax与jquery的ajax的用法区别
  10. 数据结构--停车场管理