APP下载

基于单片机的可编程序控制器设计

2016-05-14王清珍邵杰

现代电子技术 2016年6期
关键词:可编程控制器

王清珍 邵杰

摘 要: 针对现有PLC的设计、制造的过程十分复杂,价格昂贵,不适合小批量生产、制造的缺点,现设计一种低成本简易PLC,对这种PLC进行硬件结构设计和系统软件设计与调试。经过实践可用于对具有一定工作工程的机械设备控制,来代替接触器、继电器控制系统提高控制可靠性。该可编程程序控制器构成的系统共可处理1 024 B,8 192个点的现场信号,应用前景很灵活,很广泛。

关键词: 可编程控制器; 设计过程; 硬件结构; 机械设备控制

中图分类号: TN710?34; TP368.2 文献标识码: A 文章编号: 1004?373X(2016)06?0161?05

Design of programmable controller based on microcomputer

WANG Qingzhen, SHAO Jie

(Zhengzhou University of Science &Technology, Zhengzhou 450064, China)

Abstract: The design and manufacture process of the existing PLC are complex, and its cost is expensive, which is unsuitable for small?lot production and manufacture, so a simple PLC with low cost was designed. The hardware structure design, system software design and debugging for this PLC were conducted. The practice proves that the PLC can be applied to mechanical equipment control of a certain working engineering to replace contactor and relay control system, and improve the control reliability. The system composed of programmable controller can process the field signal with 1024 bytes and 8192 points, and has flexible and extensive application prospect.

Keywords: programmable controller; design process; hardware structure; mechanical equipment control

0 引 言

可编程序控制器(PLC)在工业现场控制中有着广泛的应用。目前市场上的PLC大都为技术实力雄厚的大型企业生产,如日本的三菱、欧姆龙,德国的西门子等厂家[1]。这些厂家具有丰富的电子产品生产经验和完善的技术链条,可以完成对PLC的硬件、软件、上位机开发软件和配套设备的设计、制造、销售和培训等的一系列过程,甚至包括PLC内部的处理器芯片,都是由这些厂家中负责生产集成电路的部门制造的。这些主流可编程序控制器功能完善、可靠性很高,而设计、制造的过程十分复杂,从硬件电路的设计到上位机软件的开发是一个复杂的系统工程,必须是大型企业才具备这样的条件,而中小型企业很难进入PLC设计制造领域。

在当前PLC应用场所之中,并不是所有的地方都需要功能复杂、完善的PLC。

目前通行的PLC,除了具有基本指令之外,还具有复杂的功能指令、具有现场总线功能和联机通信、具有多种功能模块扩展功能,还包括与一些相关工控设备,如触摸屏等连接功能。这使得PLC的价格十分昂贵。而在很多应用场所,这里面的大多数功能都是用不上的,如控制单独工作,工作过程不太复杂的机械设备,简单的过程控制设备等,这些设备使用目前功能完善PLC会使制造成本上升,采用接触器、继电器控制又会造成产品可靠性的下降,直接采用单片机控制,进行单片机开发过程复杂,会增加开发成本,延长产品开发周期。所以,设计一种低成本,只有基本逻辑指令和简单联机扩展功能的PLC是有一定市场价值的。

这种低成本简易PLC可以用于具有一定工作工程的机械设备控制,可以代替接触器、继电器控制系统提高控制可靠性,又比直接使用单片机控制更加方便。而这种PLC设计制造过程相对简单,可在中小型企业中研发生产。

1 硬件设计

这种新型可编程序控制器采用模块化设计。从结构上看,该可编程序控制器具有核心模块、接口模块和现场信号模块三种。其中现场信号模块又有模拟信号模块和开关量信号模块两种。三种模块之间通过总线相连,实现结构扩展;从功能上看,该可编程序控制器有主机、从机和开关信号扩展机三种功能模块,其中从机又有模拟信号机和开关量信号机两种。三种功能模块之间通过电缆连接,根据实际用途和现场信号数量选配。

1.1 核心模块

核心模块是该可编程序控制器的运算核心和通信核心,起用户程序运算和模块信号通信作用。核心模块上的通信口分为上位通信口和下位通信口。上位通信口有双RS 422通信、双RS 232通信[2]和RS 485通信三种通信方式。通过上位通信口可以与其他核心模块实现多部该型可编程序控制器联机工作。由于总线驱动能力和信号镜像寄存器容量的限制,设计其最多可实现8台主机的联机工作。上位通信口也可以用于与上位机的连接,用于程序下载和通信。下位通信口为TTL电平的SPI总线通信口,用于连接接口模块。一个核心模块最多可连接8台接口模块,采用SPI环形数据通信,可使一台主机可以连接8台分机。由于TTL电平的传输距离和传输可靠性都是有限的,故主机与分机、分机与分机之间须靠近安装。该型PLC的核心模块采用STC12C5A32S2型单片机作为控制器,该型单片机为常见的51内核[3],开发较为方便,运算速度较快,每时钟周期即机器周期。该单片机存储空间较大,有32 KB FLASH程序存储器和32 KB E2PROM存储器,分别可以用以存储大量的系统程序和用户程序。该单片机有两个串行通信口,可以用来与上位机通信和进行端口扩展。

核心模块的硬件电路如图1所示。设计有两组输入端子,第一组有8个输入端,第二组有4个输入端,每组输入端有一个共阳极的公共端。输入端子通过光电隔离器和外部分压滤波元件,将端子和公共端之间的开关信号转换为单片机引脚的电平信号。输出端子也有两组,分别有8个输出端和2个输出端,采用继电器输出,每个继电器通过单片机的引脚经集成三极管驱动。

单片机的两个串行通信口分别转换为RS 232信号和RS 485信号,RS 232口用于与上位机或编程器通信,输入用户程序;RS 485口用于与其他PLC模块相连,进行端口扩展。单片机还要连接一个三位拨码开关,用于设置该机的物理地址,并连接一个I2C总线E2PROM存储器,用于PLC的数据存储器[4]。

1.2 接口模块

接口模块用于现场信号转换和传输,以及部分人机接口功能。接口模块具双向SPI通信口[5]和现场模块接口。双向SPI通信口可以与核心模块或其他接口模块连接,将其数据传输给主机;现场模块接口可以与模拟信号模块或开关量信号模块连接。1台接口模块最多可以与4台开关量信号模块或1台模拟信号模块连接,接口模块可以从现场信号模块读取数据传送至核心模块。若有多台接口模块相连,接口模块之间还具有一路辅助通信链路,为一主多从模式的UART通信,用于接口模块之间的自检测、数据校验和备用数据通信。另外接口模块带有LED点阵,用于现场信号指示。

1.3 现场信号模块

现场信号模块有模拟量模块和开关量信号模块两种,用于现场信号的转换。现场信号模块由采集电路、光电隔离电路、放大器、信号寄存器等构成,可以将现场开关量或模拟量信号转换为数据,由接口模块读取。其中模拟量模块只能单独与接口模块连接,而开关量信号模块可扩展,与接口模块连接的开关量信号模块还可在与最多3台开关量信号模块相连。现场信号模块的设计相当灵活,在信号标准的前提下,不同的现场信号模块可以设计出不同数量的I/O口或模拟通道。本项目所设计的开关量信号模块具有32个I/O点,包括 16个输入点和16个输出点,而模拟量模块设计有3个模拟量输入通道和3个模拟量输出通道。

如上所述,该新型可编程序控制器的扩展方式是:1台主机可以与7台分机连接,分机可以是模拟分机和开关量分机两种,1台开关量分机又可与另外3台扩展机相连。主机和主机之间也可相连,最多可以有8台主机连接在一起构成系统。系统内主机为运算核心,每台主机都具有信号处理能力,而分机和扩展机仅有信号转换和传输功能。故该可编程序控制器构成的系统最多具有1 024 B、8 192个点的现场信号处理能力。扩展连接方式如图2所示。

2 软件设计

软件设计的内容是设计单片机的底层系统程序,底层系统程序能够接收编程器发来的用户程序,并能够识别用户程序,根据用户程序的内容控制PLC的输入/输出端口的状态,做出相应的控制动作。

图2 扩展结构

2.1 用户程序格式

用户程序是PLC用户根据自身的控制过程编写的,该简化型的PLC用户程序相对简单,只有END结束、LD放置起始触点、LDI放置起始常闭触点、OR并联、ORI并联常闭触点、AND串联、ANI串联常闭触点、ORB多触点并联、ANB多触点串联、PUSH入栈、POP出栈、SET置位、RST复位、OUT输出、CJ跳转等16条基本指令和输入继电器X、输出继电器Y、辅助继电器M、定时器T、计数器C、数据寄存器D等6种编程元素,编程元素定义如表1所示。这16条基本指令主要是针对开关量的逻辑控制指令,已经可以替代接触器继电器系统,满足大部分应用场合的要求。

表1 编程元素对照表

用户程序的数据有4种:指令、编程元素、编程元素编号和常数[6]。如表2所示,每一种数据都是以1 B的形式存在,字节的高2位是数据识别位,以11,10,01,00分别表示指令、编程元素、编程元素编号和常数,指令和编程元素的低6位分别表示其序号,如语句LD X0对应的程序代码为11 000001 10 000000 01 000000,故最多可支持64条指令或编程元素;编程元素编号和常数的低6位分为中3位和低3位,每3位二进制数可以表示1位八进制数,每1 B的编程元素编号或常数可以表示2位八进制数。

表2 用户程序格式

用户程序在单片机存储器中的形式是:指令、编程元素、编程元素编号、常数。其中有些指令后面没有编程元素,如入栈指令PUSH等,大部分程序语句后面都没有常数,只有当编程元素数定时器T、计数器C时,或跳转指令CJ后才有常数。如果有编程元素,编程元素后要紧跟一个字节的编程元素编号,用元素编号中的两位八进制数来给编程元素编址。而定时器T、计数器C或跳转指令CJ后面要跟2 B的常数,即4位八进制数,数值的范围为4 096,固定时器、计数器的最大工作范围为4 095,而用户程序也不能超过4 096条。图3和表3列出了一段用户程序的代码对照。

2.2 编程元素及其编址

在该型PLC的6种编程元素中,输入继电器X和输出继电器Y的数值与端口的状态相对应;辅助继电器M和数据寄存器D可以保存运算过程中的数据,M的物理存储区是单片机的RAM位寻址区,数据寄存器D的物理存储区是E2PROM,数据寄存器D断电之后可以保存数据。定时器T和计数器C的物理存储区是单片机的RAM和定时/计数器,每一个T或C都要占用2个RAM字节,用以存储2个常数(4位八进制数),定时/计数器T的最大定时范围为4 095个时间单位,而C的最大计数值也是4 095。单片机内的一个定时/计数器用作T的时基定时器,时间单位为10 ms,定时/计数器T的定时范围是10 ms~40.95 s。

编程元素通常用2位八进制数,即用1 B的编程元素编号来编址,如图4所示,低位八进制数为位地址,高位八进制数为组地址,在一台PLC内部,一种编程元素不能超过8组,每组有8个,最多支持64个。考虑到硬件条件和单片机的运算能力,该型PLC的编程元素数量为6个。

由于单台PLC输入输出端口数量有限,只有2组共12个输入端口和10个输出端口,有时候不能满足要求。所以该型PLC需要具备一定的扩展能力,通过设备上自带的RS 232总线或RS 485总线可以将多台PLC连接起来,总线上的PLC的每一个端口都有惟一的地址,这个地址是该PLC的端口组地址和位地址的基础上再加上该PLC设备地址,设备地址是通过该PLC上的3位拨码开关所设置的一个3位二进制数,即1个八进制数,构成端口地址的第3位。总线上的每一个PLC都要通过拨码开关设置惟一一个地址,最多可以通过总线连接8个同一型号的PLC。

图3 梯形图程序

表3 用户程序、代码对照示例对照表

图4 编程元素的地址

2.3 用户程序执行的软件设计

用于分析用户程序的软件是该PLC系统程序的核心部分[7?8]。程序执行软件分为用户程序段读入、编程元素寻址和运算执行三个过程:

(1) 将用户程序段中的当前指令到下一条指令之间的内容分读入指定的缓存,这里面包含一条指令、一个编程元素和编程元素的地址(即元素编号),有的还包括常数,这几部分内容将被区分并存入相应的区域。

(2) 编程元素寻址,将编程元素地址指向的开关量读入为单片机的累加器C,准备进行逻辑运算或输出。各种编程元素对应的开关量存储在不同的区域:输入输出继电器X,Y对应单片机的端口,辅助继电器M对应单片机RAM位寻址区的64个位数据,数据存储器D对应外部E2PROM中的64个位数据,定时器和继电器的开关量也存储在RAM位寻址区,用64个位数据分别代表32个定时器和32个计数器的开关状态。这一阶段首先要分析指令,根据指令不同分为两种情况:一种是变量输入指令,包括:LD,LDI,OR,ORI,AND,ANI,ORB,ANB,PUSH,PRD,POP11条;另一种是变量输出指令,包括:SET,RST,OUT,CJ4条。对于变量输入指令,首先要进行寻址,将编程元素对应的开关量读入累加器C,等待进行运算,运算结果存入为累加器C;对于变量输出指令,是将为累加器C中的开关量先进行运算,然后再对编程元素进行寻址,将运算结果送入编程元素编号指定的地址。

(3) 运算执行阶段,这个阶段相关的寄存器是位累加器C和位数据堆栈区。其中仅与位累加器有关的指令有AND,ANI,OR,ORI,OUT等,它们的功能是: AND,ANI,OR,ORI等指令是将位累加器中的开关量与编程元素指向的开关量进行逻辑运算,结果存入位累加器;OUT指令将位累加器中的数据输出到编程元素指向的地址,如果编程元素指向的地址为计数器,则判断该次输出是否产生下降沿,有的话则对计数器对应的寄存器进行减1操作,若减为零则对该计数器对应的开关量置位;SET和RST指令判断位累加器是否为1,若为1则将编程元素指向的开关量置1或清零,若不为1则编程元素指向的开关量不变。与位累加器和位数据堆栈区都有关的指令有:LD,LDI,ANB,ORB,PUSH,PRD,POP等,它们的功能是:LD和LDI指令是将变量读入位累加器,若是之前已有LD,LDI指令而未见OUT指令,则将原位累加器中的数据入栈,再将变量读入位累加器;ANB,ORB是将当前位累加器中的开关量与栈内最近的数据进行逻辑运算,结果存入位累加器,栈中数据删除;PUSH,PRD,POP等指令是分别将位累加器中数据入栈、读栈和出栈。

这三个阶段循环进行,每执行1条指令循环1次,这个过程需要由程序计数器参与。程序计数器是在单片机RAM中指定的单元,每循环一次便将程序计数器中的数值加1,所以程序计数器中的数值便是已执行的指令数。CJ和END这两条指令与程序计数器有关,CJ的操作数是一组常数,常数值即跳转地址。CJ对应的开关量一旦被置1,该常数便赋给程序计数器,程序发生相应跳转。END可将程序计数器清零,使用户程序得以循环执行。用户程序执行程序除了以这三个过程进行处理外,还有中断处理程序。如果用户程序使用了定时器T,则单片机的定时器被打开,以10 ms为时间单位进行定时,每10 ms对定时器对应的寄存器的数值减一定时,若减为零则对该定时器对应的开关量置位。

3 试验结果

经过多次硬件系统功能的分析与测试和软件系统的实验与调试,最终系统达到以下试验结果,可以作为选择PLC的依据。

根据现场总线的不同,通信距离和通信速率如表4所示。

表4 PLC通信参数表

触点不同,导通、闭合与断开时间延迟也不同,如表5所示。

表5 触点特征表

4 结 论

本文完成了对PLC的各种总线的通信距离、各种信号量的输入/输出类型和传输速率的测试。该研究以总线构架为思路,通过嵌入式技术的方式实现可编程设备的设计,形成一种基于单片机的、可以通过总线扩展、运行统一程序实现集中管理分散控制的工业现场可编程控制器,灵活大,可扩展性好等优点,使得这种PLC的应用前景很好。现已成功研究了系统的硬件组成和底层控制软件的设计,还需要进一步对此系统进行上位机软件[9]设计的完善。

参考文献

[1] 李少远.工业过程系统的预测控制[J].控制工程,2010,17(4):407?415.

[2] 潘方.RS 232串口通信在PC机与单片机通信中的应用[J].现代电子技术,2012,35(13):69?71.

[3] 王清珍.单片机原理及接口技术[M].大连:大连理工大学出版社,2009.

[4] 殷苏民,张建明,李正阳,等.基于单片机的PLC数据存储系统[J].电子技术应用,2014,40(8):31?33.

[5] 赵淑玉,孟宝全.单片机和PLC的应用与串行通信[J].科技信息:科学教研,2008(21):52.

[6] 朱林,宋宁,李琦.解释型控制器的研究与实现[J].化工自动化与仪表,2012,39(12):1644?1647.

[7] GELEN G, UZAM M. The synthesis and PLC implementation of hybrid modular supervisors for real time control of an experimental manufacturing system [J]. Journal of manufacturing systems, 2014, 33(4): 535?550.

[8] WANG Wan, SUN Dayu. The design and application of automatic control system for inorganic membrane filter [J]. Procedia engineering, 2011, 15: 5503?5507.

[9] 朱晶川,孙力.基于PLC的自动切筋分离系统设计[J].现代电子技术,2015,38(10):111?114.

猜你喜欢

可编程控制器
浅谈树脂砂造型线的电气控制
浅析可编程控制器在港口起重设备中的运用
谈机械制造系统中的安全控制系统
基于CDIO模式高职“可编程序控制器”实践教学研究
基于可编程控制器的现代仓储堆垛机控制研究
利用三菱PLC实现煤制氢变压吸附的控制
基于PLC和触摸屏在切断机控制系统中的应用
一种新型自动分切机的设计