|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 风吹过后 于 2022-8-8 15:22 编辑
2 F( t2 j i" B& z& f
; V0 i$ ~# S7 U. `9 o01H-读线圈状态
3 j* G$ q# ~" h1)描述:读从机线圈寄存器,位操作,可读单个或者多个; $ X6 |* b" i# a/ K9 @
2)发送指令:
$ d3 J- j/ R F2 V G3 v假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下:
- y6 z' B: g4 c/ ]
% U% `/ X6 j$ J1 G3)响应:
, L) ~3 o2 O: J+ o" p返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图;
# }1 M* ` a, w8 i+ A$ t4 ^# {
& i0 G* d' \7 t8 k- O+ B* \
% C% Y3 H! z- k上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;
3 B9 V* e$ W' w+ {6 y6 C, E
, s0 Y' a& r" }- D
4 f( S' `# K3 T" y3 P n% \0 a$ U/ E8 n/ c, n" [
data2表示地址0x002b-0x0033的线圈状态,如下表:
: {) S- f- y" ^- j A# x4 i& {9 |
" U% ^" t- s, x/ Q# C. V/ H; R; Pdata3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:! s+ P! J! m$ ?8 x
( T" r1 M% ]* Q! x$ c) G* m! \
( C5 e* |4 C/ y; a0 q% F2 W/ K) k9 w V; y- h1 X" d
02H-读离散输入状态
* Q4 L8 E. O& ^' h% i1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;! Z+ `3 r0 w: {0 M. g
$ F4 @- y- A4 R3 Y- Y4 K
03H-读保持寄存器
) r! L( ^2 n" v1 S: r1 c% b! G" _1)描述:读保持寄存器,字节指令操作,可读单个或者多个;
; A2 e- r! i! a2)发送指令: 1 c' m: M6 P3 o& ^. l# @: j
从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器
" A, P7 d! ?- g9 U0 w. B7 n5 x$ E! B. O! z
, E5 l8 S8 W. _: @
& w, M* k- Q. Q! s( X# J) M1 @3)响应:: E" J1 Q) x( ~5 q6 t# O X
6 G" i/ j) \3 \ J, T! z( ?
7 e. L/ X3 ~, b9 y1 i# ?: C/ r; r' p% H# M7 e" p+ o! B9 J( m _
数据存储顺序
. q9 S) M, D# c' s
7 g2 Z/ C2 T+ V5 y- x) ]% p
2 w1 {- j9 @1 e, e
* ]: f$ N" [3 a" t- B 04H-读输入寄存器, R b4 O5 v$ Y0 T- ~7 X
1)描述:读输入寄存器,字节指令操作,可读单个或者多个; # H5 c# |+ H. H! p: o9 D
2)发送指令:同03H;
5 F3 U8 O, c' Q3)响应:同03H;
+ l9 S) [1 [" I2 x! b" \
2 Y6 ]) Y+ r3 x" i0 _, _, q 05H-写单个线圈
8 { n1 ]! l* k' T/ Q2 U5 S1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF
! \/ T1 P; d( U. I$ r. S- k& \. Q2)发送指令: 0 T( _* L* k! t, M. k2 p3 }
设置0x0032线圈为ON;0 D- I- V# u- A- H
3 H( k y. q6 M% p- K# u
u+ S7 S6 g$ d* {/ D o G& ]9 [4 O; B+ o( [- P
3)响应:
# W" J1 `. A5 l$ n同发送指令;1 M/ F$ ]+ ~5 p5 G9 J; W. z
7 K/ h0 F9 c0 Y6 K9 K4 x 06H-写单个保持寄存器" e/ H4 F$ f7 \" L
1)描述:写单个保持寄存器,字节指令操作,只能写一个; ~8 R$ V# q! v# V4 ^9 J! d
2)发送指令: ! W) H/ o( R, p* e$ `& c* v* s+ p
写0x0032保持寄存器为0x1232;! G. X& x' h) Z! j% }
5 t9 q" Z. ]+ F" U" Q- b# C
0 l( C/ |0 Q' o) _% `9 n5 }: o5 A" M) M8 G
3)响应:同发送指令; O8 b# [3 a% r) g
' `1 z3 \/ ^* K$ I" L 0FH-写多个线圈
( G1 R! J5 F9 C1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。 ! s1 w* x( z2 [, \! D
2)发送指令:
9 W f4 r5 S- l) R线圈地址为0x04a5,写12个线圈, : Q$ [: L+ C/ x; h) ^. C
: ]0 c. l% D$ O
9 u1 [4 i6 Y* L! w o( P+ w7 C上图中DATA1为0x0c,表示: & Z# d% G- l/ Q* E {+ k
0 o5 V5 N, x6 _( N% d+ V
DATA2为0x02,不够8位,字节高位填充0:' A, |4 k; D4 D
) c; p( E1 G8 }3 h
$ j, l9 a* @# ` k8 G O6 Y& k, z1 l/ ]4 Z$ d( l6 N
3)响应:# N7 r* F2 h; s$ |
6 Y, F' Y$ s# {- A
8 }# O1 b& U: R L, B4 N5 D% E- d/ ]6 E! V5 I' R% M3 B1 D: W0 }4 P
10H-写多个保持寄存器+ u" I6 H/ ]4 K/ e9 ]& A* c
1)描述:写多个保持寄存器,字节指令操作,可写多个;
+ e0 n1 u: L1 T( u2 v A2)发送指令:
8 J: o: W2 p1 X, g! U- x- A保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;
7 ^/ S( e9 O* P& Q( K- y$ e: `/ a A$ j! M% h$ @7 T" p3 l; X' Y
' q, ?+ j) z8 J. i9 @* P2 J2 \3)响应:3 ^+ q( H5 b6 R' d- L1 T! n; @
# ]( Q& @* y j1 i! d
+ ~9 [: C3 R9 |; T/ w-8 J5 R- C! P9 ]5 |7 W A
7 ?2 ^. |2 d! Z3 F- v
% L8 P5 Z! U/ H/ \# I' j |
|