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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 风吹过后 于 2022-8-8 15:22 编辑 " f  ?9 d; Y0 V8 i, ?) C4 W- ^

6 M* v9 v0 J( F$ K01H-读线圈状态/ M" \6 `9 O; u
1)描述:读从机线圈寄存器,位操作,可读单个或者多个;
8 k( Q6 K* N% g. d' K5 ?* P+ T2)发送指令: + h7 [: H( J) j' t( v
假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下:
- T+ E6 T! H* U4 v/ `% u
1 n# N1 C# p; D& n/ {2 M% c8 e4 z3)响应: ) d- i. ]4 V/ {$ v# E& Q1 E
返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图; 0 z) J' J# H! P+ J9 }8 r. W5 U

4 b# }, F  i# z' G' Y- @) O* |, X9 ?: O' z' Z! k9 D( F
上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;* Y3 T* s9 o8 C0 v; \, u1 j2 e  Q

  k  e$ W7 g4 }. U, D
4 s& R8 P  }, O1 w
8 S9 g' R! }; y" q' M; C' ?data2表示地址0x002b-0x0033的线圈状态,如下表:0 U- O8 U0 c9 }; A' E4 ]: k
  S% x* N+ r/ S% D

3 M4 N% M* l9 ?, I1 [. l! Ldata3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:& k/ [6 g1 K& T& }# A

& C7 }2 V. l8 c3 O# |, Y 3 N: v1 E+ U3 u  q; G' R
' |  i  b4 D: \8 |, b

02H-读离散输入状态+ p6 X" ^# ?+ C+ w. o, L9 I5 Y& n
1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;3 O! v! U& B' A& B' e4 C

, R* f6 h! @3 O. i5 s+ U9 `
03H-读保持寄存器/ V* F7 i: R' K- y
1)描述:读保持寄存器,字节指令操作,可读单个或者多个;
9 O0 t' G  t9 N( x9 C4 O2)发送指令: 5 h; B: _+ w/ q2 a, v0 Z
从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器+ m5 _1 C; K# x
; m" F2 j$ N4 C0 @0 \
) u2 z4 Y3 |6 X% o! B4 I3 o" {
' k- K4 q* A4 K
3)响应:8 Z1 k9 z) h4 B* x
3 L& D4 j& I2 k: l1 M

9 v; o; \4 A9 c& ^% N" P1 }+ {8 `
+ E) d! L% x, ~1 Q# S, u数据存储顺序* z  x! `# _% h6 Q! {
9 X1 ?( N8 ^' }% T. e! W5 J+ `, C
- y1 z. g' K& T: L" M
5 m3 [) S5 ?* T4 l7 j3 |

04H-读输入寄存器
# I5 W: r  k8 p- f; j& W6 r/ B5 r+ x9 F8 S1)描述:读输入寄存器,字节指令操作,可读单个或者多个; 4 \; r8 q) W% ?3 L: \8 J
2)发送指令:同03H;
& R4 e4 }4 `0 ^( t3)响应:同03H;
2 ^! e  |3 X$ c6 L+ g
* |0 N8 `+ x& O2 e/ ]5 O
05H-写单个线圈) x2 r" l5 j- [8 [! ?( T( ^+ k
1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF
5 r6 Q6 ?# Z' D% u; V2)发送指令:
: [  [  K/ m8 E- U设置0x0032线圈为ON;1 k# U5 D  k4 Z5 c) ~

" |9 h- j( Y6 ~; r  N. x$ Q- w ! Y: w. ]4 K* j, ~* w( M( K' |
6 ~- V: ?) l4 y6 Y, J* q
3)响应:
2 k4 |5 W: V, ~同发送指令;4 C( p# a+ v& @" d

  W2 E% L" e( d* ~& u
06H-写单个保持寄存器2 p; T# H! {0 S" b  d1 @
1)描述:写单个保持寄存器,字节指令操作,只能写一个;
6 o: w, {' Z: m' E- A* p" S4 I$ B& H2)发送指令:
5 U0 L& @% Z+ ^1 K. J写0x0032保持寄存器为0x1232;; l9 u6 F7 u- {- }

5 d& G4 @7 D6 [4 N, Z3 l* `
; h) F4 F, k4 C% F4 I
9 \0 @8 L) c0 S: `3)响应:同发送指令;
! {0 C+ p' |: _& I/ R+ H0 a7 W4 Y$ S9 n0 K

0FH-写多个线圈
5 T" O) C) S4 ^' ^1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。 7 d4 _  U  Z, q; `
2)发送指令: / F7 P0 g5 {8 \% Y; a
线圈地址为0x04a5,写12个线圈,
1 j( s" O, U. m
, w% F4 G0 H: U0 t; S( O
3 l; D5 E5 g$ ~3 _1 E上图中DATA1为0x0c,表示:
  F1 s+ H# \" S* t6 i1 _, W
$ ~8 e1 p6 O3 O9 h1 _  P) `3 B6 P" h/ DDATA2为0x02,不够8位,字节高位填充0:
" |5 t* j" ]( R5 q. I5 i5 z! B( ^2 \6 ?! F8 n9 _: _' q
$ `! [( f/ e8 ]7 A; y3 M( M; H
( {  K) T1 E7 e$ f( o0 M
3)响应:- b0 q# F7 @7 _9 x1 \  b  y
. k2 l. x& U+ [6 b# b

1 K0 p3 w- g% c- W8 ?$ o% A2 b7 C$ t
+ B' |8 x$ s& |  |8 {
10H-写多个保持寄存器9 D9 b; Q2 L$ e3 C; d7 ~3 R
1)描述:写多个保持寄存器,字节指令操作,可写多个; ) O1 `7 i+ `% |0 S/ v7 m4 x
2)发送指令: # c# h+ X% r) T3 B/ J8 i0 A
保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;
" D' h# f5 l' P, F8 W% `
% p" ~7 {3 A! K/ o& H* B# p
9 _4 g$ K$ i  E: {9 U- o3)响应:% p4 H5 S$ @: Q. c

  M( C* H- a: t  u  ^1 q- ~9 G! O
& ?$ y' ^+ }8 W8 n/ B8 h-4 M4 }/ p# u) K3 }# X7 k

) n- u6 k# |, O; {5 G% ^  j* M; C+ p& q% s% N! O

该用户从未签到

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-24 04:32 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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