MODBUS通讯之数据帧格式解读

ad0396fab00b1bdc6ecf0b019c3f38d9.png

一.背景

Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。本文主要介绍的MODBUS-RTU。

二.MODBUS数据帧组成

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

f8fed4b58cc7ddfbeca2d7e25ca4a777.png

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

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

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

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

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

四.举实例详细说明主站和从站之间的数据帧交互过程

(1) 主站 请求读 从站数据:

d49d4a2d095641ed49a240ae5e3611ed.png

主站向从站发送的实际请求数据帧: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) 主站请求写 从站数据:

a7854373c531bf3c6aa32c47ad7a11f6.png

主站向从站发送的实际请求数据帧: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两个字节的校验数据

==========

往期回顾:

物联网LWIP之socket编程

国产芯片GD32与国产以太网芯片的坑

【蓝桥杯更新通知】

传输距离达到1500米的485电路

结构体与指针的关系

==========

平台:CSDN

原文:点击阅读原文

18fc549d2199223b3695237a89c775ef.png

503099bfa3f9c98decce95ed36e886b3.png

4e5d27dc2fbd5b5db5ee0bae7f1c7511.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值