1 引言
本文所论述是数控系统大课题中人机交互的外围部分子课题中软PLC的开发应用。在数控系统中,PLC在处理开关量辅助控制问题时起着重要作用。在以前,需要根据数控系统的控制要求分析PLC与机床、主控机之间的信息交互种类和数量,来选用相应的外部硬件PLC.采用这种方法设计,产品一旦定型就很难更改.工控领域的研究人员一直在寻求解决这些问题的途径。近年来,随着计算机技术的迅猛发展以及PLC方面的国际性标准IECll31的制定,一项打破传统PLC局限性的新兴技术发展起来,这就是软PLC技术。基于Pc平台的软PLC在数控系统中正逐渐取代硬件PLC,成为该领域辅助功能控制的新方法。软PLC提供了与硬PLC同样的功能,而同时具备了Pc环境的各种优点。
本文就嵌入式数控系统开发课题中人机交互部分所应用到的软PLC技术进行论述,对在Linux环境下基于MatPLC开发工具的软PLC具体实现过程,以及在实现过程中的注意事项上做了详细介绍。
2 软PLC技术简介
硬PLC由于技术标准对外封闭,各厂商的硬PLC的软硬件平台各不相同。而软PLC的技术标准对外开放,其硬件平台一般是工业控制计算机或通用计算机或嵌入式控制器揿件平台是商业性的操作系统。虽然两者的软硬件平台不同,但实现PLC功能的软件结构相同,都可分为PLC开发系统和PLC运行系统两部分。PLC开发系统用于开发各种适用于工业控制的PLC程序。PLC运行系统通过运行PLC程序,与I/O板卡或现场总线或直接与I/O信号等配合完成逻辑控制,其控制方案根据PLC硬件平台的不同,可分为以下三种:fl谨于IPC或PC的控制方案。在这种控制方案中,PLC开发系统和PLC运行系统都是在同一台计算机上运行的。(2)基于嵌入式控制器的控制方案。在这种控制方案中,PLC开发系统独立于嵌入式控制器,而PLC运行系统被固化在嵌入式控制器中。(3)基于传统PLC的控制方案。在这种控制方案中,PLC开发系统一般在普通PC上运行,而PLC运行系统在传统PLC硬件上运行。从以上3个方案可以看出,软PLC和硬PLC的最大区别在于它们所采用的软硬件平台不同。
3 MatPLC开发软件介绍
MatPLC是Linux下的软PLC开发软件,它是开放源代码的,很容易对它进行内核定制,并嵌入到自己的程序中。MatPLC采用的是模块化设计方法,其内棱主要包含以下几个部分:YO模块、逻辑模块和用户界面模块等。MatPLC的工作原理与硬件PLC类似,只是设计内核控制由软件实现。其结构如图1所示。
每个模块都是一个进程。PLC全局变量是MatPLC 中的用户程序里所有模块的公共数据.由配嚣文件设定,受MatPLC内核控制,位于MatPLC的内核中,各个模块的私有数据不包含在内。全局变量在每个模块里都有副本,各个模块通过副本的数据对本模块进行运算,当循环一次运算后,就更新到全局变量中,这样就实现了各个模块之间的通信。每个模块对全局变量的读写权限是不一样的,只有对全局变量具有写权限的模块才可以更新全局变量里的相应变量。
MatPLC中可以用梯形图或指令表来进行PLC逻辑设计。梯形图输入方式是建立在GTK基础上的,指令表是MAT IL语言。对于用梯形图或指令表设计的PLC逻辑,其执行顺序与硬件PLC完全一致。MatPLC对IL语言设计的程序的处理过程是:先调用f12c perlscript将其编译成c代码,然后再与其它c代码一起编译。因此在一般的设计中,很少去采用梯形图或指令表来进行PLC逻辑设计,而直接用C语言来进行设计。本文不涉及MatPLC软件内核的讨论,只是用MatPLC来实现通过PCI接口卡对外围IO进行数据读写。
4 软PLC的实现
4.1 总体设计思路
用MatPLC进行开发.核心的文件是MatPLC.conf文件,它决定了哪个模块将被运行、输入模块需要的参数、配置MatPLC内核、配置全局变量等。在本没计应用中,设计了两个模块:一个是输入模块,另一个是输出模块。各模块构成和数据流如图2所示。输入模块通过驱动程序从PCI接口卡中读取数据,然后更新到全局变量中;输出模块从全局变量读取数据,更新到自己的全局变量副本中,并用此数据进行逻辑运算,再将运算结果输出到PCI接口卡,从而实现了用MatPLC来读写外围IO。