一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

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

三菱PLC通信贴

[复制链接]
发表于 2017-3-28 22:40 | 显示全部楼层 |阅读模式
三菱plc串口通信协议与串口初始化
! ?! o+ ]4 e5 P" _4 t7 Q! R

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

1、系统硬件构成

三菱fx系列plc自带的编程口是rs-422接口,而pc机的串行通信口则是rs-232c接口,两者之间需要通过sc-09适配电缆才能通信。不同设备上相同类型的通信接口的引脚定义可能存在差异。pc机与三菱fx系列plc上的通信接口引脚定义如图1所示。
8 K# d& o- n4 f1 X9 t 20150905205937724.jpg ) f; o3 }, _$ J0 o+ ?. z

- n. h/ o2 M. j/ _$ B2 \3 l) `图2 sc-09电缆内部电路

2、通信协议

pc机与plc之间有两种通信方式:一种是pc机具有优先权而plc始终被动响应pc机发来的命令;另一种则是plc具有优先权,将命令发送给pc机,并接收来自pc机的响应。本文采用的是前一种通信方式。 + @. y  f6 [* d3 S! o# b
为实现pc机与fx系列plc编程口之间的通信,系统采用的是编程口专用通信协议。

2.1 控制字符

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

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

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

表1 控制字符意义 & m; w  g8 j/ `3 H4 e* h3 d+ G5 k' W' s
20150905205949513.jpg
) T" D- G7 r/ B5 s! P: E5 ?
) T' {5 P7 x) Q; D  \2.2 命令代码

pc机对plc相应软元件的操作是通过"0"、"1"、"7"、"8"四个命令符来实现的,各命令符的含义如表2所示。 " U$ C# b$ u6 h( Y0 i# a1 E1 g
表2 命令字符含义
- z- ~, O7 B- ~* I7 _$ |5 T/ N 20150905205958547.jpg 0 j+ @# s+ K; B  C# Y0 o+ o& E

  F4 {% d; J2 S7 r! J2.3 命令帧

一个完整的命令帧由控制字符stx(02h)、命令码(cmd)、数据段、控制字符etx(03h)以及和校验码五部分组成。9 s5 \5 C$ K8 M) J
其中,和校验码是从命令码到控制字符etx的所有字符的ascii码(十六进制)相加所得结果的最低两位数。

①pc机"读"命令帧   V+ u# p2 o- f# X/ P- W! V6 ^( ]
"读"命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、报文结束标志以及和校验码组成。来自:电工技术之家9 X" x& R9 F0 i1 R
当通信正确时,plc返回的应答帧由报文开始标志、数据段、报文结束标志以及和校验码组成;通信出错时,plc应答"nak"。

②pc机"强制on"命令帧 * k- {' c7 ]  O3 T* s) y
pc机"强制on"命令帧由报文开始标志、命令码(37h)、软元件地址、报文结束标志以及和校验码组成。接收命令正常时,plc应答"ack";接收出错时,plc应答"nak"。

③pc机"强制off"命令帧
; v" o# M0 c  Q% T( O* t9 ^pc机"强制off"命令帧由报文开始标志、命令码(38h)、软元件地址、报文结束标志以及和校验码组成。接收命令正常时,plc应答"ack";接收出错时,plc应答"nak"。

④pc机"写"命令帧
* P# a6 q# ~! W) @pc机"写"命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、待写入软元件的数据、报文结束标志以及和校验码组成,如图3所示。写入正常时,plc应答"ack";写入出错时,plc应答"nak"。
5 Z3 F& [2 P. J7 O 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所示。 / {% y5 U$ M% y' h! w. Z: J: E
20150905210023873.jpg 8 S; K, ~+ {. }  O2 M" X  E
图5 数据写入plc的程序框图

3.5 关闭串口

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


9 U3 u. m6 Z# Y& s- K/ N
9 W/ ~9 f' [  \3 Y3 v9 S! Y

评分

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

查看全部评分

 楼主| 发表于 2017-3-28 22:44 | 显示全部楼层
一、三菱PLC编程口通讯协议
( r4 b, v. |* K, l- _/ T$ V2 Z
( ]# w. c; I% d& l# N% X" I三菱PLC编程口的通讯协议比较简单,只有四个命令,即:
( Q- K5 z: ~/ D( N$ @8 h/ I; N' e# d
命令                    命令码             目标设备
+ i7 e5 F, R& y, @
! d& f" }8 x: X. q5 pDEVICE READ CMD             "0"                       X,Y,M,S,T,C,D
% A$ x. s& W1 O2 L9 {
+ u6 e% k5 e! ~7 R4 ]+ X1 S. }DEVICE WRITE CMD            "1"                       X,Y,M,S,T,C,D5 Y4 c* o0 Z! e. N9 \
4 Z: S) W" {" l
FORCE ON CMD                  " 7"                         X,Y,M,S,T,C. P7 z$ v$ T; Q) o' k$ ~

& h% |- ?  U0 X5 z( d/ f8 xFORCE OFF CMD                  "8"                        X,Y,M,S,T,C
9 p' r# z, m/ J# F% z. N0 o
4 n+ C/ E4 {2 v: l+ B( @2 @五个标示:8 z- m1 H# M- M1 l7 N1 L

6 x5 m8 y  q+ ^# K! Y- f$ ]ENQ            05H             请求5 \( ^0 A$ D3 Y$ x4 _. B

- J2 ^2 I8 z* a5 q5 DACK            06H             PLC正确响应
/ I9 f: q  L+ ]3 n8 E' |  Y( L9 m- T
NAK           15H             PLC错误响应
3 F, A9 E! S/ Z5 D. {: P2 p. K9 B. p! P  b$ `$ ]: q3 d
STX             02H             报文开始
) q8 S% d  h' K$ m) L, }' e- z8 e! N
ETX             03H             报文结束" r( i) ]+ P. z! H7 y+ ?0 a
7 P0 h. V' F' F3 c0 D  P
使用累加方式的和校验,帧格式如下:# x6 z, T& k+ K1 Q  N

/ R. n3 J4 d- |7 z3 C: _3 iSTX CMD DATA ...... DATA ETX SUM(upper) SUM(lower)' @7 U$ |& ?6 [$ L: S" H# a0 l. w

5 m' V/ s+ R' L8 w3 M- M/ s4 q和校验:3 u7 q: t! s2 s' N+ X
" j, r1 \# W4 |  m9 H
SUM= CMD+……+ETX。 如SUM=73H,SUM=“73”。8 i, J  a5 `5 V7 f" W4 V' l& m: S
' f; P: Z. c# ^* O  l' z
1、DEVICE READ(读出软设备状态值)5 y# m$ m/ c+ W; u( ?8 J! S

. b0 K6 T8 B2 K7 O% B: j" G. ?: X# P7 A计算机向PLC发送:
7 T8 ]) m8 a$ [# l8 ^4 w! U' Q9 I# e; e0 Y9 e7 o2 U: {
始          命令             首地址                        位数             终                 和校验. W0 V6 J  w) d' j4 @8 F" Q" T

& D" N/ S; ~' x1 cSTX       CMD             GROUP ADDRESS       BYTES         ETX              SUM
+ \( m; Z0 n5 e4 f1 ?( ]5 s5 f% P3 C  _
PLC 返回! T; X% x" u! [- }3 Q! e

2 R" {1 h! n) k9 e5 O, PSTX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM
7 A; y; p, w" q( P
, g1 `- Y0 X* z$ U( G# E4 C2、DEVICE WRITE(向PLC 软设备写入值)6 K2 a0 j5 t, `& P8 ~6 o8 A

0 M) N) \, _  o计算机向PLC发送:
6 e: p) v3 y* S# H$ O$ b
7 n1 T! \5 k4 }/ m. C: z, K始          命令      首地址          位数             数据             终                  和校验
: _3 L) |& ]. [  P! [+ \1 B7 E1 B( I+ x8 \. k! h
PLC 返回
+ A; A. H+ ^" S1 g1 ]: g" {
0 Q( L' P7 H3 J; g, mACK (06H) 接受正确& }) M' o' ]# W# Z$ s( g
, z9 Y6 o  |" {9 x2 v$ H! K
NAK (15H) 接受错误
2 x+ }3 B/ {! K: S
" M- ^6 q0 e5 v2 J/ P3、位设备强制置位/复位: n2 j: E  s% v6 s

$ e% }+ \" F% S- R% P" T. r% UFORCE ON 置位4 X3 i: N, n" i0 y0 z0 y" Y

. T  D$ T9 D$ A2 r. s2 L" V始                 命令             地址                    终                 和校验
) g# {3 c( d7 _: `' b: ?" A9 ~8 U3 ~) P- w& Z
STX              CMD             ADDRESS            ETX              SUM
* Z6 z" G9 j( J- O' g
1 g. s: V( N& {! l9 J02h               37h               address                 03h             sum# `9 X! C# A  ?
8 a8 v! S" J) D9 D  d# x
FORCE OFF 复位) H+ j. A( \8 B2 N$ d0 y
3 q" m/ A1 C2 X9 p5 ]" [# o" F4 \
始                 命令             地址                    终                 和校验' M+ a( e/ z" [
; e- ~- @$ d/ W2 j# U
STX              CMD             ADDRESS            ETX              SUM
0 x) P: h; T8 P1 [" v% ~
0 q6 p( x; [; U1 }$ t) B( P02h               38h               address                 03h               sum% y* t. |! A5 v+ j, d* L# v4 a) g3 J

5 d( i& R- v5 G) C5 j* h: T$ SPLC 返回
: q- t) ^' b- j+ w( w
! n0 P; b2 _' `; a1 {0 I) jACK(06H) 接受正确
% s7 D' q% c, b& `- Z& D
5 V5 K% T6 l* v( x! e# D; ~$ lNAK(15H) 接受错误
9 C9 v$ j0 ^2 r( U7 ^5 G
# D0 w: P* l' i& H) }: S' N( p( B以上可以看出,协议非常简单,但是由于没有寄存器类型信息,所以地址的计算十分关键,如D100和M100分别对应哪个地址呢?下面就是三菱Fx系列PLC地址对应表:9 G; I. i+ l* e5 w0 ]

' G" |0 g, R# X5 x) i' JPublic Const PLC_D_Base_AddRess = 40968 F( U: O8 |2 J+ F8 k* o2 O

% t& Z, }( @# W1 [/ `Public Const PLC_D_Special_Base_AddRess = 3584
6 \2 m& o7 h" i( {9 V* U3 B
% t) b3 Q5 T$ D; ]Public Const PLC_Y_Group_Base_AddRess = 1600 M/ r0 K" H8 g. `2 Z# T
0 L" u2 m6 l. T8 t; l
Public Const PLC_PY_Group_Base_AddRess = 6720 b" u, \! V5 z8 X

6 [, ^+ X+ a6 h  K- U+ bPublic Const PLC_T_Group_Base_AddRess = 192
9 W5 u9 Z- j1 [$ v7 @, f
2 F: ]5 v8 F9 m! dPublic Const PLC_OT_Group_Base_AddRess = 704. s; {: \  x% r9 ?

8 V7 b1 C( k2 ?$ j6 `  W6 fPublic Const PLC_RT_Group_Base_AddRess = 1216
* ^8 F4 }7 f1 j& P6 C0 E6 f0 y  `' o& r. n
Public Const PLC_M_SINGLE_Base_AddRess = 2048(命令为7或8时)  y: I) ~' {9 k( S$ ?% ?/ g1 ~& `
  _. f  c. ~$ {& E" L
Public Const PLC_M_Group_Base_AddRess = 256
8 a, d3 ?- J+ H! {/ n, @& Y' _" @$ Y. ^" q
Public Const PLC_PM_Group_Base_AddRess = 768  j) M) w" D6 Z

' W7 a, x) D. A" ^8 c, XPublic Const PLC_S_Group_Base_AddRess = 0
) j* b3 l' f* t$ v1 C" w$ y
7 j) y8 K- I- k. h, F! M) FPublic Const PLC_X_Group_Base_AddRess = 128
4 }9 x' l2 B. A4 V& n: j( ?( `
) K* M/ C* _, S8 X+ E3 tPublic Const PLC_C_Group_Base_AddRess = 448
/ G3 H9 Z, s" F4 L. I! z9 h/ V6 e7 l6 a& _7 |- R7 K9 a! _
Public Const PLC_OC_Group_Base_AddRess = 960
+ v9 W% j1 c9 ~. A3 ?7 E8 n" v! P8 X, s; ?' i0 Y0 C
Public Const PLC_RC_Group_Base_AddRess = 1472
  W5 t  ~- z/ R* C. |$ a' ~& K3 S- _" _
3 \. j+ h+ E! p$ A. JPublic Const PLC_TV_Group_Base_AddRess = 2048/ t6 i1 k+ b% u# p2 S8 Q. @
( c. ]/ w3 g8 g8 a$ n
Public Const PLC_CV16_Group_Base_AddRess = 2560
% R8 Q& ^3 u, I9 n8 a4 t2 z- R0 Z- g5 W) ^( t/ `
Public Const PLC_CV32_Group_Base_AddRess = 3072% g8 @0 f. Q3 O3 V) L1 e9 f

9 U# b0 ?6 E4 w7 s: y当我们用DEVICE READ命令时,D100地址=100*2+4096;M100地址=100+256;不同的是D类型寄存器存放的是字,M寄存器存放的是位,同样是读两个字节,D100返回的就是PLC中D100地址的值,M类型寄存器返回的是M100到M116的值。所以当我们用FORCE ON 命令时,M100寄存器地址=100+2048;$ l0 ]. X( i. t# t0 V

# V! v4 i' v) L% Z' y3 t) f这也没有什么复杂的,不是吗?可是三菱公司好像不甘于如此,FORCE ON/Off命令中地址排列与DEVICE READ/WRITE不同,是低位在前高位在后。如Y20,地址是0510H,代码中4个字节地址表示为:1005。(注意:Y寄存器为八进制,如Y20地址=16+1280=0510H)
) h. ?! k$ b2 s( H7 d" y$ e% @/ `. V7 w* i. e( _  p! n

本版积分规则

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

GMT+8, 2024-4-18 19:07 , Processed in 0.049827 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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