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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 风吹过后 于 2022-8-8 15:22 编辑
2 F( t2 j  i" B& z& f
; V0 i$ ~# S7 U. `9 o01H-读线圈状态
3 j* G$ q# ~" h1)描述:读从机线圈寄存器,位操作,可读单个或者多个; $ X6 |* b" i# a/ K9 @
2)发送指令:
$ d3 J- j/ R  F2 V  G3 v假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下:
- y6 z' B: g4 c/ ]
% U% `/ X6 j$ J1 G3)响应:
, L) ~3 o2 O: J+ o" p返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图;
# }1 M* `  a, w8 i+ A$ t4 ^# {
& i0 G* d' \7 t8 k- O+ B* \
% C% Y3 H! z- k上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;
3 B9 V* e$ W' w+ {6 y6 C, E
, s0 Y' a& r" }- D
4 f( S' `# K3 T" y3 P  n% \0 a$ U/ E8 n/ c, n" [
data2表示地址0x002b-0x0033的线圈状态,如下表:
: {) S- f- y" ^- j  A# x4 i& {9 |

" U% ^" t- s, x/ Q# C. V/ H; R; Pdata3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:! s+ P! J! m$ ?8 x
( T" r1 M% ]* Q! x$ c) G* m! \

( C5 e* |4 C/ y; a0 q% F2 W/ K) k9 w  V; y- h1 X" d

02H-读离散输入状态
* Q4 L8 E. O& ^' h% i1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;! Z+ `3 r0 w: {0 M. g
$ F4 @- y- A4 R3 Y- Y4 K

03H-读保持寄存器
) r! L( ^2 n" v1 S: r1 c% b! G" _1)描述:读保持寄存器,字节指令操作,可读单个或者多个;
; A2 e- r! i! a2)发送指令: 1 c' m: M6 P3 o& ^. l# @: j
从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器
" A, P7 d! ?- g9 U0 w. B7 n5 x$ E! B. O! z

, E5 l8 S8 W. _: @
& w, M* k- Q. Q! s( X# J) M1 @3)响应:: E" J1 Q) x( ~5 q6 t# O  X
6 G" i/ j) \3 \  J, T! z( ?

7 e. L/ X3 ~, b9 y1 i# ?: C/ r; r' p% H# M7 e" p+ o! B9 J( m  _
数据存储顺序
. q9 S) M, D# c' s
7 g2 Z/ C2 T+ V5 y- x) ]% p 2 w1 {- j9 @1 e, e

* ]: f$ N" [3 a" t- B
04H-读输入寄存器, R  b4 O5 v$ Y0 T- ~7 X
1)描述:读输入寄存器,字节指令操作,可读单个或者多个; # H5 c# |+ H. H! p: o9 D
2)发送指令:同03H;
5 F3 U8 O, c' Q3)响应:同03H;
+ l9 S) [1 [" I2 x! b" \
2 Y6 ]) Y+ r3 x" i0 _, _, q
05H-写单个线圈
8 {  n1 ]! l* k' T/ Q2 U5 S1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF
! \/ T1 P; d( U. I$ r. S- k& \. Q2)发送指令: 0 T( _* L* k! t, M. k2 p3 }
设置0x0032线圈为ON;0 D- I- V# u- A- H

3 H( k  y. q6 M% p- K# u
  u+ S7 S6 g$ d* {/ D  o  G& ]9 [4 O; B+ o( [- P
3)响应:
# W" J1 `. A5 l$ n同发送指令;1 M/ F$ ]+ ~5 p5 G9 J; W. z

7 K/ h0 F9 c0 Y6 K9 K4 x
06H-写单个保持寄存器" e/ H4 F$ f7 \" L
1)描述:写单个保持寄存器,字节指令操作,只能写一个;   ~8 R$ V# q! v# V4 ^9 J! d
2)发送指令: ! W) H/ o( R, p* e$ `& c* v* s+ p
写0x0032保持寄存器为0x1232;! G. X& x' h) Z! j% }

5 t9 q" Z. ]+ F" U" Q- b# C
0 l( C/ |0 Q' o) _% `9 n5 }: o5 A" M) M8 G
3)响应:同发送指令;  O8 b# [3 a% r) g

' `1 z3 \/ ^* K$ I" L
0FH-写多个线圈
( G1 R! J5 F9 C1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。 ! s1 w* x( z2 [, \! D
2)发送指令:
9 W  f4 r5 S- l) R线圈地址为0x04a5,写12个线圈, : Q$ [: L+ C/ x; h) ^. C
: ]0 c. l% D$ O

9 u1 [4 i6 Y* L! w  o( P+ w7 C上图中DATA1为0x0c,表示: & Z# d% G- l/ Q* E  {+ k
0 o5 V5 N, x6 _( N% d+ V
DATA2为0x02,不够8位,字节高位填充0:' A, |4 k; D4 D
) c; p( E1 G8 }3 h

$ j, l9 a* @# `  k8 G  O6 Y& k, z1 l/ ]4 Z$ d( l6 N
3)响应:# N7 r* F2 h; s$ |
6 Y, F' Y$ s# {- A

8 }# O1 b& U: R  L, B4 N5 D% E- d/ ]6 E! V5 I' R% M3 B1 D: W0 }4 P

10H-写多个保持寄存器+ u" I6 H/ ]4 K/ e9 ]& A* c
1)描述:写多个保持寄存器,字节指令操作,可写多个;
+ e0 n1 u: L1 T( u2 v  A2)发送指令:
8 J: o: W2 p1 X, g! U- x- A保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;
7 ^/ S( e9 O* P& Q( K- y$ e: `/ a  A$ j! M% h$ @7 T" p3 l; X' Y

' q, ?+ j) z8 J. i9 @* P2 J2 \3)响应:3 ^+ q( H5 b6 R' d- L1 T! n; @
# ]( Q& @* y  j1 i! d

+ ~9 [: C3 R9 |; T/ w-8 J5 R- C! P9 ]5 |7 W  A

7 ?2 ^. |2 d! Z3 F- v
% L8 P5 Z! U/ H/ \# I' j

该用户从未签到

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-7-13 08:40 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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