|
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 |
|