一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3487|回复: 1
收起左侧

三菱PLC通信贴

[复制链接]
发表于 2017-3-28 22:40 | 显示全部楼层 |阅读模式
三菱plc串口通信协议与串口初始化: f# a, r5 w4 O8 x& V

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

1、系统硬件构成

三菱fx系列plc自带的编程口是rs-422接口,而pc机的串行通信口则是rs-232c接口,两者之间需要通过sc-09适配电缆才能通信。不同设备上相同类型的通信接口的引脚定义可能存在差异。pc机与三菱fx系列plc上的通信接口引脚定义如图1所示。
- Q9 n$ M$ I: G  [  w 20150905205937724.jpg : }+ H/ h' I% P# }

6 Q$ t- J, v4 T图2 sc-09电缆内部电路

2、通信协议

pc机与plc之间有两种通信方式:一种是pc机具有优先权而plc始终被动响应pc机发来的命令;另一种则是plc具有优先权,将命令发送给pc机,并接收来自pc机的响应。本文采用的是前一种通信方式。
4 P# R/ t; A% |! J% Y' v为实现pc机与fx系列plc编程口之间的通信,系统采用的是编程口专用通信协议。

2.1 控制字符

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

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

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

表1 控制字符意义 * {( z) O/ Y. h2 i- c( j  D
20150905205949513.jpg
& F; O$ @  L$ F # W, i$ i- i9 k. L( P2 R
2.2 命令代码

pc机对plc相应软元件的操作是通过"0"、"1"、"7"、"8"四个命令符来实现的,各命令符的含义如表2所示。 ; U8 |5 ^2 O, O2 P, e9 a: D
表2 命令字符含义
8 [5 C& w' O- S/ s 20150905205958547.jpg
! A5 p: r& E- v0 Q7 W7 `
- t6 F: ^# U* B# e) i: `8 q! b2.3 命令帧

一个完整的命令帧由控制字符stx(02h)、命令码(cmd)、数据段、控制字符etx(03h)以及和校验码五部分组成。
3 |; K  e5 w" z$ _其中,和校验码是从命令码到控制字符etx的所有字符的ascii码(十六进制)相加所得结果的最低两位数。

①pc机"读"命令帧
& t- w% H  S+ e0 g8 `2 b"读"命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、报文结束标志以及和校验码组成。来自:电工技术之家
( M+ v7 q, ]/ u" I$ S7 u* p当通信正确时,plc返回的应答帧由报文开始标志、数据段、报文结束标志以及和校验码组成;通信出错时,plc应答"nak"。

②pc机"强制on"命令帧
% z9 j" d6 M7 n! z9 B& Jpc机"强制on"命令帧由报文开始标志、命令码(37h)、软元件地址、报文结束标志以及和校验码组成。接收命令正常时,plc应答"ack";接收出错时,plc应答"nak"。

③pc机"强制off"命令帧 8 k( E, m- X' b- F" _3 v
pc机"强制off"命令帧由报文开始标志、命令码(38h)、软元件地址、报文结束标志以及和校验码组成。接收命令正常时,plc应答"ack";接收出错时,plc应答"nak"。

④pc机"写"命令帧 6 l$ n: K& Z* N3 |& i) y) |
pc机"写"命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、待写入软元件的数据、报文结束标志以及和校验码组成,如图3所示。写入正常时,plc应答"ack";写入出错时,plc应答"nak"。
# F# l, e6 f. r 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所示。 3 o& h& y4 H3 ~/ I
20150905210023873.jpg
7 r3 B4 r: |9 W) R9 S4 m图5 数据写入plc的程序框图

3.5 关闭串口

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


% M: b7 U) a& o' _# J8 J
4 c( x9 `" C( w8 W9 N! l

评分

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

查看全部评分

 楼主| 发表于 2017-3-28 22:44 | 显示全部楼层
一、三菱PLC编程口通讯协议
) y  k- ^! C" g+ D! L! O/ B" \) b1 u2 i1 A8 S# j
三菱PLC编程口的通讯协议比较简单,只有四个命令,即:
0 Y/ h7 @0 z+ l: U# U) ^
" d1 B) G0 p' o( r) w7 r( T5 ~$ h命令                    命令码             目标设备
. ?; {5 w1 W. o) m/ j
: o( R4 E- X9 C5 C+ i* PDEVICE READ CMD             "0"                       X,Y,M,S,T,C,D3 B( F/ P3 ]% t! ?/ n4 Z  }
1 G4 p9 {, D) s3 d: K) r' p
DEVICE WRITE CMD            "1"                       X,Y,M,S,T,C,D, n6 l/ L: w/ P

/ H6 \- N6 K4 U4 c1 c1 WFORCE ON CMD                  " 7"                         X,Y,M,S,T,C
0 Y: V; s6 y3 P4 ^2 a& L
' [7 }+ c% b8 @1 P' lFORCE OFF CMD                  "8"                        X,Y,M,S,T,C
' n, W& Q" A* w6 b+ A) Q. d$ V
) W! ]( g% W# x8 }; P  g, Z! ]五个标示:
) z, a3 e# z4 ]1 w7 `% s" T. ^5 P0 x' H2 Z' y$ b
ENQ            05H             请求
+ N0 `. n1 L2 ]
! S( o0 q+ B9 w/ x  jACK            06H             PLC正确响应
, V0 J. k( J, f+ C& d+ D) r" K" c* N1 c) p! k' d
NAK           15H             PLC错误响应2 h  h6 ^+ g* L6 ~7 t. l3 q/ W
- M  c* K) L) n/ k
STX             02H             报文开始
' n5 z1 W% R6 h! a
9 O' q+ f& |0 o+ RETX             03H             报文结束; M! a1 n! s7 d2 W
% y2 M0 |! f. c6 @/ k$ f; ?. D
使用累加方式的和校验,帧格式如下:
  F" q5 C" S, O/ `7 {
7 e" `7 D5 X- f5 a: [7 ySTX CMD DATA ...... DATA ETX SUM(upper) SUM(lower)
3 }9 @: f2 h1 F0 d0 a5 c4 @; [+ u5 D
  k* N) ^! G9 F- }和校验:
1 p( k- M$ _1 h6 M% q3 q6 c; s6 o9 k0 C6 S+ H  x- o
SUM= CMD+……+ETX。 如SUM=73H,SUM=“73”。
3 `& j& e# Q1 T3 t. @, a2 c: d! K& ^# U2 Z6 f7 ?
1、DEVICE READ(读出软设备状态值)
/ v; z. p0 a6 \1 \! n" y
) b1 B) N4 K( I# w0 g8 }计算机向PLC发送:$ E' S/ i2 S9 U8 A
( d! P$ J6 h" {
始          命令             首地址                        位数             终                 和校验1 O5 u- `$ w1 @

* E$ t3 q5 R; F7 mSTX       CMD             GROUP ADDRESS       BYTES         ETX              SUM
* O* h3 o0 _/ c9 `: r. @. G5 L! N+ w9 A4 N3 L
PLC 返回+ V2 s4 u2 D9 _6 ^, C6 L
1 Q; _% o! e9 A
STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM
8 d1 r7 r5 [: B: m( [/ C: c8 G& [. {
* D4 u6 a3 |( t" w5 U2、DEVICE WRITE(向PLC 软设备写入值)
" I8 {+ m# ~$ Y- k9 {$ G+ A1 m1 r' k# C
计算机向PLC发送:$ Y+ d. L' V* D: O  n3 k* ^
4 O' k& E) C7 v& r) ]# }
始          命令      首地址          位数             数据             终                  和校验
& D0 Z  V1 A& |  F9 P4 G+ ~, o, V! u/ V9 v7 ~
PLC 返回
: C0 w. z' i. H1 _9 R
5 S' e$ a2 s  U& _0 }/ n# [& GACK (06H) 接受正确
9 X4 M5 n3 H1 z! O! U* V1 m" Q( Y* a
NAK (15H) 接受错误
+ ~/ b/ T( V  x. Z. P; G" e* y) [8 p7 S& s, f& W& {$ X* l
3、位设备强制置位/复位
& k5 l  c" P7 g8 r; l
5 k1 z- i2 v. V) LFORCE ON 置位9 d/ n" s0 Z3 k: ]
# E& t  m+ ~2 ]! q
始                 命令             地址                    终                 和校验5 n8 X0 w, Y( N+ E
5 p1 J4 u0 B' Z- M7 ]7 R# n/ \
STX              CMD             ADDRESS            ETX              SUM
; Y# ]/ I$ P. @9 q: q: Z0 }5 `7 _( X6 S, U8 Y  A1 E0 p3 x# Z8 F
02h               37h               address                 03h             sum
$ {* Y/ B# O0 o1 D/ `3 y* O3 P  t6 i1 K8 }
FORCE OFF 复位
% I: m3 S% `* p$ k' k( o. Y* M; E$ F
始                 命令             地址                    终                 和校验
7 ?9 i! N' i' [1 v" _! B# C5 J1 L3 k. c* X" o
STX              CMD             ADDRESS            ETX              SUM. c! Q  ]9 l5 ]1 l# z
6 I. Z" g6 }; V
02h               38h               address                 03h               sum
: ]( ^$ K9 I! V
9 T3 w: p& F- m; ^% u7 ^0 QPLC 返回" h% J0 I3 ^) v9 V, m2 W# `
' i4 q2 R* h: `' w+ R
ACK(06H) 接受正确* b4 a1 w5 i$ b9 H0 f" d
0 d: N( f% b4 c& ]# x5 W
NAK(15H) 接受错误
5 e$ H2 k' k3 _
6 s0 X& c8 `+ A* r以上可以看出,协议非常简单,但是由于没有寄存器类型信息,所以地址的计算十分关键,如D100和M100分别对应哪个地址呢?下面就是三菱Fx系列PLC地址对应表:
- S. `3 I5 Y7 ?& C' `; B. t" C; E, S: a) z. B0 Z+ {" ~; K
Public Const PLC_D_Base_AddRess = 4096
: k1 o4 S) r- G4 _4 l7 C+ @; C) B, d6 U$ h% b, y
Public Const PLC_D_Special_Base_AddRess = 3584/ \8 |8 S" J8 A7 Q7 J1 \- X" V

; X. C0 Y" Z- DPublic Const PLC_Y_Group_Base_AddRess = 160" `1 t2 {" d' g* P

3 [3 v% L$ @* G6 Z* p+ F  R8 KPublic Const PLC_PY_Group_Base_AddRess = 672
" X+ A6 n. X, ^" N
: D* R5 `& P, J; aPublic Const PLC_T_Group_Base_AddRess = 1923 R( C7 t) r3 i& m) D3 z: U
: {8 M* w9 E* j+ E. v
Public Const PLC_OT_Group_Base_AddRess = 704; D5 g$ y3 |; p" d2 r0 S# y

! s; H9 e) l1 g; a  s  G5 iPublic Const PLC_RT_Group_Base_AddRess = 12163 X# f; m6 S4 M/ ^& C+ L: s" ^5 {
: }3 i+ j' N$ t6 ^2 u& v6 b
Public Const PLC_M_SINGLE_Base_AddRess = 2048(命令为7或8时)3 @1 k: B4 D! O, `; h* e: ]5 j

# f2 c' u& J0 [' r7 p4 T* VPublic Const PLC_M_Group_Base_AddRess = 2569 [- T7 ~+ ~/ T9 t* V
8 s$ M+ H5 {! T7 k
Public Const PLC_PM_Group_Base_AddRess = 768
& `1 N- l; N3 |. _6 U2 C* n+ A5 A* T" r! G7 B+ h
Public Const PLC_S_Group_Base_AddRess = 0+ I$ x0 q# v0 S8 _+ k0 ^" S. J
" A4 z1 B, C; Z; B# f
Public Const PLC_X_Group_Base_AddRess = 128
$ b& P- U7 z" p! s+ E0 P- @( n. J' Y; |& h
Public Const PLC_C_Group_Base_AddRess = 448) }# e! M6 l; N  M! m/ c' ]* M

7 n$ E+ K% S2 E/ A, W) l% I8 G" I8 wPublic Const PLC_OC_Group_Base_AddRess = 960- @3 Q, M3 _! W+ t: ^9 A5 G
9 f# Q, P- H! r: {
Public Const PLC_RC_Group_Base_AddRess = 1472$ R! [& W6 B; @; l* n" i: H9 M9 S
  f+ d7 a! q9 P% X; w' i
Public Const PLC_TV_Group_Base_AddRess = 2048  o7 i: N& W, h- n2 y" y# j# N

4 V7 x* U/ X' h7 Y. S0 z1 aPublic Const PLC_CV16_Group_Base_AddRess = 2560- Y2 M0 i6 x3 X

; D: S: d# w0 ?8 @' A, cPublic Const PLC_CV32_Group_Base_AddRess = 3072+ P# K9 \# G( Z$ J2 L& m2 \/ Q, k

. q8 I: L3 ~7 l% F2 F5 t当我们用DEVICE READ命令时,D100地址=100*2+4096;M100地址=100+256;不同的是D类型寄存器存放的是字,M寄存器存放的是位,同样是读两个字节,D100返回的就是PLC中D100地址的值,M类型寄存器返回的是M100到M116的值。所以当我们用FORCE ON 命令时,M100寄存器地址=100+2048;0 g& V+ |) W5 P4 A% W" c3 c

  G4 Z. I/ }8 Q+ |( p9 y$ S* t这也没有什么复杂的,不是吗?可是三菱公司好像不甘于如此,FORCE ON/Off命令中地址排列与DEVICE READ/WRITE不同,是低位在前高位在后。如Y20,地址是0510H,代码中4个字节地址表示为:1005。(注意:Y寄存器为八进制,如Y20地址=16+1280=0510H)3 g1 ^0 |" S* c1 ^4 X

7 ?7 U& I* e3 b" N2 N& K

本版积分规则

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

GMT+8, 2024-4-19 06:38 , Processed in 0.067099 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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