|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 风吹过后 于 2022-8-8 15:22 编辑
9 o. |. ]) C# g4 `$ }2 t3 p) D0 N0 Q4 Q+ D
01H-读线圈状态
( y7 J0 e e% w) p3 t- s+ I0 r1)描述:读从机线圈寄存器,位操作,可读单个或者多个; 1 h7 v4 c! N/ v
2)发送指令: ; _1 Z6 e9 m0 H8 q3 l9 E B
假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下:
) J P2 t& e5 Z; n$ t1 r
- z! q" x# f& ~/ e# d1 J; [
3)响应:
2 S8 p% Y* v* K. E$ |( l7 e返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图;
2 c' u; ^ h p- d. _6 H
' _1 l! f! p6 N0 A
9 ?* U, E2 k$ E
上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;2 N0 {- ~$ u- E6 Y) i0 }. _
) \& _ i* n5 Z/ u. i6 S9 {
' q$ E8 q2 `8 @# a
1 l8 @ l, G& g3 z: B8 |) wdata2表示地址0x002b-0x0033的线圈状态,如下表:
, e7 f4 t% M' l' j: A9 P2 Z& E/ @1 I& c; t! C# f
$ S& x2 o/ S/ y& B3 \8 Jdata3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:$ N# `; b. {5 b/ M& S
6 E, u, r6 P) ^; @+ A
/ {) i# r" k7 c9 ^* z
9 y" K. l( r. L3 p 02H-读离散输入状态
% H) y1 q2 o. C# F) o/ `1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;% u5 Q: X+ H d9 H4 g ]
4 l ?: u7 a( b7 Q0 ~
03H-读保持寄存器5 A1 O5 @: B/ @9 \7 J7 z
1)描述:读保持寄存器,字节指令操作,可读单个或者多个;
8 S0 [ n3 s7 c2 E7 F2)发送指令: ) L$ S5 N, i x- W/ g# M
从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器+ r8 n7 i- H+ @( @1 }& M
f. Y/ k7 t- c, k/ |. C
2 b9 I# b4 m$ a) ^
N0 ?( L! l/ j3)响应:1 x) V* }* H/ x, \
/ I$ ?& v6 r: p" {
! P1 N/ E% ]) U; R, l I/ j# f3 D4 k* B" u
数据存储顺序
3 L( \% `+ A; J/ @+ D/ U4 g/ F. a9 r
3 Z1 B0 o0 H- v+ N5 I2 b
2 f- A3 U, r o' G, o 04H-读输入寄存器
- Y( {7 x e* s1 Q5 o! J' P1)描述:读输入寄存器,字节指令操作,可读单个或者多个; 6 P5 D* g: `: q j' G, u- h1 b
2)发送指令:同03H;
5 ^ Q" `; O% c$ e* d# A3 J3)响应:同03H;2 y* j: K9 i! i8 ]( ?* L
# V' \' m X6 o u# y6 o) n
05H-写单个线圈
" N2 N$ S0 Y% w8 C7 g* A8 r2 W8 P2 y1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF 5 s" M( U9 c- {' x0 h& n( D
2)发送指令: 6 l# T! L/ F- q6 ?4 G2 [
设置0x0032线圈为ON;
[( }" v4 t0 e& v
( m( e \. l) L# b8 u5 d \/ m
' h$ d! R. B# W! b( F. H2 E. l2 j
6 \! K+ b0 a2 O9 w9 `3)响应:
: V3 z' g* ~2 T' G+ b同发送指令;% \+ z# I' F0 y+ [% A5 k6 N
5 z" l) S6 |1 n, K. @3 h3 I' f
06H-写单个保持寄存器
. D' O8 _% @: F5 _, O1)描述:写单个保持寄存器,字节指令操作,只能写一个; / o& I) y) X8 h ?
2)发送指令: 7 N0 r+ |! p* P- }0 g: L2 ]
写0x0032保持寄存器为0x1232;3 J: R/ g8 q* @6 L
* X/ i O& Z* e% O# s N% F! P/ ?5 v
0 E$ g+ J! A& d$ k- V. J: s" A$ {3 ^
& D7 h2 | ~2 E8 ~& \3)响应:同发送指令;! {6 j6 a7 Y# @! j4 L
1 `/ H1 G+ G5 b4 p5 }2 @" F
0FH-写多个线圈5 |1 J4 T/ A' Y) O" P
1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。
# y4 @+ H9 d4 t2)发送指令: % O7 ^& @, M$ b; }- I5 ?( C
线圈地址为0x04a5,写12个线圈, . m+ M w# E7 A* A/ V. n; v+ {. ^
1 Y" h; L' P- V* G, }
0 h6 t; `4 _( W4 I" u$ }" L上图中DATA1为0x0c,表示:
& c, @8 D$ Z) p8 I' M
1 N0 W f# J; ^8 f( N6 LDATA2为0x02,不够8位,字节高位填充0:
! a" V9 ]. L2 `# x4 L1 ?2 _$ g! r' @$ _/ {5 x5 {, P
) o0 o$ Y& a2 | {* n
" l c: ^( ~$ K& E3 l1 K3)响应:" J. C& F& Y* ^ P
$ x% a6 G. U v) B$ H; Z/ j9 u& `+ b
6 t6 ?3 ^1 }, S- W
8 P2 @" C. {( V( ~' A+ H 10H-写多个保持寄存器6 I6 p8 ?3 G6 x8 e1 N9 Q. T/ ^
1)描述:写多个保持寄存器,字节指令操作,可写多个;
4 |: R& R9 d) C0 y4 f: T2)发送指令:
3 L g1 w. p" \, A0 a5 F' L保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;
' z b& d8 `* | R; |& n$ `) l
) K# w# H# U7 }/ R- J' c4 F2 y% P. n
) `: H8 O2 \/ b. T3)响应:9 O/ D5 |" y$ a1 e- o
" [8 t3 {" z* k$ t% `- ^
- B; ]1 p! A% i0 W7 O4 K. l-
' l' s' s4 E# z
/ I4 u) Y' v6 {3 O/ z
+ d- ] B4 |7 ~8 T* G |
|