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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 风吹过后 于 2022-8-8 15:22 编辑
9 o. |. ]) C# g4 `$ }2 t3 p) D0 N0 Q4 Q+ D
01H-读线圈状态
( y7 J0 e  e% w) p3 t- s+ I0 r1)描述:读从机线圈寄存器,位操作,可读单个或者多个; 1 h7 v4 c! N/ v
2)发送指令: ; _1 Z6 e9 m0 H8 q3 l9 E  B
假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下:
) J  P2 t& e5 Z; n$ t1 r - z! q" x# f& ~/ e# d1 J; [
3)响应:
2 S8 p% Y* v* K. E$ |( l7 e返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图;
2 c' u; ^  h  p- d. _6 H ' _1 l! f! p6 N0 A
9 ?* U, E2 k$ E
上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;2 N0 {- ~$ u- E6 Y) i0 }. _

) \& _  i* n5 Z/ u. i6 S9 {
' q$ E8 q2 `8 @# a
1 l8 @  l, G& g3 z: B8 |) wdata2表示地址0x002b-0x0033的线圈状态,如下表:
, e7 f4 t% M' l' j: A9 P2 Z& E/ @1 I& c; t! C# f

$ S& x2 o/ S/ y& B3 \8 Jdata3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:$ N# `; b. {5 b/ M& S

6 E, u, r6 P) ^; @+ A
/ {) i# r" k7 c9 ^* z
9 y" K. l( r. L3 p
02H-读离散输入状态
% H) y1 q2 o. C# F) o/ `1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;% u5 Q: X+ H  d9 H4 g  ]
4 l  ?: u7 a( b7 Q0 ~

03H-读保持寄存器5 A1 O5 @: B/ @9 \7 J7 z
1)描述:读保持寄存器,字节指令操作,可读单个或者多个;
8 S0 [  n3 s7 c2 E7 F2)发送指令: ) L$ S5 N, i  x- W/ g# M
从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器+ r8 n7 i- H+ @( @1 }& M

  f. Y/ k7 t- c, k/ |. C
2 b9 I# b4 m$ a) ^
  N0 ?( L! l/ j3)响应:1 x) V* }* H/ x, \
/ I$ ?& v6 r: p" {

! P1 N/ E% ]) U; R, l  I/ j# f3 D4 k* B" u
数据存储顺序
3 L( \% `+ A; J/ @+ D/ U4 g/ F. a9 r

3 Z1 B0 o0 H- v+ N5 I2 b
2 f- A3 U, r  o' G, o
04H-读输入寄存器
- Y( {7 x  e* s1 Q5 o! J' P1)描述:读输入寄存器,字节指令操作,可读单个或者多个; 6 P5 D* g: `: q  j' G, u- h1 b
2)发送指令:同03H;
5 ^  Q" `; O% c$ e* d# A3 J3)响应:同03H;2 y* j: K9 i! i8 ]( ?* L
# V' \' m  X6 o  u# y6 o) n

05H-写单个线圈
" N2 N$ S0 Y% w8 C7 g* A8 r2 W8 P2 y1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF 5 s" M( U9 c- {' x0 h& n( D
2)发送指令: 6 l# T! L/ F- q6 ?4 G2 [
设置0x0032线圈为ON;
  [( }" v4 t0 e& v
( m( e  \. l) L# b8 u5 d  \/ m ' h$ d! R. B# W! b( F. H2 E. l2 j

6 \! K+ b0 a2 O9 w9 `3)响应:
: V3 z' g* ~2 T' G+ b同发送指令;% \+ z# I' F0 y+ [% A5 k6 N
5 z" l) S6 |1 n, K. @3 h3 I' f

06H-写单个保持寄存器
. D' O8 _% @: F5 _, O1)描述:写单个保持寄存器,字节指令操作,只能写一个; / o& I) y) X8 h  ?
2)发送指令: 7 N0 r+ |! p* P- }0 g: L2 ]
写0x0032保持寄存器为0x1232;3 J: R/ g8 q* @6 L

* X/ i  O& Z* e% O# s  N% F! P/ ?5 v 0 E$ g+ J! A& d$ k- V. J: s" A$ {3 ^

& D7 h2 |  ~2 E8 ~& \3)响应:同发送指令;! {6 j6 a7 Y# @! j4 L
1 `/ H1 G+ G5 b4 p5 }2 @" F

0FH-写多个线圈5 |1 J4 T/ A' Y) O" P
1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。
# y4 @+ H9 d4 t2)发送指令: % O7 ^& @, M$ b; }- I5 ?( C
线圈地址为0x04a5,写12个线圈, . m+ M  w# E7 A* A/ V. n; v+ {. ^

1 Y" h; L' P- V* G, }
0 h6 t; `4 _( W4 I" u$ }" L上图中DATA1为0x0c,表示:
& c, @8 D$ Z) p8 I' M
1 N0 W  f# J; ^8 f( N6 LDATA2为0x02,不够8位,字节高位填充0:
! a" V9 ]. L2 `# x4 L1 ?2 _$ g! r' @$ _/ {5 x5 {, P
) o0 o$ Y& a2 |  {* n

" l  c: ^( ~$ K& E3 l1 K3)响应:" J. C& F& Y* ^  P
$ x% a6 G. U  v) B$ H; Z/ j9 u& `+ b
6 t6 ?3 ^1 }, S- W

8 P2 @" C. {( V( ~' A+ H
10H-写多个保持寄存器6 I6 p8 ?3 G6 x8 e1 N9 Q. T/ ^
1)描述:写多个保持寄存器,字节指令操作,可写多个;
4 |: R& R9 d) C0 y4 f: T2)发送指令:
3 L  g1 w. p" \, A0 a5 F' L保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;
' z  b& d8 `* |  R; |& n$ `) l
) K# w# H# U7 }/ R- J' c4 F2 y% P. n
) `: H8 O2 \/ b. T3)响应:9 O/ D5 |" y$ a1 e- o

" [8 t3 {" z* k$ t% `- ^
- B; ]1 p! A% i0 W7 O4 K. l-
' l' s' s4 E# z
/ I4 u) Y' v6 {3 O/ z
+ d- ]  B4 |7 ~8 T* G

该用户从未签到

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-6-29 13:29 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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