可编程序控制器(programmable logic controller,简称plc)把自动化技术、计算机技术和通信技术融为一体,按照成熟而有效的继电控制概念和设计思想,用先进的微控制器技术来实现i/o的实时检测和控制。由于plc具有编程简单、可靠性高、通用性强和使用方便等特点,因此得到广泛应用。plc技术已经成为工科院校电工学的必修内容。但plc的种类很多,发展很快,而指令系统和使用方法又不尽相同,使plc的教学内容总是滞后于plc的技术发展。为了改变这种状况,我们以自带在系统中编程(isp)功能的、高性价比的微控制器sm2965为核心,研制了基于isp功能的可编程序控制器,用于plc控制实验。下面介绍plc的设计思路、硬件构成和软件设计方法。
一、采用isp微控制器sm2965设计plc的思路
为了满足对嵌入式系统采用高级语言开发的需求,新一代微控制器配置了isp功能,它是指在用户设计的微控制器系统中为配置新的系统功能对器件进行重新编程的技术。在plc中采用具有isp功能的微控制器,不仅可以在线更新用户程序,而且还可以在线升级系统程序。使plc教学能紧跟plc最新技术发展。
(一)sm2965的特点
sm2965的内核是标准的80c52,但在此基础上扩展了以下功能:
在系统中编程,编程电压为+5v;
64k字节快闪存储器(flash e2prom),isp功能使flash e2prom可在线编程;
1k字节的ram空间—256字节的片内ram和768字节的片内扩展内存(exram);
可编程的看门狗定时器。
可见,一片sm2965包含了标准的80c32、flash、e2prom(28sf512)、sram(静态数据存储器)和wdt(看门狗定时器)sm2965是性价比极相当高的“单片”计算机。而其isp特性使得flash e2prom既可作为程序空间,也可像e2prom一样保存数据。以其为核心设计的plc具有成本低、体积小、扩展方便及使用灵活等优点。
(二)由微控制器组成plc的思路
以微控制器为核心设计plc,其硬件组成与微控制器测控系统基本相同。但在微控制器测控系统中,“测”和“控”的过程在时间上是串行关系。而plc是按循环扫描方式进行工作的,每个扫描周期包括输入采样、程序执行和输出刷新三个阶段,采用集中输入、集中输出并行关系的工作方式。若像微控制器测控系统一样,对plc梯形图程序行依次实时采集输入端子状态,进行处理后实时输出,达不到plc的控制效果。为此,在ram区设置输入缓冲作为输入映像寄存器,采用一次性读入全部输入端子状态,并将其存入输入缓冲区,然后,按照梯形图程序行的逻辑关系,从输入缓冲区读取相应输入端子状态,运算处理后将待输出的结果存入输出缓冲区—元件映像寄存器。最后,当梯形图程序行全部执行完毕,一次性将输出缓冲区的值输出到相应的输出端子,经过上述三个阶段,完成一个程序扫描周期。如此往复,自动进行下一轮的扫描。这样将串行程序工作和并行工业控制系统两种关系协调起来。虽然存在输入/输出滞后现象,但微控制器执行一条指令的时间是微秒级,执行一个扫描周期的时间为几毫秒,最大为几十毫秒。相对于电器的动作时间而言,扫描周期是短暂的,可以认为在一个扫描周期内输入端子的状态是不变的,对其状态变化的采集和处理也是实时的,从而满足了实时控制的要求。
二、硬件配置及系统资源分析
系统硬件配置以微控制器sm2965为核心,如图1所示。
该微控制器有64k字节的flash存储器和1k字节的ram,不必扩展外部存储器,其接口p0~p3全部可作为i/o使用。输入端子经光电隔离后连到p0口的8个脚。用于开关量的输入。开关接通时,相应引脚为“1”,开关断开时,相应引脚为“0”。在输入采样阶段,mcu(微控制器)读p0口的状态,存入输入缓冲区相当于输入映像寄存器。p2口作为plc的输出锁存器。在输出刷新阶段,将输出缓冲区的内容转存到p2口锁存器,p2口8个引脚经光电隔离后直接驱动输出设备的执行机构。p3口将键盘、显示器和微型打印机等外设与plc连接,使plc可脱离主机单独使用。p1作为i/o扩展接口,当输入、输出设备所需i/o点数超过p0和p2所提供的i/o点数时,可由p1口通过i/o扩展单元加以扩展。用p1.6和p1.7口软件模拟i2c总线接口,带有i2c总线的i/o接口器件、a/d和d/a转换器件作为i2c的从器件与此相连后即可增加i/o点数和扩展其他功能。系统配置电平转换集成电路icl232,将ttl电平转换为rs232c电平,可直接与主机相连进行串行通信。sm2965内部自带可编程看门狗电路,其外部仅用简单的阻容复位即可。
sm2965片内rom空间分配如图2所示,plc系统程序、中断控制设置在低地址空间,系统上电复位从0000h地址直接跳转到plc系统程序的入口地址,进入plc监控。下载引导程序位于f000h~ffffh地址范围,系统上电复位如检测到0000h地址的内容为空“#0ffh”,则自动跳转到下载引导程序的入口地址为f000h,用于升级或更新plc系统程序。e000h~efffh空间固化了若干个plc控制范例供实验时参照。
sm2965片内768字节ram作为plc的梯形图缓冲区,将源程序用plc汇编器汇编成plc目标代码文件,并经串行通信口发送到sm2965,由sm2965将其写入梯形图缓冲区。系统无须配置编程器。
三、系统软件组成
系统软件包括微控制器软件和pc机集成软件两部分。为方便系统维护和升级,微控制器软件采用c51编写,对实时性要求较高的部分使用汇编语言编写。微控制器软件主要包括下载引导程序、系统主程序、plc指令分析程序及串行口中断程序。下载引导程序仅在系统升级时调用。微控制器软件组成如图3所示。
plc程序按输入采样、执行梯形图程序行及输出刷新三个阶段进行周期性的循环扫描,在输入采样时,间隔2ms连续三次采集p0口状态,结果全相同时为有效,即将其存入输入缓冲区,否则重新采样,以此提高抗干扰能力。执行梯形图程序行时依次读取plc运行缓冲区数据进行运算,遇到“=”指令时将运算结果存入输出缓冲区。当mcu从运行缓冲区读到“mend”指令的二进制代码时,表示梯形图程序结束,然后将输出缓冲区的内容一次性输出到p2口,从而完成输出端子的刷新。
plc上位机软件如图4所示,采用visual c++6.0编写,主要由串行通信程序和plc汇编语言汇编器组成,还包括更新范例、装载范例、装载指定实验、系统实时监控、模拟仿真、系统升级和在线帮助等辅助模块www.plcs.cn。写完梯形图源程序后,用plc汇编器将其汇编成目标程序文件(obj文件)。选取主菜单装载指定实验,再选定相应的obj文件,该段目标代码即被传送到plc运行缓冲区。主菜单上的“更新范例”对应于微控制器的“更新指定范例”模块。调用更新范例和系统升级命令时需要输入权限密码。
四、应用实例
某送料小车自动控制系统如图5所示,sta、stb分别为左行和右行限位开关。小车碰到sta自动停下来装料,10s后装料完毕自动开始右行,碰到stb自动停下来卸料,15s后卸料完毕自动往左行,这样不停地循环工作,直到按下停止按钮为止。
输入:
sbf(右行手动按钮):i0.0
sbr(左行手动按钮):i0.1
sb1(手动停止按钮):i0.2
sta(左行限位):i0.3
stb(右行限位):i0.4
输出:
kmf(左行线圈):q0.0
kmr(右行线圈):q0.1
装料:q0.2
卸料:q0.3
此例属于一个被控对象(送料小车)的两种相反的工作状态(左行和右行),所以基本电路采用双向控制电路,结合其他控制条件,可以设计出小车控制的梯形图如图7所示。
图7 继电器梯形图
五、系统特点
根据plc的发展,可在线升级部分或全部系统程序;
可通过i2c总线扩展系统功能;
无需配置编程器,使用标准的串行口下载梯形图程序;
调用isp功能把梯形图范例固化到mcu内部flash中,具有断电数据保持特性;
对ram写操作把梯形图实验写到mcu内部exram中,exram擦写次数无限;
在实验中可参考plc控制范例;
plc控制范例可以根据不同专业要求自行配置;
用于实际控制时,只需将该梯形图程序形成的obj文件在线装载到范例1位置;
系统程序具有梯形图语句翻译功能,可外接键盘/显示器,plc可独立使用;
通用性强,不局限于某种指令系统,用户可自行设计汇编器;
成本低,器件主要有sm2965、232电平转换器、光电耦合器、稳压块、接线端子以及几个电阻和电容。