基于AT89s52单片机的小型PLC的设计与实现

  • 格式:wps
  • 大小:214.94 KB
  • 文档页数:12

基于AT89s52单片机的小型PLC的设计与实现the designation and accomplishment of the small PLC which isbased on AT89s52 Singlechip[摘要]可编程控制器(PLC)以抗干扰性强、可靠性高和编程灵活等特点在工业上得到广泛应用。

其缺点是价格比较昂贵。

单片机也以其价格低廉,编程灵活,控制能力强等优点广泛应用于工业控制领域。

把两者的优点结合起来,利用PLC的编程思想和实现方法,结合单片机价格低,编程灵活的特点,设计了一种小型可编程控制器。

本文介绍了基于A T89s52单片机的小型PLC的设计,阐述了软硬件结构和实现的基本方法。

[关键字]可编程序控制器(PLC);单片机[Abstract]Programmable Logic Controller (PLC) has been widely applied in industry because it’s strong antidisturbance, high reliability and flexible. Its disadvantage is very expensive. But Single Chip Microcomputer has been widely applied because it’s low price flexible and strong control ability.Combining their advantage together, this paper designs a smart PLC with using the method of PLC programmer and advantage of Single Chip Microcomputer. This paper introduce a hardware and software design method of smart PLC based on MCS-8051。

[Keyword] Programmable Logic Controller (PLC); Single Chip;1.引言可编程序控制器(PLC)是按照成熟的继电器控制思想,结合计算机技术、自动化技术、通讯技术来实时控制的先进控制系统。

PLC广泛应用于工业生产,在工业控制领域占有重要地位,与机器人、CAD/CAM并称为当代工业自动化的三大支柱。

可靠性高、接口类型丰富、能适应各种复杂的工业环境是PLC的突出优点,同时PLC采用面向过程的编程语言,编程简单直观,易学易懂,使用灵活方便,工程技术人员经过短期学习即能上手。

但它也存在不少缺点:内存有限,编程优化调试困难;产品多为进口,价格昂贵;针对性比较差。

特别是当环境条件尚佳,控制量不大,控制逻辑不太复杂,控制要求不高时,它的优势不能完全发挥出来,而且会提高系统的成本。

鉴于此,根据可编程序控制器的实现思想和理念,设计小型的PLC控制系统具有较大的实际意义。

本文中笔者借鉴PLC的实现思想和运行原理,利用性价比比较高的AT89s52单片机设计了了一种小型PLC。

2.硬件设计此次设计笔者在PLC结构和实现思想的基础上进行了一些尝试,把系统程序和用户程序合并到一起,即不区别系统存储区和用户存储区,不设常驻CPU的系统程序,而是在上位机通过编程软件将用户程序和系统程序合并在一起。

此方法简化了硬件结构了,整个硬件系统由单片机AT89s52以及外围接口电路构成。

其硬件结构图如图1所示:2.1 CPUPLC常用的CPU有8位16位及32位通用微处理器和单片机。

自从单片机问世以来,已有不少产品采用单片机制造可编程控制器,如常见的MSC-8051系列单片机,就被一些公司用来制造小型可编程序控制器,特别是该系列的单片机具有较强的布尔处理机,更适合用来制造PLC。

此次采用的AT89s52单片机即是MSC-8051系列的衍生产品。

2.2 I/O单元I/O接口的数量是衡量CPU性能的主要标准之一。

本系统的设计定位是:应用于控制量较小,控制要求不高的控制场合的微型可编程控制器,故本系统设置了8个输入点和8个输出点,这种设计完全可以满足该工况的需要。

PLC 工作于工业控制现场,而工业控制现场往往环境恶劣,存在着电磁、噪声、振动等各种干扰,因此PLC 要正常工作必须具备良好的抗干扰性能。

工业现场中,电磁干扰是较为严重的,因此为了实现良好的抗干扰性能必须把I/O 接口和CPU 从物理上隔离开来,以防止干扰信号的串入。

PLC 产品为了实现接口电路与CPU 隔离通常采用光电耦合器隔离的方法。

本设计已采用了这种方法,使用光电耦合器把输入输出接口同CPU 隔离开来。

光电隔离电路如图2所示:D2LED D3LED D4LED D5LED D6LED D7LED D8LEDP 10/T 21P 11/T 2E X 2P 123P 134P 145P 156P 167P 178R S T 9P 30/R X D 10P 31/T X D 11P 32/I N T 012P 33/I N T 113P 34/T 014P 35/T 115P 36/W R 16P 37/R D17X A L T 218X A L T 119G N D20P 2021P 2122P 2223P 2324P 2425P 2526P 2627P 2728P S E N29A L E /P R O G 30E A /V P P 31P 0732P 0633P 0534P 0435P 0336P 0237P 0138P 0039V C C 40U17AT89S52R21kR31kR41kR51kR61kR71kR81k+5+5+5+5+5Y1C930pFC1030pF XTAL1XTAL2X T A L 2X T A L 1R S T C111uFR1751k R181kRST+5C21uF C31uF C41uF C51uF C61uF C71uF C81uF 1133224455K1JDQ18050R201KD9IN4148D10LED+12R191K24Q48050R261KD16LEDR251K1133224455K3JDQ38050R241KD13IN4148D14LED+12R231K1133224455K2JDQ28050R221KD11IN4148D12LED+12R211K1133224455K8JDQ88050R341KD23IN4148D24LED+12R331K1133224455K7JDQ78050R321KD21IN4148D22LED+12R311K1133224455K6JDQ68050R301KD19IN4148D20LED+12R291K1133224455K5JDQ58050R281KD17IN4148D18+12R271KD1LEDR11k+5C11uF +5+51234J1CON41234J2CON4R351.5KR364KD25LEDD26LED+5G N D+12G N DR3720R3820R3920R4020R4220R4320R44RES-71122334455667788991010111112121313141415151616U1P521-41122334455667788991010111112121313141415151616U2P521-4+51122334455667788991010111112121313141415151616U3P521-41122334455667788991010111112121313141415151616U4P521-4+5+5+5+5+5+5+5+5S1SW SPST S2SW SPST S3SW SPST S4SW SPST S5SW SPST S6SW SPST S7SW SPST S8SW SPSTS9SW SPST+5+5123456789J410K +5123456789J310K2.3 电源部分为了取材方便节约成本,电源部分采用二手的计算机开关电源,取+5V 供给单片机,+12V 供给接口电路。

为了避免干扰的串入,控制部分和接口电路分离供电,分别用两块电源供给,提高了抗干扰性能。

3.软件设计软件系统的设计思想是:编程软件将编制的助记符指令翻译为MCS-8051的汇编语言,用户只需通过文本编辑软件建立助记符程序源文件并存为.PLC 格式,即可直接运行翻译程序进行翻译,生成.ASM 格式的文件,再通过汇编器的编译后生成目标码.HEX 文件,最后装入单片机。

3.1系统运行程序依照PLC 循环扫描、集中采集输入、集中输出的设计思想,设计了系统运行程序。

由于单片机并行口在上电复位后都为高电平,而输出设计为高电平有效,因而在程序运行一开始首先向输出口P1写“1”,将输出口电平拉低。

而后调用MOV 20H,#00H 将输入映像区20H 清空,随后进入一个“读输入—逻辑运算—写输出”循环周期。

在每个循环的开始调用MOV P2,#0FFH 和MOV 20H,P2两条指令读取输入口的状态,由于系统逻辑运算部分设计为高电平有效,而输入状态扫描设计为低电平有效,所以当我们采集输入点信息并读入输入映像图1 硬件电路图AT89S52P2.7· ·LEDR1CR2 10K+5VSW图1 光电隔离电路图区后,首先要将输入映像区的值全部取反,再进行逻辑运算。

逻辑与运算完毕后将进入写输出操作,由于在翻译逻辑运算的同时已经将输出量写到了输出映像区24H的对应位,因而在循环末尾只需调用MOV P1,24H将输出缓冲区全部写到引脚即可。

3.2 翻译程序设计软件设计的思路是设计翻译程序将助记符程序.PLC翻译成为汇编语言程序.ASM。

通过研究我们不难发现PLC助记符程序和MCS-51汇编语言存在着一定的对应关系,我们可以利用这一对应关系进行翻译。

具体方法是:先确定PLC 助记符指令语句与汇编语句组的队医关系,翻译时派发地址即可。

PLC助记符指令与MCS-51汇编指令对应表如表3所示:整个翻译程序共分为四个模块:文件扫描、错误检查、逻辑翻译、结果输出。

逻辑翻译模块式翻译程序的核心。

翻译是通过I/O映像区地址表的建立,操作数字段操作数类型与标号的分离,操作码字段翻译,I/O点对应的位地址的确定等几个阶段完成的。

翻译是通过函数Interpreter()的调用实现的。

PLC助记符程序MCS-51汇编语言-LD MOV C , BITLDNOT MOV C , BIT CPL COR ORL C , BITORNOT ORL C , /BITAND ANL C , BITANDNOT ANL C,/BITORLD ORL C , 22H.0ANDLD ANL C , 22H.0OUT MOV 24H.X , C表1 PLC助记符指令与MCS-51汇编指令对应表(1)I/O映像区地址表的建立输入输出映像区地址表中包含了目标程序中全部可用的输入输出点的位地址。