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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 风吹过后 于 2022-8-8 15:22 编辑 1 p. ]* `/ @5 S
4 H$ o  A0 X- X1 y; ^8 R
01H-读线圈状态  s9 b; ?7 s/ ?6 ?6 `
1)描述:读从机线圈寄存器,位操作,可读单个或者多个;
$ J/ `9 h' h$ y! R# o& [4 _: m2)发送指令: 4 r% g/ z, E3 y) h1 O' L# p9 p. W6 Z2 e
假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下: 1 n3 k. R! e( g
* P: j) s$ I% |+ v7 F. O8 R
3)响应:
7 v- @' g7 l) {% w; i- G4 s5 V返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图;
- ~6 O. U+ g  }" Q  T ( C' z5 a, J3 T: @/ x+ i6 I

0 ~8 V- ^+ |+ K. w1 M上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;
0 l+ j9 [, m; z* z4 }; n  `& F- ~

9 X. V: E& T* B, \5 D0 K# l9 V2 P8 Z5 a+ u8 z# s3 @+ I' K4 U$ V
data2表示地址0x002b-0x0033的线圈状态,如下表:  j. ?3 A. j  j- M

# M1 @4 O. v* G* z* T3 w* O$ a " i$ p) B4 \; `1 {
data3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:
3 b: q% Y& B0 a
3 H/ U% A" I. ^$ s* Q6 \- p4 K( V
9 H/ F4 E0 ^+ }+ ~$ U; [  |, A/ V+ H) u" q! ?! J

02H-读离散输入状态6 ?& Q  o9 t' V# G, Y
1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;
# g/ a$ q" i/ H/ h& N4 ~
$ n( @1 y" X0 f* p% J
03H-读保持寄存器
) q! U3 K3 ^+ Q0 S+ k1)描述:读保持寄存器,字节指令操作,可读单个或者多个; / {8 T+ t4 M0 G& J; [+ S
2)发送指令:
0 X. _1 k* E2 ?" i从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器
9 L! s3 @3 M) s5 o
) X0 z- D1 g! U4 o
5 v" U6 S8 _) H" _1 c. Y( C1 d8 u$ v) m
3)响应:
  c) n: C$ O$ I/ r' H# A, w& h6 |8 ^! r4 {" N# J
7 N/ @8 Q7 y) a9 y3 b

( c5 O. a7 Y- e' j; z/ P1 j6 l数据存储顺序
# e' F- T; h+ P, s& C1 k* a# p6 s( I

9 L& }- I! k, K9 `; P: {) [) C
$ |! u8 `5 `! W. ?; A
04H-读输入寄存器; p6 Y& a$ s* s
1)描述:读输入寄存器,字节指令操作,可读单个或者多个; , Y+ u4 i% z" W6 e: M! Z+ D
2)发送指令:同03H;
; H2 O8 z' H, ]" a$ ?3)响应:同03H;
- P+ b9 ^/ ^( o) v
: P) W1 e9 ^6 ~! d( g6 h) o' p6 ^0 g
05H-写单个线圈
' i+ m% R9 u$ G8 T1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF % Y4 b7 F/ R& p2 M
2)发送指令: # ~+ o) y* }/ C2 ~& O8 t7 p/ f
设置0x0032线圈为ON;
) q: l2 N) F" J
4 b7 I& V/ N7 e/ A! x' a # |  k- I+ |2 u! J
5 Z3 n3 _. g9 s  S
3)响应: ' s. k! F# k( ?$ ], w. Z3 |9 g
同发送指令;: j9 h- f$ i" }8 b3 d( r1 {
. h5 y# F) {  j9 I

06H-写单个保持寄存器
# W. h  [" G$ X! M# ^, ?1)描述:写单个保持寄存器,字节指令操作,只能写一个; ) Q/ b6 R7 \7 k, \8 N# `
2)发送指令:
+ q( l0 q, Q- S2 }& l8 _写0x0032保持寄存器为0x1232;
; d1 @( `' z& C, g$ v/ i$ B% t6 w7 [5 Q- M4 [
" h1 x: d! C" _. d9 p) b% {" u

4 l- [' n# q6 V5 j/ w3)响应:同发送指令;
# @; D1 v) A$ V+ Y( Y; f- U3 r! K% e5 G5 C; o/ _

0FH-写多个线圈4 r/ a, t# o. _
1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。 ) c$ l* c" [" f" x" _& m
2)发送指令: " O- ]9 t4 F/ H- n
线圈地址为0x04a5,写12个线圈,
& m( d, F( c( d; C* U5 i2 o- c 1 r4 ]) r' H& i% O7 ?8 S

  \" L8 \) C* f5 B上图中DATA1为0x0c,表示:
, T; s9 r- ~; @% h; s
$ o. o, w1 D' x* k# BDATA2为0x02,不够8位,字节高位填充0:
( a8 @, k1 Q: j/ \. e) y) Y5 K. q! `2 ^3 z5 Z

+ w3 E, b/ k7 @% G" [9 h* f+ m  {9 ~) u8 Q" O
3)响应:$ ~$ }0 q2 |% O6 g& F+ U7 y/ P9 J& D

3 A, s7 N+ U. z* g
7 W+ Z7 v" c' x* g0 i- U, ^- q+ c" B) A" _- h

10H-写多个保持寄存器' N. [! M" j/ l4 X+ B# o7 F
1)描述:写多个保持寄存器,字节指令操作,可写多个; ' k0 l* {. b- q, E
2)发送指令:
8 Z, n, f5 G# @# v% ^' ?保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;3 E+ I! W! L# g0 z0 w
$ ]8 D- O5 ^: Z+ q

6 q+ @# X" g, S, A  n3)响应:$ L0 |1 Q) Q8 g- B0 Z  |

9 P9 l  d$ x4 M) m% s4 w4 N
& G" p. w0 M* w* C; D0 e& R' _0 l( S-* w* t& N5 R, {$ X; J
5 ~% {  `- c* q

* \9 I5 g8 M0 W- n" |' v# X5 w

该用户从未签到

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-18 21:57 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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