1uj0zkrzusg64042480217.png
5 A+ H* `7 S# {. h( b
7 l- U+ m: `5 v B& a( j0 H一.背景" m X# o! K- W& C: o, T& N5 g
Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。本文主要介绍的MODBUS-RTU。
; [5 F. C0 g. A二.MODBUS数据帧组成; b& k4 {) J ^ i5 ?1 I
首先我们要知道一帧正常的MODBUS数据帧包含的内容有:地址域 + 功能码 + 数据 + 差错校验。
' H* B6 d6 b. U! z! j) P d
l11xgtobavt64042480317.png
1 r: @; h m9 A! C. F
5 K+ H' T' |- _( U
三.下面逐一解释MODBUS数据帧各部分的具体含义:9 k* U; A. i3 d2 `- x
(1)地址域:即主站要访问的从站地址,其范围0~247: x3 V4 M' k. {2 A; |& {/ a
(2)功能码:即主站想要对从站进行何种操作。从大的方面看分为读(主站读取从站数据),写(主站向从站读取数据)再往细分就是具体读取从站哪块区域的数据,以及具体将数据写到从站的哪块区域。操作从站不同的数据区对应有不同的功能码,在文末《MODBUS协议规范》文档中有详细介绍1 B' ?& N8 o8 K& ]4 k; r5 Q+ d
(3)数据:如果主站的请求是读数据,那么该“数据”要包含的信息有:从哪里开始读数据 + 读多少数据。如果主站的请求是向从站写数据,那么该“数据”要包含的信息有:从哪里开始写数据 + 写多少个字节数据 + 要写的具体数据. T+ l, H* `# o8 j
(4)差错校验:为了保证数据传输的正确性,Modbus协议会在数据帧最后面加上两个字节的差错校验) g% M$ `8 W. o5 w4 F- S3 X7 R
7 m4 l% }- h6 X. D. w& t
四.举实例详细说明主站和从站之间的数据帧交互过程. ?: i8 t: W: o( q: ^4 {3 {
(1) 主站 请求读 从站数据:
2 E- r) K: A' X% ^/ s
w3t2re2acqc64042480417.png
& t+ _2 M; F& ^; {/ @: Y$ k主站向从站发送的实际请求数据帧: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) 主站请求写 从站数据:5 x3 _, E6 z' P* U
2ixx3qjd1vy64042480517.png
. T& f' }' I: {5 Y) [, x
主站向从站发送的实际请求数据帧: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两个字节的校验数据/ F/ k: {7 |8 T' S! q( q2 y5 p, u
==========) ~8 T8 k" C# h @; ^
往期回顾:物联网LWIP之socket编程 A3 R i: t+ t5 B) E
国产芯片GD32与国产以太网芯片的坑
$ Q2 ]7 I* l( R: ~【蓝桥杯更新通知】
) T7 R) F( r, M5 `$ o传输距离达到1500米的485电路
# A0 L8 ~' E/ C结构体与指针的关系! q' j8 `. `# O/ j9 N6 b0 N
==========平台:CSDN7 m4 y! A$ @, \1 r0 X
原文:点击阅读原文* b9 _4 M6 X" X" ~& R
j3ycfhzv4ly64042480617.png
" s8 v) e: {3 {4 K+ l- \
# U+ W: ]* N) e+ P% @' F
e5qhddlvkr264042480718.png
_5 n* X. U, ?1 v) l
( ^9 u( ~! @ }9 O; D' v5 \
v4q5jzxpmz364042480818.png
|