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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 风吹过后 于 2022-8-8 15:22 编辑 ( C2 }$ v- [1 \2 D" l

% l- j6 j$ I5 B8 G# m, ^* a01H-读线圈状态0 u# `' d1 O9 D% |+ `
1)描述:读从机线圈寄存器,位操作,可读单个或者多个; 0 W6 E) s9 ~+ f/ i- C  g
2)发送指令: / t# d- `: o3 C( i; A- F+ e
假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下:
# X5 J5 z4 p& K1 B- d
% y& q6 X' a+ F; ]' A4 r3)响应: ' D- i4 S# H" ^3 d. ?
返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图; ( c0 r1 ~( a2 J% d' x, q6 x# Z5 \
  k) ^; Z1 V: C

8 ]" W1 A' q: U4 |( `上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;+ S2 `  y8 H( @7 z

* {) x  l1 p( G1 H
+ ~+ l: O! j; A0 U! N
7 ]  \- O. k9 ]! M. gdata2表示地址0x002b-0x0033的线圈状态,如下表:9 x: {5 C3 w  J/ ~2 P( F1 _

+ a; ~7 j" O) `" M6 b 5 M1 T, S9 g7 Q" S( T) h! h
data3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:0 g- D' S0 w; J; u

7 h8 `6 I( l- |# H# O. h0 U$ Y 2 h; ~% P* U1 c3 o+ V& T# q
# W- k8 G6 ?: N" @; G9 ]8 ^- g

02H-读离散输入状态
) A0 a3 @  h. z1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;! w1 g- U, K2 ^- V# P4 E
/ I" {( n, m. E( |

03H-读保持寄存器
3 F. L/ j# }) c4 _$ @1)描述:读保持寄存器,字节指令操作,可读单个或者多个;
& L  k. H) g% b* S% Z2)发送指令: - `4 ~+ N% m2 h& _$ p- B( x
从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器$ @6 \2 A2 e; b. k0 D

4 d$ }5 F% ]  S" \- d 8 {8 _' u$ D( |5 c" c$ w: z+ I
- I% S" M, j# m$ p
3)响应:
' m9 K# Y" W4 Y& f, {* U% N$ E7 X# T/ A7 R

5 v  {% M; R5 t) C9 p& |6 D
! A7 U* e3 [4 q% K3 z- c' q数据存储顺序
+ @3 b  k7 `' W2 M3 ], ^" @2 v5 i# {+ m3 u, t- _1 l

) z; F( ]# g& |' g' [- d" A
! P$ }3 j0 g  q8 F3 y" l7 W
04H-读输入寄存器
1 |( @0 r4 n- c1)描述:读输入寄存器,字节指令操作,可读单个或者多个; * g/ `" U% @4 C# P* `/ y+ A$ w( g
2)发送指令:同03H; 6 x# K# {! S, p$ J% U" }& |
3)响应:同03H;
; M3 n6 v; U$ u2 j5 Z/ U3 O+ i# x; ?. I4 y1 g5 O7 g) d

05H-写单个线圈
$ e, Z, w% |% O( \1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF - R/ K/ t# g; s1 [2 b( D; U
2)发送指令: ! ?* w* a, y: v  t6 B9 _1 P
设置0x0032线圈为ON;
9 Z$ R/ F* r( g( U6 l/ x, s" \! \, Z* K$ `. f; A) [$ g1 S, m
* v4 O$ ^8 n) |- i; A- O/ j
6 g1 o2 G+ W% W* g1 U) P% Q
3)响应: 0 u1 D# j4 @4 A: b. B4 [6 j! R
同发送指令;
1 D. |8 B# X/ w+ i5 @1 P
! @& X7 W8 ~( I% S
06H-写单个保持寄存器: H# q' c( c. k& ?9 C+ V8 h
1)描述:写单个保持寄存器,字节指令操作,只能写一个; ; i' V5 t3 C" Q4 T9 S* @. `
2)发送指令: 5 Y2 I0 u+ r8 l  |/ I6 Z
写0x0032保持寄存器为0x1232;
0 v. d# L$ b( X
7 c  M* [& X) H0 E) ]! q/ w
% N$ Q3 |, \4 f9 w$ ]! I: o7 P  M& W' V5 t: b# l/ h  X
3)响应:同发送指令;* K7 H/ D$ {' ~7 e. j0 g
: n# `! `/ |; Y+ t9 _

0FH-写多个线圈
) j% D3 H: i2 I! L& G) d1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。 ! R& p5 H" K5 N2 h
2)发送指令:
% E' W4 ^1 y, z" ~- w线圈地址为0x04a5,写12个线圈,
4 k! c+ m' z& R! p0 E& W
( }. ^8 ]* \; s& g9 Z) f* w8 g$ y. d% b
上图中DATA1为0x0c,表示:
" y! h) [$ j9 d( {* {
! _4 _6 J8 L+ y  g  `3 GDATA2为0x02,不够8位,字节高位填充0:3 G7 Z: T, t- S: a, N$ G- P. K

. S& h; I5 i5 n( U% _2 L 4 r; C" Z, j: D# m" R

% h/ O2 O7 I4 Q% B# d& f2 C3)响应:2 V/ n: _. G& Z6 `5 Y

2 `5 e( o2 K9 F7 _2 b5 _
3 m. }! m0 m& h6 M! P, Q$ x' Z; W3 r6 d3 I' T: K0 E. C* h, k% e

10H-写多个保持寄存器
! X  l4 i6 t5 p- X; G1)描述:写多个保持寄存器,字节指令操作,可写多个;
  C1 a% O6 v$ k" E2)发送指令: 8 ?: V2 I0 _+ p% H/ e: `& Q. g
保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;
- A( N1 t  w! A. m6 R' F$ k+ f0 q3 d2 z7 |# a
. N1 v5 `* U8 I$ G
3)响应:
) Q" m6 n" _" b% ~+ a
0 T) q  u6 h  K6 x* a: N
  x/ U) C, C, B3 V& N5 O* H/ M* C7 E-( P2 N1 v8 U5 ~& T

$ Q6 q2 v, E- f/ E$ T, k2 Y7 m. w* Q4 Z

该用户从未签到

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-10-8 18:29 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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