引言
可编程逻辑控制器(PLC)以其高可靠性和使用方便的特性.使其在现代工业控制中得到了广泛的应用。随着工厂自动化的进展,对PLC之间以及PLC同其他控制设备之间相互联系的要求也相应提高。由于PLC的通讯方式为串行通讯,受通讯方式的制约,传统的PLC(即外挂式PLC)难以胜任微机和PLC都必须参与实时控制和控制功能较为复杂的系统。当输入/输出点数多时,PLC体积会随点数的增多而增大,安装不太方便。此外,目前国内因没有自己的品牌,在应用PLC的场合仍多选用国外产品,品牌多,成本高,因此研制符合实际应用需求的国产化新型PLC系统及其通用开发平台具有重要意义和应用前景。
为了提高速度,降低成本,可采用虚拟式PLC,即把PLC上的CPU和存储器等部件由微机的软件虚拟实现,再配合普通的开关量I/O卡实现对电气开关的控制。但此方案因主机要直接参与控制逻辑的运算过程,占用了主机的部分工作时间,会导致整机速度下降。另外,把过多的功能集中到主机使主机发生故障的风险加大。因此,本文给出一种嵌入式PLC的设计方案,它可以看作是一种智能型I/O接口卡,在不增大系统体积的同时,使通讯速度大幅度提升,故障风险相对分散。
1 嵌入式PLC的硬件结构设计
嵌入式PLC是利用PC机开放式、模块化和可嵌入的特点,以及成熟的硬件及丰富的软件资源,尤其是开放式的PC总线而设计的。本项目总的设计思想是:设计一个嵌入式PLC卡,它可以插到主机底板的插槽上,因该卡直接与主机底板总线相连,通讯速度可以大大提高。卡上自带CPU,用以处理开关信号,开关逻辑处理不占用PC主机的时间,其输出经外接继电器以控制开关设备的开启与关闭、导通或截止。其软/硬件的分配是合理的,能有效解决PLC与主机通信和协调工作的问题,较好地满足控制系统实时性的要求。
嵌入式PLC是一个完全独立于PC机的完整的计算机系统,其硬件组成如图1所示,主要由单片机最小系统、程序存储模块、通讯模块及输入输出模块组成。嵌入式PLC的CPU采用了ATMEL公司推出的AT89S51单片机,该单片机是低功耗的、具有4KB在线可编程FLASH存储器。图1中双口存储器(双口RAM)用于完成PC主机与嵌入式PLC之间信息的交换,与采用并行口的方案相比,该方法简洁明了,无需复杂的通讯协议,PC主机可以随时了解外部设备开关状态而不需额外消耗时间,效率高于其他实现方式。目前,工控机的底板总线有两类:ISA总线和PCI总线。ISA总线的数据转输速率比PCI总线要低得多,但已完全能够满足一般工业控制的需要,而且ISA总线对工控机扩展卡的要求比PCI要宽松。从已有的工业应用经验看,ISA总线可靠性也比较高,因此仍选择ISA总线做为嵌入式PLC设计的基础。此外,图1中包括一片静态RAM芯片6264,主要用于存储PLC梯形图程序。在工控PC主机中对电气控制逻辑进行编程,编译后经双口RAM存入6264中,PLC运行这部分程序以完成电气控制。
图1 嵌入式PLC的硬件结构简图
1.1 通讯模块的设计
PC主机与嵌入式PLC卡之间可以采用并行口进行数据传输。这种通讯方式实现起来比较简单,成本低廉,一般又能满足大多数场合对速度的要求,目前己得到广泛的应用。另外,为了保证可靠地进行数据传输,通常在硬件设计上还要考虑握手信号。通讯双方进行应答的过程中,速度较快的一方将受另一方的制约。在通讯量比较大的情况下,这种交互过程将浪费相当多的CPU时间。因此在信息量比较大的场合,运用并行口进行通讯就受到限制。此外,还可以采用共用存储器的方法进行信息传输,它可以达到更高的传输速度。传统的共用存储器硬件设计比普通的并行口复杂得多,应用范围较小。最近几年出现的双口RAM芯片内含总线仲裁电路,提供两套相互独立的控制、地址和数据总线,可以大大简化共用存储器电路设计,使其应用日益增多。因此,在此采用双口RAM进行数据传输。嵌入式PLC卡通讯部分的设计如图2所示。
图2 嵌入式PLC卡通讯部分原理图
在图2中,IDT7132为IDT公司生产的双端口RAM芯片,容量2K字节,它有两套完全相同的地址、数据和控制总线,内部含有总线仲裁电路,允许两侧总线同时对它进行读写操作。当两侧同时对该芯片的同一单元进行读写时,内部仲裁电路会根据两侧读写控制信号微小的时间差,判决一侧正常读写,同时在另一侧给出BUSY信号(低有效),表示不能正常完成读写,它可用作等待信号来扩展读写周期,以保证正确读写。
图2中AT-BUS为PC机底板总线,也可称作ISA总线。虽然在通用PC行业,ISA有被其他更高速率的总线如PCI等替代的趋势,但高速率的总线同时也提高了对外围扩展线路板的要求,使可靠性有所降低,而且ISA总线己能满足绝大多数工控系统对传输速率的要求,因此在工控领域仍占据重要地位。
AT总线的地址信号AO-A 10与IDT7132直接相连,A11-A19及AEN信号经通用可编程芯片GAL16V8,产生IDT7132的片选信号。这种做法可以简化译码电路的设计,且可以很方便地修改IDT7132的地址选择,以免与工控机中己有的扩展板发生冲突。一般地,PC系列机存储器空间的OAOOOOH-OEFFFFH区域为vo扩展卡保留,且某些标准uo设备如显示适配器己经占用了其中的一部分空间,因此本卡上IDT7132在工控PC机中占用存储器空间应提供多种选择。例如,欲使IDT7132占用的地址空间为OD800:1000 -OD800:17FF,只需将GAL按以下逻辑编程:
1.2输入/输出(I/O)模块的设计
嵌入式可编程控制器是一种工业控制计算机,控制对象是工业生产设备或工业生产过程,工作于工业生产现场,它与工业生产过程的联系就是通过输入输出(I/O)模块实现的。I/O接口模块的任务是将被控对象或被控生产过程的各种变量进行采集送入单片机处理,同时控制器又通过I/O模块将运算处理产生的输出信息送到被控设备或生产现场,驱动各种执行机构动作,实现实时控制。
在通常的PC工业控制中,需要用到多路输入,单片机上可用的I/O端口数量有限而且宝贵。在此系统中,根据设计要求的输入、输出点数,进行I/O端口的扩展。本次设计中所选用的I/O扩展芯片是8255A。由于输出模块另选了其他元件,不需要在8255A上另辟输出端口,因此8255A的三个端口全部都用作输入。出于对可靠性及抗干扰两方面的考虑,开关量输入信号经滤波及光电祸合器隔离后送入8255,然后由驱动器74LS245读入单片机。设计中采用的输出元件是德州仪器(TI)公司生产的逻辑功率器件TPIC6B273ND,该器件是一种单片、高电压、中等电流的功率逻辑8位D型锁存器,其将锁存器和驱动器做在单一芯片里,满足了输出模块的要求,先将信号锁存,而后在输出刷新时驱动负载,并且能提供15OmA的连续电流驱动较大范围的负载。开关量输出信号经TPIC6B273ND锁存及功率放大后送至继电器板,由继电器控制外部开关设备的通断。经过这样的设计使得输出模块结构大大简化,一改传统模块体积大,电路连线复杂等缺陷。
2 嵌入式PLC的软件设计
软件设计有两部分内容,一个是工控PC机中相关程序设计(即上位机程序的设计或梯形图集成开发环境的设计),另一个是PLC卡自身所带程序设计(下位机程序的设计)。前者主要功能参图3所示,一般基于Visual C++或Borland C++平台进行开发。
在图3中,梯形图编程模块为用户提供方便的PLC电气控制逻辑编程手段,其结果生成梯形图文件。梯形图文件仅存储I/O点之间的逻辑关系,其格式与嵌入式PLC所用CPU类型无关,以提高编程模块的适应性及可重用性。梯形图编译模块则用于把该文件转化为一系列的8051机器指令,并加上一些必要的附加指令,产生二进制(BIN)指令码文件。此部分应当考虑到PLC中I/O点的资源分布情况,使最后生成的BIN文件的指令与实际I/O资源协调一致。通讯模块用于把BIN文件传输到双口RAM中,再由PLC卡自身所带的程序(下位程序)把它转储到静态存储器(6264)中。监控模块提供用户对I/O点监视与设置、PLC卡运行状态/编程状态设置等功能,方便用户现场调试。另外,为了使用户能够在自主开发的应用程序中对PLC卡进行有效的监控,此部分提供开放的用户接口。
图3 PC机中软件主要功能
嵌入式PLC卡自身所带程序(下位程序)主要实现以下功能6264中逻辑处理程序(即由工控机传来的BIN文件)及运行状态的有效性检验,I/O点及双口RAM映射区域的周期性刷新,运行故障监测等。只有当6264中已存有有效的BIN文件,且已设置好有效的运行标志时,才能运行6264中的逻辑处理程序。另外在运行期间,运用看门狗(Watch Dog)对运行是否正常加以监视,防止并处理诸如运行6264中的程序时发生的超时错,6264中的逻辑处理程序出错等异常情况。
3 结论
本文设计的嵌入式可编程控制器系统采用了插卡式结构,利用总线技术及双端口RAM与工控 PC机进行信息交换,速度快,可靠性高,实时性有保证。其可嵌入到工控PC机系统中,便于与用户的软硬件组合成更复杂的系统。此外,目前国内有关嵌入式PLC系统的研发不是很多,本文的研究工作对推动PLC控制系统国产化具有重要意义。