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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 风吹过后 于 2022-8-8 15:22 编辑 ; W" f4 z" s. ]2 O4 A
9 _% r' R$ ^; i% n  w
01H-读线圈状态: m4 F) ]' l+ S# t
1)描述:读从机线圈寄存器,位操作,可读单个或者多个; 2 n/ V* x! f& y. U
2)发送指令:
& K. F- a8 ?6 o2 L2 v0 E, W假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下:
( u. W- ?! T8 k0 I/ t5 a; |
- M) E. Y$ D$ J) [3)响应:
/ Q1 e/ v0 \$ n& Y2 @返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图;
4 C/ L9 X" P! A
4 i& |6 ~, Q2 G% J& Y
# ^; w# c# Z2 a# E) a0 }2 m上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;+ N9 B4 S- K- g" U- y

$ }1 d9 R- [* D3 {   t; H/ }6 Y, J& w! Y8 Z

# p" `' b' b4 _! u# bdata2表示地址0x002b-0x0033的线圈状态,如下表:
6 j/ X& V( A9 g) I  p3 k$ M# @, a# }  @3 Q6 X/ Q
! [" X/ @) }1 @8 _1 E: ?
data3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:1 A: t4 w- ]4 U) a; r5 H5 h3 R8 v
( e9 P& S; ~+ G( K  N% F6 b

, V( }% g: w  {- R) s
+ h0 m7 D4 }* }& E
02H-读离散输入状态+ n' G7 F9 S& ~# ?& g: M: Z
1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;/ Z/ r( Q* q: u* F
% s4 r2 d- I& U, w

03H-读保持寄存器# p" t, T. y# O6 L3 W
1)描述:读保持寄存器,字节指令操作,可读单个或者多个; * a1 i+ I2 \6 `; R% L' P
2)发送指令:
: t5 U$ ~. G" @$ J/ X) ~! t4 j从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器
9 r) X/ e  k7 h. o: ^* S+ P* r2 ^

& j& j" r8 J7 ^, I. M% ?+ x: [% L9 G" n
: E8 g; i; D, o( G5 i  @3)响应:
  g. @1 s1 P; `  z' X8 z9 {- Z: i  H$ P& U, {2 p
! S9 e5 r& Q" @! C

# I7 ~, X0 u+ m( |  Q数据存储顺序8 J' _: g! P8 c- o- k
$ J. q# {) H( r- p$ U

6 H3 Y! a9 J/ B7 ^' F1 r4 _, U1 R
3 b& }' O+ d& S
04H-读输入寄存器
1 t) g8 Y# s: J& O9 G5 G1)描述:读输入寄存器,字节指令操作,可读单个或者多个; % I2 G  W8 x& A4 a
2)发送指令:同03H;   ^' p6 ^: ~1 l3 c- w+ B
3)响应:同03H;7 l  g4 ^3 a8 m$ u" ?$ F( B% q
, ^1 [/ ^5 F- B

05H-写单个线圈& Y! E0 G: ?5 S4 n
1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF
! j, F# R* s8 b6 W" e# |2)发送指令: % h' k" N& L2 I& n3 l
设置0x0032线圈为ON;
" F& p8 l" x6 j; F4 o( `6 o3 F
! ^- p+ Q3 g+ M; h$ Y0 B- X7 G 1 W; ^4 L: X6 R$ K7 k

1 q. @2 b5 E* s! d3)响应: 6 Q  d6 t0 B# A1 v5 n. T5 w6 Q( o
同发送指令;
6 P% p. ?5 f: R% X
- z3 t8 L5 M, l5 ^4 t
06H-写单个保持寄存器
- S; ?% y2 q  Z# p8 x" `1)描述:写单个保持寄存器,字节指令操作,只能写一个;
/ n7 U( S- M- ^; V( O- w2)发送指令: , W! n* o/ t% `" G- @4 U  A
写0x0032保持寄存器为0x1232;) o) r7 j; ^; h: L
! S0 p$ N8 P6 I- D% g: R

  W. {! s9 m$ v, c% c
2 e) F# ?0 y# I* I7 g3)响应:同发送指令;2 `. }- I: I9 P! E; v. W7 ^- t

$ N% `& a, [+ B* {* F
0FH-写多个线圈! J5 f* S0 B- p" N
1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。 / M/ U! @+ \" g+ N
2)发送指令: * N9 ^5 o* L9 s* k. ~
线圈地址为0x04a5,写12个线圈,
' a: E0 g6 x' S% i& J# _ : K, |3 f, D- g. ?: C
* d2 X( B) f( N) A6 Z, B: v: [. R
上图中DATA1为0x0c,表示:
0 M" m5 D1 j8 D 7 q0 {, E! I5 Q% g
DATA2为0x02,不够8位,字节高位填充0:
' f* r! G- e# s2 {; Q2 x; J
" y' s. w+ L( b+ i9 C, [
! z6 f' h3 D% `/ n; W5 E% F! [7 n! T3 H' w8 y7 z3 T
3)响应:
# A- B# @. _2 ]; N$ B: R
* n- M1 w4 g% h, p! \* ^0 U1 m
' {5 U9 m+ F3 g' ^4 p. ]5 ]+ f. ]1 |

10H-写多个保持寄存器9 ~. v6 D) b1 a2 }( ~; r
1)描述:写多个保持寄存器,字节指令操作,可写多个; ' z8 T% N4 [! s( j9 _5 L  r
2)发送指令:
4 [7 q8 Q1 n# ?! E$ x保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;0 }4 L5 e% {: ?) s" D) _. n, ?
1 G7 a" K9 ~  z& r5 f! A

4 s# v, w- K  U. ~3)响应:6 ]1 }; n* [& [  w$ ]; Q1 u1 m
4 c. L1 S) x* F/ s( z" P

4 k. n& {$ c8 f# t; w-
. u: U; R! R) U( |* @1 k; R9 k* ?( a# Y( [& r4 g8 G$ u/ r3 b
3 V: p8 y. J8 o9 j& `8 ?7 y  N# t

该用户从未签到

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-8-4 09:18 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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