英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
AT89C51单片机控制的微型可编程控制器
[打印本页]
作者:
winnie
时间:
2009-3-21 14:24
标题:
AT89C51单片机控制的微型可编程控制器
摘 要:
介绍用
AT89C51
单片机构成微型可编程控制器
PLC
的设计思路、系统硬件配置和软件设计方法,最后给出此微型可编程控制器在水塔水位控制中应用的实例。
关键词:
PLC
单片机
扫描
控制
可编程控制器
PC(Programmable Controller),为与个人计算机PC(Personal Computer)相区别,可简称为PLC。它是按照成熟而有效的继电控制概念和设计思想,用先进的单片机技术来实现I/O的实时检测和控制,可靠性高,编程简单、易学,因此,得到广泛应用。
将PLC技术引进电工学、电力拖动课程,是课程建设现代化的重要措施。在教学经费相对紧张的情况下,我们自己动手,以AT89C51单片机为核心,设计并研制了LD型微型PLC,应用于继电控制实验,取得了良好的效果。
用单片机构成的PLC,实际上就是一个单片机测控系统。用这样一个程序控制的计算机系统去执行继电控制的梯形图程序,由于继电控制梯形图中各被控电器之间是并行关系,而计算机程序控制中,各被控电器之间在时间上是串行关系,二者显然不协调。若简单地像一般单片机测控系统一样,对梯形图各程序行依次实时采集输入端子状态,进行处理后实时输出,是达不到控制目的的。为此,必须采用一次性采集全部输入端子状态,并将其存入输入缓冲区。然后,按梯形图程序行的逻辑关系,从输入缓冲区读取相应输入端子状态,处理后将待输出的结果存入输出缓冲区。最后,待梯形图程序行全部执行完毕,一次性将输出缓冲区的值输出到相应的输出端子,从而完成一个程序执行周期。如此往复,自动进行下一轮的采集输入端子状态……。这种工作方式即称为扫描方式,它将串行程序工作和电器并行工作两种关系协调了起来。另外,单片机执行一条指令的时间是μs级,执行一个扫描周期的时间为几ms乃至几十ms。相对于电器的动作时间而言,扫描周期是短暂的,可以认为在一个扫描周期内输入端子的状态是不变的,而对其状态变化的采集和处理也是实时的,从而满足了实时控制的要求。
系统硬件配置以AT89C51(以下简称51)单片机为核心,如图1所示。该单片机有4 KB闪存,不必扩展程序存储器,其4个I/O口共32个I/O引脚,都可供用户使用,其中P0.7~0.0,P2.4~2.0共13个脚经光耦隔离后连到相应的输入端子X07~X00,X14~X10。可以用行程开关、液位开关、霍耳开关和手动按钮等进行输入。开关接通时,相应引脚为"0",取反后存入输入缓冲区。
P1.7~1.0共8个引脚用于输出控制:P1.i为"0"时,相应的PNP管导通,继电器Ji线圈通电,其触点Y5i接通,可驱动220 V/3 A的负载。
为了与
PC
机进行通信,系统扩展了
RS-232C
接口电路。
51
单片机的
RXD
和
TXD
信号经
RS-232C
电平变换后接至
9
芯插座。由此可与
PC
机进行串行通信。一方面,在编程状态时,可接收
PC
机上梯形图汇编程序编译结果的
OBJ
指令代码,并存入程序存储器;另一方面,在运行状态时,可将
I/O
口的状态和处理结果实时地发送给上位机。
程序存储器选用有
SPI
接口的
X25045
芯片。这是带可编程看门狗和电源监控功能的
E2PROM
,有
512
字节,每字节可擦写
10
万次,数据可保存
100
年。上电时自动提供
200 ms
高电平复位脉冲;有三种可编程看门狗周期;电源欠压,
VCC
降到转折点时,自动提供复位脉冲。
E2PROM
采用三线总线的串行外设接口
SPI
,既节省了
I/O
口线和电路板空间,又降低了系统成本。因此,该芯片是性价比极好的组合芯片。
软件设计分为
PC
机梯形图汇编程序编译软件和
51
单片机软件两部分。前者用
IBM-PC
汇编语言编写,我们称之为
PLC
编译软件。本机中我们自己设计了一套
TD
型
PLC
的梯形图汇编语言指令系统,有
LD/LDI
、
AN/ANI
、
OR/ORI
、
TM/TMI
、
CN/CNI
、
MA/MAI
、
OUT
、
JP/JE
和
END
等
16
条基本指令和
X00~07
、
X10~14
、
Y00~07
、
CN0~1
、
TM00~07
、
MA00~07
、
10~17
等器件。用它们来描述继电器梯形图,即设计梯形图汇编程序。用全屏幕编辑软件将其输入到
PC
机,即建立了源程序文件。然后用
PLC
编译软件将其编译成
PLC
目标程序文件(
OBJ
文件),并经串行通信口发送到单片机,由单片机将其写入
E2PROM
。
51
单片机软件由编程软件和运行软件组成。编程软件主要有串行通信和写
E2PROM
两个模块。此时,须将面版上的手动开关设置
P2.7="0"
,单片机即处于编程状态。当
P2.7
=
"1"
时,单片机即处于运行状态。运行状态的程序主要有:
(
1
)输入端子采集模块
该模块两次采集
P0
口和
P1
口状态,结果全同时为有效,即将其存入输入缓冲区,否则重新采集。用软件滤波的方法,提高了抗干扰能力。
(
2
)指令分析模块
该模块从
000H
地址开始,依次读取
E2PROM
中的字节内容,先读出操作码,对其分析后转向相应的处理程序;接着读操作数,供处理程序操作,从而完成一条梯形图汇编指令的执行。然后再读取下一条指令的操作码
……
。遇到
OUT
指令时,将待输出的数据存入相应的输出缓冲区。
(
3
)输出模块
当
CPU
从
E2PROM
中读到
END
指令的二进制代码时,表示一次扫描周期结束,即将输出缓冲区的内容一次性输出到
P1
口,从而完成输出端子的刷新。
该
PLC
的应用可以用水塔水位控制的例子来说明。
图
2(a)
是硬件接线图,
SB1/SB2
是启动
/
停止按钮;
SAC
是水池液位开关:水浸到时接通,无水时断开;
SAH
、
SAL
分别是水塔的高低液位开关;
M
是水泵电机。
图
2(b)
是继电器梯形图,图
2(c)
是继电器汇编程序,即
TD
型
PLC
源程序。其中
y50
是
PLC
输出端子,我们将它的软件触点
y50
作为水位上升或下降的标志:
y50
=
"0"
,表示电机已停,水位下降,此时
SAL
虽已接通,但电机不动作;
y50
=
"1"
,表示电机正在抽水,水位上升,此时
SAL
接通,电机通电,继续抽水,直到高水位。
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2