|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 风吹过后 于 2022-8-8 15:22 编辑 ( C2 }$ v- [1 \2 D" l
% l- j6 j$ I5 B8 G# m, ^* a01H-读线圈状态0 u# `' d1 O9 D% |+ `
1)描述:读从机线圈寄存器,位操作,可读单个或者多个; 0 W6 E) s9 ~+ f/ i- C g
2)发送指令: / t# d- `: o3 C( i; A- F+ e
假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下:
# X5 J5 z4 p& K1 B- d
% y& q6 X' a+ F; ]' A4 r3)响应: ' D- i4 S# H" ^3 d. ?
返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图; ( c0 r1 ~( a2 J% d' x, q6 x# Z5 \
k) ^; Z1 V: C
8 ]" W1 A' q: U4 |( `上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;+ S2 ` y8 H( @7 z
* {) x l1 p( G1 H
+ ~+ l: O! j; A0 U! N
7 ] \- O. k9 ]! M. gdata2表示地址0x002b-0x0033的线圈状态,如下表:9 x: {5 C3 w J/ ~2 P( F1 _
+ a; ~7 j" O) `" M6 b
5 M1 T, S9 g7 Q" S( T) h! h
data3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:0 g- D' S0 w; J; u
7 h8 `6 I( l- |# H# O. h0 U$ Y
2 h; ~% P* U1 c3 o+ V& T# q
# W- k8 G6 ?: N" @; G9 ]8 ^- g
02H-读离散输入状态
) A0 a3 @ h. z1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;! w1 g- U, K2 ^- V# P4 E
/ I" {( n, m. E( |
03H-读保持寄存器
3 F. L/ j# }) c4 _$ @1)描述:读保持寄存器,字节指令操作,可读单个或者多个;
& L k. H) g% b* S% Z2)发送指令: - `4 ~+ N% m2 h& _$ p- B( x
从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器$ @6 \2 A2 e; b. k0 D
4 d$ }5 F% ] S" \- d
8 {8 _' u$ D( |5 c" c$ w: z+ I
- I% S" M, j# m$ p
3)响应:
' m9 K# Y" W4 Y& f, {* U% N$ E7 X# T/ A7 R
5 v {% M; R5 t) C9 p& |6 D
! A7 U* e3 [4 q% K3 z- c' q数据存储顺序
+ @3 b k7 `' W2 M3 ], ^" @2 v5 i# {+ m3 u, t- _1 l
) z; F( ]# g& |' g' [- d" A
! P$ }3 j0 g q8 F3 y" l7 W 04H-读输入寄存器
1 |( @0 r4 n- c1)描述:读输入寄存器,字节指令操作,可读单个或者多个; * g/ `" U% @4 C# P* `/ y+ A$ w( g
2)发送指令:同03H; 6 x# K# {! S, p$ J% U" }& |
3)响应:同03H;
; M3 n6 v; U$ u2 j5 Z/ U3 O+ i# x; ?. I4 y1 g5 O7 g) d
05H-写单个线圈
$ e, Z, w% |% O( \1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF - R/ K/ t# g; s1 [2 b( D; U
2)发送指令: ! ?* w* a, y: v t6 B9 _1 P
设置0x0032线圈为ON;
9 Z$ R/ F* r( g( U6 l/ x, s" \! \, Z* K$ `. f; A) [$ g1 S, m
* v4 O$ ^8 n) |- i; A- O/ j
6 g1 o2 G+ W% W* g1 U) P% Q
3)响应: 0 u1 D# j4 @4 A: b. B4 [6 j! R
同发送指令;
1 D. |8 B# X/ w+ i5 @1 P
! @& X7 W8 ~( I% S 06H-写单个保持寄存器: H# q' c( c. k& ?9 C+ V8 h
1)描述:写单个保持寄存器,字节指令操作,只能写一个; ; i' V5 t3 C" Q4 T9 S* @. `
2)发送指令: 5 Y2 I0 u+ r8 l |/ I6 Z
写0x0032保持寄存器为0x1232;
0 v. d# L$ b( X
7 c M* [& X) H0 E) ]! q/ w
% N$ Q3 |, \4 f9 w$ ]! I: o7 P M& W' V5 t: b# l/ h X
3)响应:同发送指令;* K7 H/ D$ {' ~7 e. j0 g
: n# `! `/ |; Y+ t9 _
0FH-写多个线圈
) j% D3 H: i2 I! L& G) d1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。 ! R& p5 H" K5 N2 h
2)发送指令:
% E' W4 ^1 y, z" ~- w线圈地址为0x04a5,写12个线圈,
4 k! c+ m' z& R! p0 E& W
( }. ^8 ]* \; s& g9 Z) f* w8 g$ y. d% b
上图中DATA1为0x0c,表示:
" y! h) [$ j9 d( {* {
! _4 _6 J8 L+ y g `3 GDATA2为0x02,不够8位,字节高位填充0:3 G7 Z: T, t- S: a, N$ G- P. K
. S& h; I5 i5 n( U% _2 L
4 r; C" Z, j: D# m" R
% h/ O2 O7 I4 Q% B# d& f2 C3)响应:2 V/ n: _. G& Z6 `5 Y
2 `5 e( o2 K9 F7 _2 b5 _
3 m. }! m0 m& h6 M! P, Q$ x' Z; W3 r6 d3 I' T: K0 E. C* h, k% e
10H-写多个保持寄存器
! X l4 i6 t5 p- X; G1)描述:写多个保持寄存器,字节指令操作,可写多个;
C1 a% O6 v$ k" E2)发送指令: 8 ?: V2 I0 _+ p% H/ e: `& Q. g
保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;
- A( N1 t w! A. m6 R' F$ k+ f0 q3 d2 z7 |# a
. N1 v5 `* U8 I$ G
3)响应:
) Q" m6 n" _" b% ~+ a
0 T) q u6 h K6 x* a: N
x/ U) C, C, B3 V& N5 O* H/ M* C7 E-( P2 N1 v8 U5 ~& T
$ Q6 q2 v, E- f/ E$ T, k2 Y7 m. w* Q4 Z
|
|