编程语言可以是c、python或tcl.考虑到MatPLC本身是由C语言写的,为了与该软件更好地兼容,本用c语言编程。输入、输出模块的程序流程图如图3所示。其中,打开设备文件、从设备中读取数据、写数据到设备由PCI接口卡设备驱动程序实现。以下给出了输出模块的程序实现代码,输入模块程序实现与输出模块类似。
4.3 配置文件设计
配置文件就是MatPLC.conf文件.它控制着在输入模块与输出模块之间的数据如何共享。在MatPLC开发中处于核心地位。MatPLC.conf一般分成几个段,常用到的段包括:(1)PLC段:用来配置内核和各个模块的相关参数。(2)公共配置:设置一些各个模块共同的属性。(3)同步配置:配置各个模块之间的同步性。由于各个模块默认是异步运行的,为了保证数据的正确传输,必须让这些模块的运行同步起来,以产生全局扫描周期。这在设计中显得及其重要。(4)实时特性配置:配置整个MatPLC的实时性。MatPLC的模块可以运行在三种模式:正常模式、软实时模式和硬实时模式。正常模式是默认模式.它不保证响应的时间问题;软实时模式可以保证MatPLC模块优先于其它程序,但没有超过操作系统级,所以也不能完全保证响应的时间问题:硬实时模式可以保证响应的时间问题,但需要特殊的操作系统内核模块支持,并且编码时需要考虑到实时性问题。需要指H{的是,硬实时模式并不一定是响应最快的。有些模块由于其实现的功能的原因,是不能运行在硬实时模式的;比如,一个向文件写数据的模块就不能运行在硬实时模式。(5)[kbd]段:说明与键盘有关的操作。有些设计需要从键盘输入控制信息,就需要实现键盘段。
对于每一个具体的设计来说,并不一定要全部实现以上五个段,也可以据需要加些其它段,比如扫描周期段等。还有一个需要注意的问题是实时性与同步的问题,MatPLC不允许将一个优先级低的模块同步到优先级别高的模块;可以将两个优先级相同的模块同步,或者将优先级高的模块同步到优先级低的模块。
本设计中,主要实现的配置有:输入模块与输出模块的同步,全局变量的设定。
4.4 编译与测试
将三个文件编码好后,需要进行编译,用于编译时要链接到MatPLC提供的文件,值得注意的是,不能用gcc直接编译,而要用Makefile来编译。产生Makefile文件有两种方法.:一种是采用MatPLC软件自带的例子中Makefile文件,在此基础上进行修改;另外一种方法是采用autoscan }aclocal }li6toolize }autoconf}automake等工具来产生,其中还要自己编写一些中间文件。编译通过后进行测试,任意修改输人,观察输出是否与设计的逻辑相符。本设计采用修改Makefile示例的方法来产生Make}le文件,并制作了一个demo实现整个设计的运行口
5 结束语
在数控系统中要用到PLC,通过计算机用软件的方式来实现PLC成为了新的发展热点。这项技术把自动化专业知识,以高附加值的方式,在PC行业规模经济的基础上加以发展提升的新型技术。目前,世界各国都在进行软PLC的研究,我国有关部门也正在着手研究开发具有自主版权的中文软PLC产品。本设计在Linux下基于MatPLC软件实现了软PLC来代替硬件PLC,实现了软PLC通过PCI接口卡对外围ID进行数据读写,简化了系统结构,降低了产品成本,并且运行实践表明,所设计的软PLC在嵌人式数控系统中应用稳定,效果良好。
本文作者的创新点:在数控系统中,PLC在处理开关量辅助控制问题时起着重要作用。近年来,基于PC平台的软PLC在数控系统中正逐渐取代硬件PLC,成为该领域辅助功能控制的新方法。作者在嵌人式数控系统开发课题中,对软PLC技术进行了实践应用,本文就Linux环境下基于MatPLC开发工具的软PLC具体实现过程,以及在实现过程中的注意事项上做了详细介绍。实现了软PLC通过PCI接口卡对外围IO进行数据读写,简化了系统结构,降低了产品成本,并且运行实践表明,所设计的软PLC在嵌人式数控系统中应用稳定,效果良好。