一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 5340|回复: 1

三菱PLC通信贴

[复制链接]
发表于 2017-3-28 22:40 | 显示全部楼层 |阅读模式
三菱plc串口通信协议与串口初始化3 }, S9 Y- x0 e

三菱plc串口通信协议与串口初始化

1、系统硬件构成

三菱fx系列plc自带的编程口是rs-422接口,而pc机的串行通信口则是rs-232c接口,两者之间需要通过sc-09适配电缆才能通信。不同设备上相同类型的通信接口的引脚定义可能存在差异。pc机与三菱fx系列plc上的通信接口引脚定义如图1所示。 0 w1 u. R8 ~% Y8 f- U
20150905205937724.jpg
) E9 |; t0 {# d* ` - y' |- h& U( o' P. K
图2 sc-09电缆内部电路

2、通信协议

pc机与plc之间有两种通信方式:一种是pc机具有优先权而plc始终被动响应pc机发来的命令;另一种则是plc具有优先权,将命令发送给pc机,并接收来自pc机的响应。本文采用的是前一种通信方式。
0 W. Q6 m9 v9 x/ S5 b为实现pc机与fx系列plc编程口之间的通信,系统采用的是编程口专用通信协议。

2.1 控制字符

在pc机与fx系列plc的串行通信中,数据是以帧为单位发送和接收的。

其中,控制字符enq(05h)、ack(06h)和nak(15h)可以构成单字符帧心1,其余的字符帧在发送或接收时都必须用控制字符stx(02h)和etx(03h)分别作为该帧的起始标志和结束标志。

各控制字符的意义如表1所示。

表1 控制字符意义
. L& q- ^5 n3 U6 h 20150905205949513.jpg 4 j; T7 r( P; W) A& i
/ z! R- I. P7 p5 Z) n8 e$ _2 ~
2.2 命令代码

pc机对plc相应软元件的操作是通过"0"、"1"、"7"、"8"四个命令符来实现的,各命令符的含义如表2所示。
. _1 k9 z* E2 [1 w/ ~1 `3 d6 z表2 命令字符含义
6 z: `! M$ H/ f* @. ~& Y: Q( Y9 ~ 20150905205958547.jpg
+ X1 f; v. B5 a8 ] 1 A& q# `2 K$ Z
2.3 命令帧

一个完整的命令帧由控制字符stx(02h)、命令码(cmd)、数据段、控制字符etx(03h)以及和校验码五部分组成。$ Z3 x# l; c) P8 a( O' x
其中,和校验码是从命令码到控制字符etx的所有字符的ascii码(十六进制)相加所得结果的最低两位数。

①pc机"读"命令帧 ( V0 E: i  z! h8 p; _' ^
"读"命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、报文结束标志以及和校验码组成。来自:电工技术之家8 ]$ G/ F( `; v+ u
当通信正确时,plc返回的应答帧由报文开始标志、数据段、报文结束标志以及和校验码组成;通信出错时,plc应答"nak"。

②pc机"强制on"命令帧
/ R& e  N$ D7 t5 f# xpc机"强制on"命令帧由报文开始标志、命令码(37h)、软元件地址、报文结束标志以及和校验码组成。接收命令正常时,plc应答"ack";接收出错时,plc应答"nak"。

③pc机"强制off"命令帧 ' H& Z+ I7 Y: E2 N+ `2 t
pc机"强制off"命令帧由报文开始标志、命令码(38h)、软元件地址、报文结束标志以及和校验码组成。接收命令正常时,plc应答"ack";接收出错时,plc应答"nak"。

④pc机"写"命令帧 " O7 X# x* H6 M( ~0 T6 Z) X2 X
pc机"写"命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、待写入软元件的数据、报文结束标志以及和校验码组成,如图3所示。写入正常时,plc应答"ack";写入出错时,plc应答"nak"。
0 V4 d. N9 \' {: d 20150905210012131.jpg

图4 串行通信程序流程图

3.1 串口初始化

串口按照fx系列plc的标准通信参数进行配置:①波特率为9 600 bit/s;②数据比特为7位;③奇偶校验方式采用偶校验;④停止位为1位。

3.2 请求通信

开始通信时,pc机发送"enq"指令查询plc是否准备好,同时也检查pc机到plc的连接是否正确。(www.dgjs123.com)当接收到字符后,若plc处在run状态,则要等到本次扫描周期结束时才应答;若plc处在stop状态,则马上应答。通信正常时,plc应答"ack";通信出错时,应答"nak"。

3.3 读取plc软元件状态

程序首先通过visa写入节点发送命令字符"0"读取plc相应软元件的状态,然后visa读取节点获得plc返回数据。写入和读取的字符串都是十六进制形式的。通过对读取的字符串的拆分可获得相应软元件每一位的状态,从而起到监视plc的作用。

3.4 数据写入plc软元件

程序首先通过visa写入节点发送命令字符"1"对相应的软元件进行写入操作,然后visa读取节点获得plc返回的应答帧,若写入正确,plc应答"ack";若写入错误,plc应答"nak"。将写入数据传送至plc软元件所对应的地址,即可对软元件的任意位进行实时操作。数据写入plc的程序框图如图5所示。 # e& ~6 v5 p8 L& n6 P: u
20150905210023873.jpg
' V" K7 g8 A1 F  C: m9 G: O# }图5 数据写入plc的程序框图

3.5 关闭串口

通信结束后,需使用visa关闭节点关闭串口设备,否则程序会一直占用串口资源,导致其他程序无法访问。


1 N* b. U' K0 J0 Y, I0 U0 z- ~1 u% B  u( x

评分

参与人数 1一乐金币 +1 收起 理由
snoopy8008 + 1

查看全部评分

 楼主| 发表于 2017-3-28 22:44 | 显示全部楼层
一、三菱PLC编程口通讯协议
4 p  P6 s8 F  E2 R- Q. G3 w( e/ n% Z) ]- T$ J1 e& d7 u
三菱PLC编程口的通讯协议比较简单,只有四个命令,即:
2 y$ V6 Q* f3 G  \( \6 o! D% X
" a, W, \/ m% z& N2 \: X: N命令                    命令码             目标设备( P! Z5 _+ J8 j. F1 n4 G
$ u; Z* A" q7 ~$ G, s
DEVICE READ CMD             "0"                       X,Y,M,S,T,C,D  ~% u8 T% @, j6 w4 _5 B) j
- U+ w. c* B, S& n7 f7 ^5 y" B
DEVICE WRITE CMD            "1"                       X,Y,M,S,T,C,D  O3 a4 B9 `! t7 K

* e0 |9 l( X/ a+ e3 mFORCE ON CMD                  " 7"                         X,Y,M,S,T,C3 B" t: c2 g8 R" b
2 {; [6 V9 p  I5 X; J0 h8 E
FORCE OFF CMD                  "8"                        X,Y,M,S,T,C
, w1 t& w. W8 N6 [0 q3 b
, x1 O4 l2 Z- M( }& V五个标示:
) I' Q) s3 V* S3 u$ s9 f0 }  p- {6 k' k8 j2 d
ENQ            05H             请求
. o* ~6 Y4 }' o$ l* n4 V' {+ @7 \( I: i9 W
ACK            06H             PLC正确响应6 p" ]/ m; e3 O! L
* m6 I+ Z1 d& {3 L% d. X/ }
NAK           15H             PLC错误响应$ Y- |1 F% f* m8 Q; _

) W" b- r- w$ t; E$ JSTX             02H             报文开始
' v3 ?9 O2 \: _8 O# }0 I. m9 B/ }2 i0 G3 Z3 X) }: y/ n
ETX             03H             报文结束
" r6 u( d, L  b# v% w- M
, `0 {0 T- U/ n( `! W使用累加方式的和校验,帧格式如下:
( T, Y8 \6 n8 H. B
6 D9 W1 w+ l5 j' @. V2 gSTX CMD DATA ...... DATA ETX SUM(upper) SUM(lower)* w/ f( H4 ]0 @! p: _$ O0 l

( S; ?; q8 D8 k# s和校验:' W  i2 W5 t1 H. f" V: G4 k

( d/ }$ R. u8 E& ?6 Q# x* h( FSUM= CMD+……+ETX。 如SUM=73H,SUM=“73”。
' Q( M  h- l8 k! x0 k
6 v4 k1 X/ Y. h: L1、DEVICE READ(读出软设备状态值)$ e$ w3 N9 i2 w2 w; p7 J
( z& q; F! J) b  Q# K
计算机向PLC发送:
2 W+ y5 |- f. W) t) g$ b  C7 b, g/ Y/ {9 T4 k. N
始          命令             首地址                        位数             终                 和校验, M( L( T' t- X( e" P: g

+ H  t( g# d- JSTX       CMD             GROUP ADDRESS       BYTES         ETX              SUM; J5 {1 ^* I+ s6 f3 W. Q
) X; l6 Q; T9 n+ N! R- @1 q% g
PLC 返回( |0 Y+ _; {6 K; r

1 B9 S0 L+ G, d) n) wSTX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM
6 R) \* v. `- P0 e# Q  N. q1 t+ b
% Q. A  X, x: X& A2、DEVICE WRITE(向PLC 软设备写入值)
7 V, J# `5 y( R9 m  g: O" P. }1 z( j. |  C
计算机向PLC发送:8 I2 G; B' h. I, M4 U9 s) G% ^
: I% S; c& ]8 Z) Z# u# M+ ^
始          命令      首地址          位数             数据             终                  和校验( I+ Y( F" w, l+ {/ C% j' p
/ U* A# }, D& O- I) M, A
PLC 返回
. ?. A1 m5 n- {: s/ K7 Z( ~4 I
- N0 Y7 v" f+ Q& cACK (06H) 接受正确
7 m7 i* {+ M+ \+ k$ T0 R# j5 f1 x, {# Q' S/ @% `, r& D/ }* y6 l
NAK (15H) 接受错误! n3 ?/ f! j- I) k+ b( B
* _( W2 G: x" o( ~  e6 L. Z
3、位设备强制置位/复位- G* Y5 N7 D+ Y
; a" |  t- ^- L' A
FORCE ON 置位
- ^, G2 S/ q! T8 l- F) s
- v8 ^6 ]3 j1 a; U+ T" f0 @& J0 S4 X9 i始                 命令             地址                    终                 和校验
  O5 `  Z9 E0 i. f) s! V. q2 @' B$ ^/ \  \1 o
STX              CMD             ADDRESS            ETX              SUM
4 [$ v0 n, i# g0 P% I& P+ l9 A+ N& V3 s- h2 ~9 H
02h               37h               address                 03h             sum
; `5 V/ Q2 }4 s5 U
0 c- Y9 E1 C% }0 A& M! aFORCE OFF 复位
' A8 U4 x4 L9 X9 z; v3 B4 l% i& W- \5 o6 n" \. b; M
始                 命令             地址                    终                 和校验
1 T3 _0 j4 S$ N) |6 ^5 E* o- J) u, T# E. p) R' F& \* `$ K# y
STX              CMD             ADDRESS            ETX              SUM
' @) b& O: r3 y! U2 d
# }/ ~" k: X6 K1 B; V02h               38h               address                 03h               sum% ]2 ?: I+ t3 U2 @# ]
7 ]; q8 v5 b" U8 M! }) B" k
PLC 返回5 C/ v+ j1 b7 W2 r

, o0 D/ ~5 |5 z- X6 j/ ?% |- PACK(06H) 接受正确- j  ~2 k& E% q  O% w

  k, N+ W: b3 P8 TNAK(15H) 接受错误6 ?' P# a$ Z' Q1 o5 X& U3 A

" g6 W2 h4 a  g% W; I以上可以看出,协议非常简单,但是由于没有寄存器类型信息,所以地址的计算十分关键,如D100和M100分别对应哪个地址呢?下面就是三菱Fx系列PLC地址对应表:
! d* x6 [/ U6 @
7 c- o8 D& J- g3 N( i' CPublic Const PLC_D_Base_AddRess = 4096
% a6 L. p! K! ^; m$ G+ P2 m% K' T" \9 g& T' i
Public Const PLC_D_Special_Base_AddRess = 35847 |( p5 Z, e6 C( }3 v

4 Y3 q9 f7 k, @Public Const PLC_Y_Group_Base_AddRess = 160
' G3 z) L, _& s8 f7 m( o
) |" `( g5 a( W+ u& ePublic Const PLC_PY_Group_Base_AddRess = 672; J5 ]  \1 u/ m# @
, K% _. r, g! v, j& ^
Public Const PLC_T_Group_Base_AddRess = 192
6 j" B, V  Q0 n4 H) t5 H% G4 d- L1 i  \  O
Public Const PLC_OT_Group_Base_AddRess = 704# @# ]: B& ~5 d. E  V
+ c1 O% E# i8 p) {2 a1 b' l
Public Const PLC_RT_Group_Base_AddRess = 1216; U* D1 U; g1 [3 W9 e& K

9 {3 q$ j6 c( p! c* OPublic Const PLC_M_SINGLE_Base_AddRess = 2048(命令为7或8时)
( y7 P  a! I3 I5 y+ |; j/ U" F4 `' D7 ~$ k6 D
Public Const PLC_M_Group_Base_AddRess = 256
( f4 |" k# ~+ Z
9 `1 k6 L7 J' e% A: fPublic Const PLC_PM_Group_Base_AddRess = 768
  `7 w) @5 B! _$ a0 Z5 T! I1 v2 U$ }" ^
Public Const PLC_S_Group_Base_AddRess = 0  M  r) C2 U, @3 s
/ }# G' _( U% k* [, k- @
Public Const PLC_X_Group_Base_AddRess = 128
4 s. o0 o) F; v0 ~  F- @4 E/ A: [' Q* W  p# J& M+ K9 F
Public Const PLC_C_Group_Base_AddRess = 448
# F: X% S. a$ z: x( }) I4 A
& b) [# W6 t% V; _) O7 |Public Const PLC_OC_Group_Base_AddRess = 960
/ Q! d( i- G0 @
5 ]  u! e7 V8 pPublic Const PLC_RC_Group_Base_AddRess = 14726 ^# x/ e, r5 F" A' Y

9 j0 ^- m. A% dPublic Const PLC_TV_Group_Base_AddRess = 2048; w# U3 X' O3 u' F. h2 C6 \1 O
- S( A# B6 m! z8 u
Public Const PLC_CV16_Group_Base_AddRess = 2560
- Q# Z0 u6 r$ o+ y4 T3 T6 {7 z6 |6 d8 B5 O) I; P  G; n  \" {7 r  m
Public Const PLC_CV32_Group_Base_AddRess = 3072
9 R. Y0 ^$ h- i. K5 j- Z
& m' P/ g: n: m" x$ Y' q当我们用DEVICE READ命令时,D100地址=100*2+4096;M100地址=100+256;不同的是D类型寄存器存放的是字,M寄存器存放的是位,同样是读两个字节,D100返回的就是PLC中D100地址的值,M类型寄存器返回的是M100到M116的值。所以当我们用FORCE ON 命令时,M100寄存器地址=100+2048;7 t! Y8 N8 _1 I

) V# d" n# ]* D* n这也没有什么复杂的,不是吗?可是三菱公司好像不甘于如此,FORCE ON/Off命令中地址排列与DEVICE READ/WRITE不同,是低位在前高位在后。如Y20,地址是0510H,代码中4个字节地址表示为:1005。(注意:Y寄存器为八进制,如Y20地址=16+1280=0510H)+ o4 H& ^% ^3 T! K3 N

0 I; J! t' _) w: w* N
回复 0 1

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-8-20 09:00 , Processed in 0.040605 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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