1、 浅谈51内核单片机与FX系列PLC通信设想摘要 分析了51内核单片机(AT89C51)和FX系列PLC串行通信接口的工作特性,介绍了FX系列PLC的通信协议及其与单片机通讯的设计思想,提出了两者之间实现串行通信的新概念, 重点阐述了串行通信硬件接口电路的实现方法,设计力求结构简单,成本低,具有良好的可靠性,有望在将来推广应用于实际工程项目中。关键词51内核单片机FX系列PLC 串行通信 接口电路1 引言可编程程序控制器(简称PLC)以其可靠性高、抗干扰强、开发周期短,已经成为一种较为普及的、适应多种应用环境的工业控制器。FX系列PLC是日本MITSUBISHI公司推出的超小型可编程控制器,采
2、用模块化结构,配有丰富的功能模块,具有体积小、配置灵活、应用广泛、性能价格比高等优点,在我国已大量应用于工业控制领域。AT89C51系列单片机是ATMEL公司推出的一种八位的高性能CMOS单片机,具有丰富的I/O功能,带有RAM、FPEROM和可编程串行通道等,适合工业环境使用,具有控制方式灵活,可靠性高。本文主要介绍AT89C51系列单片机与FX系列PLC之间的通信设计思想, 阐述其通信接口的实现方法,介绍一种实用的操作、显示单元。在PLC组成的工业控制设备中,用户多利用其并行接口进行功能的扩展,如键盘、显示等,这必然要占用大量的I/O点资源。其实,性能优良的PLC都应该配有高性能的串行接口
3、单元(SIU),用以专门负责高速的串行通信任务,不需要或仅需少量的CPU干涉。这样,可以将CPU解放出来集中解决数据处理或实时控制问题。三菱公司的FX系列PLC目前采用 RS422A通信口。这是一种典型的全双工串行通信方式,它除可以与计算机实现11的通信外,还可连接外围设备,如条码判读器、串行打印机等。若通过单片机与PLC进行通信,对PLC各寄存器进行读写,就可充分利用单片机成本低、扩展方便的特点,使PLC应用更具灵活性。2 接口电路设计FX系列PLC基本单元模块提供了一个RS-422异步全双工串行通讯口,该通讯口具有双重功能,较常用的一类功能是采用简易编程器、MEDOC软件包等编程软件对PL
4、C的软件进行下载、对PLC的内部状态和数据进行监控;另一类功能是与上位机进行数据通讯。由于AT89C51单片机的SCI口电平为TTL电平,与RS-422A标准不兼容,因此单片机的SCI口与PLC的串行口连接时需要增加一个电平转换电路,用于实现RS-232C与RS-422之间的相互转换。如图1所示。 RS422FX基本单元 SN75174 光耦AT89C51单片机 TXD T+/T- SN75175 光耦 R+/R- RXD 图1 接口电路设计图上图所示常用的RS-422总线驱动芯片为SN75174、SN75175。SN75174是发送器,SN75175是接收器,亦可用SN75176,它是集接收
5、器和发送器于一身的。给RS422A通信接口加装光电隔离电路(即光耦),可进一步提高PLC的抗干扰水平。 3 通信机制分析 三菱FX系列PLC在其内部有一个特殊功能寄存器D8120,可以根据其中的内容,按照一定的协议实现与单片机之间的通信.但必须事先对PLC编程写入D8120.三菱FX系列的PLC控制器,采用的是422电气接口,与单片机通信时采用的格式通常要满足:(1) 异步全双工串行通信模式;(2) 波特率9600bps; (3) 偶校验;(4) 帧校验:累加方式(和校验);(5) 字符形式:ASCII码。每个ASCII码的最高位在发送时被用作该字符的奇偶校验位,即在被发送的一个字节中,只有b
6、0-b6表示实际发送的数据,而b7是奇偶校验位.发送一个字节的格式如图2所示:图2 发送字节格式起始位1位、数据位7位、偶校验位1位、停止位1位单片机与PLC按主从方式进行通讯,单片机可向PLC发通讯请求信号ENQ ,在收到PLC发回的响应信号后,开始数据通讯.通讯时,若干个字符组成一个字符信息帧,其帧格式如图三所示: 图3 信息帧格式 其中字符的含义分别为: 字符 ASCII码 含义 ENQ 05h 主机通讯请求 STX 02H 信息帧起始标志 ETX 03H 信息帧结束标志 CMD为单片机向PLC发送的命令字,以此来确定二者之间传送数据的含义,命令字有以下四种: “0”(30H) 读PLC
7、目标元件状态或数据(X, Y, M, S, T, C, D)命令 “1”(31H) 写PLC修改目标元件状态或数据(X, Y, M, S, T, C, D)命令 “7”(37H) 强制单个目标元件状态(Y, M, S, T, C)为ON “8”(38H) 强制单个目标元件状态(Y, M, S, T, C)为OFF清零命令 若无校验错误时,PLC对ENQ的应答信号为ACK,对应ASCII码为06H ;若检测到错误时,PLC对ENQ的应答信号为 NAK,对应ASCII码为15H。 开始通信时,发送帧中的每个字符都要进行偶校验,从CMD开始到ETX结束的所有ASCII码字符值累加在一起构成一个校验和
8、,如果校验和超过两位,取低两位,然后分别将低两位数值转换成对应的ASCII码值,在ETX后发送,高位在前,低位在后.4.通信代码应答过程 系统采用AT89C51单片机作为通信主站,FX系列PLC作为从站,其通讯代码应答过程如下:指令码30H-读取PLC元件X、Y、M、S、T、C状态和T、C、D数据通信格式为: 其中元件首址:表示PLC内部各元件类型及起始元件号。例如:Y0的首址为00A0H,M200的首址为0319H,D157的首址为113AH等。 字节数:从元件首址起,读取或写入PLC元件的数据个数。 数据1,2等:待写入或读取的PLC元件的状态(或数据)。例:若现需读取PLC的Y0-Y7,
9、Y10-Y17状态,2字节,则 其中:发送时30H+30H+30H+41H+30H+30H+32H+03H= 166H 取低两位,校验码为66H,转换成ASCII码,即为36H,36H 接收时31H+41H+43H+39H+03H=0F1H 校验码为F1H,转换成ASCII码,即为46H,31H 接收到数据1为1AH,对应状态Y7-Y0;数据2为C9H,对应Y17-Y10 因此可知PLC中的Y1、Y3、Y4、Y10、Y13、Y16、Y17状态为ON,其余为OFF。 例:若现需读取PLC的D124、D125数据,4字节,则 主机 PLC 起始码 指令码 元件首址字节数结束码校验码STX01 0
10、F 704 ETX7402H30H 31H30H46H37H 30H 34H 03H37H34H 同理,发送时30H+30H+31H+46H+37H+30H+34H+03H= 174H 取低两位,校验码为74H,转换成ASCII码,即为37H,34H PLC 主机起始码数据1数据2数据3数据4结束码校验码STX1 231H 32H4 A34H41H2 532H 35H8 C38H 43HETX9 E39H45H02H03H 接收时31H+32H+34H+41H+32H+35H+38H+43H+03H=19EH 校验码为9EH,转换成ASCII码,即为39H,45H 数据1为12H,数据2为4A
11、H,对应于D124的低八位和高八位数据3为25H,数据4为8CH,对应于D125的低八位和高八位因此可知PLC的数据寄存器D124和D125中数据为4A12H,8C25H.指令码31H-修改PLC元件X、Y、M、S、T、C状态和T、C、D数据 通信格式为:例:将数据B23CH、1AD4H分别写入PLC中的D123、D124元件,4字节。检验码为31H+31H+30H+46H+36H+30H+34H+33H+43H+42H+32H+44H+34H+31H+41H+03H=249H,取后两位,转换成ASCII码,得到34H,39H.5 AT89C51单片机的通信设置为了保证单片机与PLC的正常通信
12、,除了要了解清楚通信协议外,还必须正确设定其通信方式,即采用统一的波特率、起始位、数据位、停止位和偶校验位,据此建立双方通信的应答信号。AT89C51内部有一个全双工增强UART,TXD(P3.1)为发送端,RXD(P3.0)为接收端。AT89C51系列单片机的SCI工作方式由串行口控制寄存器(SCON)、波特率控制寄存器(PCON)设置决定,可用软件设置四种工作方式。通信工作方式中,方式1是标准的异步通信方式,此方式工作时,串行口为8位异步通信接口,每帧信息包括10位:1个起始位、8个数据位和1个停止位。波特率可变,由定时器T1或T2的溢出率和SMOD1的状态决定,在CPU的晶振为11.05
13、92MHz时波特率采用9600bps。单片机的通信参数设置如下:置寄存器T2CON为34H(定时器T2工作于波特率发生器方式);置寄存器TH2和RCAP2H为FFH,TL2和RCAP2L为D9H(波特率9600b/s);置寄存器SCON为50H(串口工作方式1,允许接收)。波特率控制寄存器一般只在复位后初始化时写入一次,以建立SCI通信波特率。6 AT89C51单片机通信流程单片机与PLC进行通信时,单片机具有传送优先权,单片机总是首先向PLC发出命令并启动通信,发送过程结束后,PLC立即作出响应然后将执行结果返回单片机,单片机接收由PLC发出的响应帧,二者以帧为单位轮流交换数据。PLC处于被
14、动通信,无需编制通信程序。单片机需要编制上位机通信程序,该程序可以发送命令帧和接收PLC发出的应答帧。其中主要包括:发送命令子程序、接收子程序、码制转换子程序(十六进制到ASCII码)、FCS帧校验子程序。AT89C51单片机SCI系统可以工作在查询方式也可以工作在中断方式下,在查询方式下,单片机作为主站可以根据实际需要随时与PLC从站通信,通过查询状态进行通信数据的相应接收或发送,其中TI为一帧数据发送完标志,RI为一帧数据接收完毕标志。但是,当主站任务繁忙时,则不宜采用查询方式,以免影响主站工作效率。在中断方式下,单片机不需要查询从站通信状态,当引发中断时,主站再通过查询接收和发送标志位进
15、行相应的接收和发送控制。因为PLC在运行模式下,写寄存器命令无效,而PLC上电后默认为运行模式,所以单片机在发送写通道命令前必须置PLC为监视模式或编程模式,命令结束后重置PLC为运行模式。通信软件框图如图4所示:7 结束语 串行通信是一种简单经济、应用广泛的通信方式,上述三菱公司的FX系列 PLC与AT89C51单片机之间的串行通信方法可以发挥PLC控制稳定可靠、抗干扰能力强的优势,又能发挥了单片机扩展灵活、适应性强的优点,使两者优势互补,并通过有协议的串行通讯成功地解决了单片机与PLC的数据交换问题。理论表明该方法简易实用、灵活方便、安全可靠、成本低廉,具有良好的社会效益和经济效益。本文的创新点在于该设计简易实用、安全可靠、成本低廉,解决了PLC与单片机的数据交换问题。参考文献:1、田书峰,李欣( 2005,7)。,微计算机信息,微计算机信息杂志社。2、钟肇新,彭侃(1991)。, 华南理工大学出社。3、常斗南(1998)。 , 北京机械工业出版社。4、李华(1993)。 , 北京航空航天大学出版社。 5、忽略此处:忽略 中华工控网 .12