一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 6285|回复: 1

三菱PLC通信贴

[复制链接]
发表于 2017-3-28 22:40 | 显示全部楼层 |阅读模式
三菱plc串口通信协议与串口初始化, i% x) z$ I7 _3 s0 v

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

1、系统硬件构成

三菱fx系列plc自带的编程口是rs-422接口,而pc机的串行通信口则是rs-232c接口,两者之间需要通过sc-09适配电缆才能通信。不同设备上相同类型的通信接口的引脚定义可能存在差异。pc机与三菱fx系列plc上的通信接口引脚定义如图1所示。
% Q% B' }1 d8 b/ _% O9 ~6 E; |3 U) N+ R 20150905205937724.jpg ! W6 z; Y" x& R7 m% D

" {, M. i4 `1 u$ S0 W0 g, ?图2 sc-09电缆内部电路

2、通信协议

pc机与plc之间有两种通信方式:一种是pc机具有优先权而plc始终被动响应pc机发来的命令;另一种则是plc具有优先权,将命令发送给pc机,并接收来自pc机的响应。本文采用的是前一种通信方式。 & {2 C9 t$ Z. ?
为实现pc机与fx系列plc编程口之间的通信,系统采用的是编程口专用通信协议。

2.1 控制字符

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

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

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

表1 控制字符意义
2 B# H- \% {6 }! r 20150905205949513.jpg
, S) [' E. X/ L ) ]9 N$ a  P; A& X$ z# K
2.2 命令代码

pc机对plc相应软元件的操作是通过"0"、"1"、"7"、"8"四个命令符来实现的,各命令符的含义如表2所示。
7 L8 ~8 R$ y9 Y" D1 Y表2 命令字符含义 / y. e. N% W/ E6 h
20150905205958547.jpg & B$ @; ?8 X7 i" d' d% u, r
% X$ ]! d% {' y$ \- i( x9 a
2.3 命令帧

一个完整的命令帧由控制字符stx(02h)、命令码(cmd)、数据段、控制字符etx(03h)以及和校验码五部分组成。
2 t+ J) {5 M- ~+ K* j) b其中,和校验码是从命令码到控制字符etx的所有字符的ascii码(十六进制)相加所得结果的最低两位数。

①pc机"读"命令帧
$ t( I, A) J9 Z"读"命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、报文结束标志以及和校验码组成。来自:电工技术之家, R: q% C. v8 Q. ]$ ]- L: D+ j
当通信正确时,plc返回的应答帧由报文开始标志、数据段、报文结束标志以及和校验码组成;通信出错时,plc应答"nak"。

②pc机"强制on"命令帧 1 U0 |* [2 N$ {- a. w7 s6 q
pc机"强制on"命令帧由报文开始标志、命令码(37h)、软元件地址、报文结束标志以及和校验码组成。接收命令正常时,plc应答"ack";接收出错时,plc应答"nak"。

③pc机"强制off"命令帧
7 c2 g9 H, q1 |* l1 B( Cpc机"强制off"命令帧由报文开始标志、命令码(38h)、软元件地址、报文结束标志以及和校验码组成。接收命令正常时,plc应答"ack";接收出错时,plc应答"nak"。

④pc机"写"命令帧 3 k7 D* a! U8 h# w* V( }* ?
pc机"写"命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、待写入软元件的数据、报文结束标志以及和校验码组成,如图3所示。写入正常时,plc应答"ack";写入出错时,plc应答"nak"。
) K/ H% h1 ~9 m 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所示。 2 D9 C7 A7 O( R6 |
20150905210023873.jpg
4 i: D3 y; C1 ~3 i图5 数据写入plc的程序框图

3.5 关闭串口

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

+ j1 A' A& X* o1 q: W: m  A
% N6 a* v/ }& D0 O3 C; |* A

评分

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

查看全部评分

 楼主| 发表于 2017-3-28 22:44 | 显示全部楼层
一、三菱PLC编程口通讯协议
( E: y9 Q- S; Q) |/ O$ U& c+ l; b: e2 x3 k, w" Q
三菱PLC编程口的通讯协议比较简单,只有四个命令,即:
+ n3 g- @* E  r0 r+ h
/ T4 \; D$ ~/ o( E4 P' H* p0 E命令                    命令码             目标设备
; G: d! E3 p4 F9 m3 _# ?7 I7 f' x; I" [1 e, C
DEVICE READ CMD             "0"                       X,Y,M,S,T,C,D* G) t+ P: ^0 R+ f6 e: g9 J0 \0 Z' C
- w7 J0 U, y* {1 W9 l6 e
DEVICE WRITE CMD            "1"                       X,Y,M,S,T,C,D
4 Q: l' S! S3 u8 v' o& P* X) ~. F; e# {* N+ p  \
FORCE ON CMD                  " 7"                         X,Y,M,S,T,C% a  Q2 e# I* e+ m
+ ?' k# @- X. f5 i9 f3 }+ S
FORCE OFF CMD                  "8"                        X,Y,M,S,T,C: B  C" I! P3 Y. e6 o  B4 @$ Q. B

. c; o# F7 [$ ]五个标示:/ p) t) U8 @: b; l/ w1 U; L

( z/ G1 s# t" V, sENQ            05H             请求
* ?1 d5 y- S% z7 D# h) R/ d  E/ D6 V  X8 i& P8 I+ O5 X5 L
ACK            06H             PLC正确响应
/ d9 x7 s# @3 c7 b7 J) \/ {4 r' @8 y9 ?( c* k. l' V/ T, i( |
NAK           15H             PLC错误响应
4 O+ i9 N$ B/ u; T* L4 D/ {; v' W1 H$ V. N; f
STX             02H             报文开始/ |, j  t: p& S

. T% o8 `9 J4 ~# T& d! TETX             03H             报文结束8 R- w9 h# K4 v# v% N  `' S
. h" Q+ k4 g% o
使用累加方式的和校验,帧格式如下:
, I3 d) J# u% ~; u
3 ~) n/ ?: B4 p' L# J" {STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower)
: k/ j$ G4 ~! w: V7 Q2 r* d! ]4 G) M( K) e
和校验:( H" A* O, U/ k

! K1 M+ H1 |, @3 H+ b: g- M1 BSUM= CMD+……+ETX。 如SUM=73H,SUM=“73”。8 P, D2 u8 p) h) t7 e

" a6 V( t9 [9 w0 P1、DEVICE READ(读出软设备状态值)1 F* U0 x' A2 O

+ G6 u/ L& O7 n: T# ~* a计算机向PLC发送:
- i+ q) l. K$ V$ U
1 c5 C( j! Z5 r始          命令             首地址                        位数             终                 和校验
1 [# w% Q3 V7 x' O$ H6 r. }6 V2 X1 W3 }  Q) ]5 c
STX       CMD             GROUP ADDRESS       BYTES         ETX              SUM: h% v# {8 _2 q* b, e
3 Y% Z' V6 M1 X6 t8 F1 e) z1 t
PLC 返回5 B9 ^1 e- E6 K$ U# x

0 F! Y+ q' u4 H% n% H# mSTX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM3 s% j: H( q5 o8 i1 |

8 C: g3 y, W3 B; t+ I7 `2、DEVICE WRITE(向PLC 软设备写入值)
5 w9 ^. `6 W6 K: c  v' P& {
" w) |7 J& D+ D) F计算机向PLC发送:3 c, @. ^7 v: |8 M7 I( |

! s! D' p2 T6 V4 @" B0 J始          命令      首地址          位数             数据             终                  和校验
$ j/ y) k2 I( G/ f' |- \
- a# ~, i  t# t( `' p- c9 b4 PPLC 返回, z" W* w# ^5 c6 ~

( v. m: m& t6 K6 ?ACK (06H) 接受正确) x- A: Y: I% @

2 K  D2 v/ \5 P9 R; CNAK (15H) 接受错误: k/ ~4 H  X* z+ m0 Y
. L' i1 W$ r+ I& k7 ~
3、位设备强制置位/复位
0 ~! [# I. \4 D$ }& j* J  c) Z1 T, e9 t+ C: n* W
FORCE ON 置位; t  ]1 ]1 M, v! p% w

  b2 }* d" q  y始                 命令             地址                    终                 和校验, |" h% X  V" T* o8 b6 p% e5 a

# {8 e4 W) j# P. RSTX              CMD             ADDRESS            ETX              SUM
9 Y+ r1 ]  B! m' M) A+ {; d7 Z2 ?9 P3 m" a5 c# p. ^. i
02h               37h               address                 03h             sum
4 u9 F# i) _4 H& K, K7 t. [6 {5 W$ N% r3 L. Z3 i
FORCE OFF 复位* K: X6 h0 L, O7 t
# `1 p) J3 j% c' |' R; h
始                 命令             地址                    终                 和校验
. O( `$ }; _. @' V7 h* d4 a5 p: k; k$ l, l
STX              CMD             ADDRESS            ETX              SUM4 `" j5 V' c- B1 {) C) a$ p: {& d

$ V' \2 Q* c' e4 ~/ v02h               38h               address                 03h               sum/ p5 h! D: J; b
) U- x0 r6 X/ E/ d
PLC 返回
3 [$ C8 L' ^7 [- Z1 z, }
- t! S, a) i/ Z* G. NACK(06H) 接受正确+ A8 ?8 G$ [! Y# C( p

# o6 s, g9 U# M9 a! i/ F+ j; DNAK(15H) 接受错误  d9 k+ I7 e9 }. G

1 ]) L- N4 K7 [$ L* H以上可以看出,协议非常简单,但是由于没有寄存器类型信息,所以地址的计算十分关键,如D100和M100分别对应哪个地址呢?下面就是三菱Fx系列PLC地址对应表:
% `1 I9 C% I4 n0 E1 e9 m0 y) t
% }) p! z8 J( Z& q( Q6 H0 pPublic Const PLC_D_Base_AddRess = 4096
. Y5 G" R' Y- M, V6 D
: ~7 z1 d+ K: R* x' sPublic Const PLC_D_Special_Base_AddRess = 3584
9 z8 {& A& P$ R5 K1 q' q% g) s' v$ f4 h% B7 z' E: g4 H2 r4 v
Public Const PLC_Y_Group_Base_AddRess = 160
: A( J1 @2 K  g' \* j, e1 X
3 T& O: n* `' lPublic Const PLC_PY_Group_Base_AddRess = 672
; o  d. r5 E/ W( l4 v$ m0 q) |/ j% ^: c7 A  p+ s
Public Const PLC_T_Group_Base_AddRess = 192, }1 J: l1 l3 e# X/ F

+ q( ~9 P6 w" @0 E+ `8 k1 M) e5 n' dPublic Const PLC_OT_Group_Base_AddRess = 7046 K/ m/ B1 _1 J: N' H

2 ^6 F( J7 S) T" t1 M! M. B5 xPublic Const PLC_RT_Group_Base_AddRess = 1216
8 K2 }: B9 O6 l; G0 A4 n' x& [) e
, R; Q1 w( \. A7 uPublic Const PLC_M_SINGLE_Base_AddRess = 2048(命令为7或8时)1 s3 w9 y( A! m0 E0 R
3 L  J" C8 H! ?
Public Const PLC_M_Group_Base_AddRess = 256
1 d' G( H( |8 T8 S! H8 S$ W' S$ R4 H8 ^; O: U0 h% P7 O( |8 o0 N
Public Const PLC_PM_Group_Base_AddRess = 768
4 X0 d0 q! R* d; M0 p. r+ \4 e# \& I. _3 B
Public Const PLC_S_Group_Base_AddRess = 0
0 X8 u. J* |. R; s$ @4 ]0 A& G1 t/ A4 v6 x$ Y" X) U
Public Const PLC_X_Group_Base_AddRess = 128
: L% [% o- `4 S
/ `( P% u7 R/ O4 y% s! o/ YPublic Const PLC_C_Group_Base_AddRess = 448' d  ]$ Z( u: u! C' U4 ]

' }9 b$ \3 P+ C$ E. tPublic Const PLC_OC_Group_Base_AddRess = 960
6 H9 w# h: n8 D, R
4 @9 M) L$ j* P  EPublic Const PLC_RC_Group_Base_AddRess = 1472  k3 e' Q' F4 O% k) G; U5 f# r4 l' |

* k6 Z6 W( e, b5 ^& b$ oPublic Const PLC_TV_Group_Base_AddRess = 2048
4 v! m( U/ S: w  Y- ^, o
8 X$ _& v% z, RPublic Const PLC_CV16_Group_Base_AddRess = 25608 Y7 \/ d5 c6 M
! H. o2 t. r) ?
Public Const PLC_CV32_Group_Base_AddRess = 3072
' G; C1 ?( c; @2 U% t0 _
8 q! i! s6 G  z当我们用DEVICE READ命令时,D100地址=100*2+4096;M100地址=100+256;不同的是D类型寄存器存放的是字,M寄存器存放的是位,同样是读两个字节,D100返回的就是PLC中D100地址的值,M类型寄存器返回的是M100到M116的值。所以当我们用FORCE ON 命令时,M100寄存器地址=100+2048;6 n) C( I8 N! L
9 ~$ V6 ^3 \2 Q7 r' T0 `3 ~) G0 r
这也没有什么复杂的,不是吗?可是三菱公司好像不甘于如此,FORCE ON/Off命令中地址排列与DEVICE READ/WRITE不同,是低位在前高位在后。如Y20,地址是0510H,代码中4个字节地址表示为:1005。(注意:Y寄存器为八进制,如Y20地址=16+1280=0510H)
; ^0 ~9 h, E% q* d/ S# m) c$ v' v0 k( k2 ]/ `( p4 _2 j
回复 0 1

使用道具 举报

本版积分规则

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

GMT+8, 2026-7-13 06:36 , Processed in 0.033926 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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