三菱plc串口通信协议与串口初始化
8 W7 N! o* k8 L三菱plc串口通信协议与串口初始化 1、系统硬件构成 三菱fx系列plc自带的编程口是rs-422接口,而pc机的串行通信口则是rs-232c接口,两者之间需要通过sc-09适配电缆才能通信。不同设备上相同类型的通信接口的引脚定义可能存在差异。pc机与三菱fx系列plc上的通信接口引脚定义如图1所示。 ) c& ?) p3 I3 ` G+ Y3 ?
7 @5 k% ?, e( P1 [0 ~2 X7 D9 k% Q7 n
( H5 g @7 g# p4 C
图2 sc-09电缆内部电路 2、通信协议 pc机与plc之间有两种通信方式:一种是pc机具有优先权而plc始终被动响应pc机发来的命令;另一种则是plc具有优先权,将命令发送给pc机,并接收来自pc机的响应。本文采用的是前一种通信方式。 2 D4 }- X, d3 M9 d/ B4 a; \- G
为实现pc机与fx系列plc编程口之间的通信,系统采用的是编程口专用通信协议。 2.1 控制字符 在pc机与fx系列plc的串行通信中,数据是以帧为单位发送和接收的。 其中,控制字符enq(05h)、ack(06h)和nak(15h)可以构成单字符帧心1,其余的字符帧在发送或接收时都必须用控制字符stx(02h)和etx(03h)分别作为该帧的起始标志和结束标志。 各控制字符的意义如表1所示。 表1 控制字符意义
4 t. a' {7 x8 \& J% G! v5 Z# R# I
1 [4 |+ C1 }3 c- F+ ?& \6 S& b
" r7 f) o; o# F) Y) T& M3 I2.2 命令代码 pc机对plc相应软元件的操作是通过"0"、"1"、"7"、"8"四个命令符来实现的,各命令符的含义如表2所示。
% H4 ]: v3 B1 d( u, J表2 命令字符含义
) U; E# s$ E% _6 P
- T# Y5 ~' ?" Y. Y$ x
4 `1 ~0 }5 F6 N: G. O0 e2.3 命令帧 一个完整的命令帧由控制字符stx(02h)、命令码(cmd)、数据段、控制字符etx(03h)以及和校验码五部分组成。
" n4 U0 r0 b- c1 M- O* F* v其中,和校验码是从命令码到控制字符etx的所有字符的ascii码(十六进制)相加所得结果的最低两位数。 ①pc机"读"命令帧
( Q0 I/ G! H& F6 ^$ q9 O"读"命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、报文结束标志以及和校验码组成。来自:电工技术之家
; k! v- V) p) [2 l" G% R' s当通信正确时,plc返回的应答帧由报文开始标志、数据段、报文结束标志以及和校验码组成;通信出错时,plc应答"nak"。 ②pc机"强制on"命令帧 4 b2 \: x" l9 z
pc机"强制on"命令帧由报文开始标志、命令码(37h)、软元件地址、报文结束标志以及和校验码组成。接收命令正常时,plc应答"ack";接收出错时,plc应答"nak"。 ③pc机"强制off"命令帧
0 G! T. U E& b2 V; L' Xpc机"强制off"命令帧由报文开始标志、命令码(38h)、软元件地址、报文结束标志以及和校验码组成。接收命令正常时,plc应答"ack";接收出错时,plc应答"nak"。 ④pc机"写"命令帧 $ T' z0 A& v! m' u1 W* p9 K
pc机"写"命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、待写入软元件的数据、报文结束标志以及和校验码组成,如图3所示。写入正常时,plc应答"ack";写入出错时,plc应答"nak"。 + i6 C# J; g3 x% j( H( r
图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所示。 ; a" J" Q& a0 E& V! G
) ]9 I5 H& `" I3 Y2 ?& R8 V, F图5 数据写入plc的程序框图 3.5 关闭串口 通信结束后,需使用visa关闭节点关闭串口设备,否则程序会一直占用串口资源,导致其他程序无法访问。 ; I% q, d0 E+ t2 Z1 r2 x
) x/ a/ {$ ~3 [8 H. M |