找回密码
 注册
关于网站域名变更的通知
查看: 256|回复: 3
打印 上一主题 下一主题

Modbus协议———常用功能码详解

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-3 11:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 风吹过后 于 2022-8-8 15:22 编辑 9 B3 ~" Z2 V/ j2 ?/ D0 J! V- b' N
* S4 @7 j' s1 _9 S) f# Q
01H-读线圈状态( P" E9 @0 r7 W0 f, f- A3 h
1)描述:读从机线圈寄存器,位操作,可读单个或者多个; & n  o1 B' B1 i. H9 [1 U4 m
2)发送指令:
( H7 C+ ?/ {6 `1 z$ c) ?' Z0 m假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下: + s3 M7 J; p3 h- w" L
$ g3 N9 X+ }; T, y) K" H% h3 O7 f
3)响应:
- V& Z7 f- h5 |! ]6 Y6 T. l$ e返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图; 9 T; l8 O& ?- U
2 B* W7 w) V7 A2 H0 [: P' Y( H
6 o. o3 i) ^) T, Z0 x
上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;
6 |# J7 L) v- }( ~' F0 U; p/ f( J" F  H5 B$ D

% Y9 O$ P4 x6 Z0 `' V. S7 |
, L% Z' k8 r! Q0 K  Z3 D* I2 t1 ~data2表示地址0x002b-0x0033的线圈状态,如下表:) l1 i0 T  I* j# b) m
4 j; m% o9 _, [- e7 V

4 a7 Y# |8 b- Idata3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:" _3 U8 l# L& |  b
$ r# A) w, J7 y; \7 Y3 {% P( U

" d, E* L, X& k) e: `. l/ t* ~6 J: A% F6 ]

02H-读离散输入状态
# x+ f1 V' f+ w# f6 J& O1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;' c) x8 Y: q) Y1 I+ I! I

/ v2 Z" u1 j- `, d! N  I- h" w
03H-读保持寄存器* x8 I' y0 ^9 y, [) [9 E6 `
1)描述:读保持寄存器,字节指令操作,可读单个或者多个; ' S2 l+ X& E& {; L* y, D
2)发送指令: 3 g# h5 j7 L0 ?# f  A2 k2 d
从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器" ^6 r: N# L0 U7 }5 a0 p) |
7 F2 n& Z6 ~+ R5 t* w
6 e& g# a& O8 k+ k  S

5 {/ B$ p2 Q" |1 e" Y' S3)响应:4 O3 h7 \# @- P* ]1 a
8 u& e& J) F, g
& C' j$ j. Y; X  }

3 V. o) d# x& F0 _数据存储顺序
! P, H5 F/ Y$ N) K6 P% A3 W
. o0 ^! k. A' s$ M/ h/ L8 B
! C* m+ i: k, ~  n+ t
' c; M! L6 h/ N2 ?4 @) Y
04H-读输入寄存器- Y: x! D; @* Y+ K
1)描述:读输入寄存器,字节指令操作,可读单个或者多个; & v2 M  \. d" m  G: w
2)发送指令:同03H; # T4 x  Q( Z. d  L- l' l
3)响应:同03H;/ ]' w" q5 r' ~
. o1 X* L; _: X$ }  ]- j8 w

05H-写单个线圈$ W0 I1 l; Y% P( q9 K/ n
1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF
$ K/ F0 E* P* I9 V& S; M  n. G$ n2 T2)发送指令: $ k% W  t0 m" ^: R1 s$ h
设置0x0032线圈为ON;# M9 p* ]: o- a! b7 R' j. g+ u
$ p, t$ j. A, U( O

. N$ K/ {/ }  a8 c- _0 j
0 M/ A" ~0 k7 _9 c3)响应: ; K) k* S% R3 H$ y
同发送指令;
* @- u# V. @0 f7 b& `+ n  Z; t
2 r$ r9 N" ]  j4 y  v
06H-写单个保持寄存器
, b3 j7 {# G9 D% X7 j( F1)描述:写单个保持寄存器,字节指令操作,只能写一个; $ L3 H3 ]5 U  u
2)发送指令:
& _* i0 f, Q: b写0x0032保持寄存器为0x1232;
" `5 Z* u3 n+ s; ^! j* G/ ?: T$ v' G4 ~) \$ K$ F

7 o4 a" v9 Z9 m& r1 y3 \" j! G0 u2 i9 t7 M+ S
3)响应:同发送指令;& P5 a. J4 d5 ]( @* ^3 O7 }; y, s- ]
3 \' \( s6 Q, r8 X% n) V$ I- c

0FH-写多个线圈
$ s& ?# o2 f/ [  K4 j( d1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。
4 P0 ]8 [1 p. n6 [) S2)发送指令: " Y& {+ c3 z, F$ m( z
线圈地址为0x04a5,写12个线圈,
: @9 A( I  M( D$ T' o
# y/ V. Z9 E+ E) ^. Y1 H0 a5 [9 v: P! ~# Y  ~# W- h$ J) p3 O
上图中DATA1为0x0c,表示: 6 F3 Y3 i8 b4 e

" @: C7 T1 Z, v! Z6 g/ \' t" wDATA2为0x02,不够8位,字节高位填充0:; V* [2 g, f, A3 ^! @
" j! a, ^8 J) @% L% S6 Y/ N

* r( l) t7 P# G2 z* J3 {, B( S
0 y! I1 g! i, s+ x3)响应:
1 [$ s& Z9 J- Z7 G
2 D4 J7 E6 s: N/ D% \) ^
- M7 @8 Z; }4 U8 n! f2 h# K2 L" l; Y5 y3 g2 C' A7 }2 s

10H-写多个保持寄存器
- P7 b2 t2 B0 t0 }/ g8 f1)描述:写多个保持寄存器,字节指令操作,可写多个; 2 b* x1 _+ @) W. i5 N, x
2)发送指令:
4 {* b( @. r. y6 H( P保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;! ?! D8 h8 d) G, U* X
# w/ K0 d2 h& T8 m

7 r  o2 d4 X* T$ Y7 k$ ]" v3)响应:
9 V- d; C" S7 [' A9 \
, O( K- H% g8 ]3 E  A6 H 0 Z' F" [3 U$ I2 s. ]8 `
-2 v6 ^8 T  Z% i
5 C, R" V# D% k

* P* K, I: ~  F5 e5 [9 A; ^4 q* p

该用户从未签到

2#
发表于 2022-8-3 14:03 | 只看该作者
希望技术上的交流更多一些,O(∩_∩)O哈哈~

该用户从未签到

3#
发表于 2022-8-3 15:29 | 只看该作者
技术类的帖子,可以让别人学习好多东西

该用户从未签到

4#
发表于 2022-8-8 16:28 | 只看该作者
Modbus是一种串行通信,易于部署和维护,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-11 04:36 , Processed in 0.125000 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表