开放式数控软PLC系统的研究

2018-01-09 21:33王志学李茂月刘献礼周肖阳李玉强
哈尔滨理工大学学报 2017年6期
关键词:实时性数控系统开放式

王志学+李茂月+刘献礼+周肖阳+李玉强

摘 要:在开放式数控系统体系中,为了使软PLC结构开放,将软PLC系统分为了开发系统和运行系统两个模块。针对翻译型编译原理的软PLC不利于数控系统的开放性与灵活性这一問题,提出了依据解释型编译原理,利用逐行扫描,关键字匹配的方法来开发软PLC系统。研究了对指令表程序的逐行拾取和循环执行的解释型运行系统,并给出了具体的实施方案。为了解决Windows系统的非实时性问题,设计了基于Windows+RTX(RealTime eXtension)的软件开发平台,来满足运行系统的实时性。最后通过实例,验证了解释型软PLC系统功能的可靠性,实现了控制开放式数控系统逻辑指令功能的目的。

关键词:

开放式数控;软PLC;运行系统;解释型编译;RTX

DOI:10.15938/j.jhust.2017.06.001

中图分类号: TG506

文献标志码: A

文章编号: 1007-2683(2017)06-0001-08

Abstract:In order to develop the soft PLC with open structure, the whole system based on the open CNC system is divided into two modules: the development system and the operating system With the disadvantages of soft PLC of translation compile principle that reduce the openness and flexibility of CNC system, the proposed method broke the tradition, which uses the interpretative type compile theory, adapting progressive scan and keyword matching to develop soft PLC system This study forces on the interpreted the operating system with the function of loop execution and progressive pickup, thereby, the corresponding solution is presented Taking the nonreal time of windows system into consideration, a platform of software based on Windows + RTX(RealTime eXtension)is designed to meet the realtime of the operating system Finally, the result of the experiment shows that the proposed interpreted soft PLC system is reliable and effective Furthermore, it can achieve the function to control logic instruction function of open architecture CNC system

Keywords:open CNC; soft PLC; operating system; interpretative type compile; RTX

0 引 言

《中国制造2025》提出,要加快发展智能制造装备和产品,数控技术作为智能制造技术的关键技术之一必将得到快速的发展。随着加工制造技术要求的不断提高,人们逐渐的认识到了传统数控系统的封闭性,很难根据实际的加工需要对现有的数控系统进行拓展和移植[1],在生产过程中难以实现与数据采集环节的反馈控制,因此智能化程度较低。为了解决传统数控系统封闭性的弊端,同时满足加快发展智能制造装备的需求,研发开放式数控系统具有重大的意义。

开放式数控系统即模块化、可重构和可扩充的软硬件数控系统[2]。开放式数控系统可以解决传统数控系统结构封闭的缺陷,使数控系统具有结构紧凑、价廉、智能化高并具有很强的适应性和二次开发性[3]。在开放式数控系统中,用户可以方便的添加各种传感器和远程监控设备组成智能制造系统。

传统数控系统中的主轴起停,冷却液开关,换刀等逻辑控制功能,基本都是通过传统的可编程逻辑控制器PLC来实现的[4]。传统PLC由于其较高的稳定性和灵敏度,在工业控制领域得到了越来越广泛的应用[5]。但是传统PLC结构封闭,不满足开放式数控系统结构开放的特点,因此开放式数控系统中的逻辑控制功能都是通过软PLC实现的。

与传统的PLC相比,软PLC具有如下的优点:体系开放,结构紧凑、配置灵活[6];数据处理能力强,软PLC以PC机的CPU来进行数据的处理,大大的提高了数据的处理速度;性价比高,软PLC打破了传统PLC厂家的技术垄断,用户可以自由的选择软PLC硬件设备;具有超强的移植性,程序设计可以方便的在PC机上完成,并可方便的移植到工控机上[7],同时软PLC也具有良好的人机界面。

目前,在许多欧美国家,已研究出了工业级的软PLC产品,并投入到了工业生产当中。其典型产品包括:法国CJ International公司的ISaGRAF, SOFTPLC公司的SoftPLC以及SIEMENS公司的SIMATIC WinAC等[8-9]。我国对软PLC技术研究的比较晚,至今虽然还没有生产出一套结构完善、功能强大的产品,但是已经取得了一些成果。例如:北京亚控自动化软件科技有限公司正在研发自主产权的中文软PLC产品,具有监控和在线仿真调试的功能[10]。沈阳自动化所自组研制的NCSSoftPLC可以完成硬件PLC中CPU的所有功能[11]。同时,我国的一些高等院校,也进行了软PLC的研究。北京工业大学王新华等[12]在自行研发的编辑开发系统之上,设计了软PLC的编译系统,并对软PLC的程序指令做出了正确翻译,使PC机完成了指定的控制功能。华南理工大学[13]完成了开放式数控系统中软PLC系统的开发,并且在机床上得到了验证。喻赛花等[14]针对软PLC的开发系统设计,基于Lex&Yacc完成了结构化文本编辑器的设计。合肥工业大学[15]在分析了传统PLC存在不足的基础上,以ARM硬件平台,以Windows CE为软件平台,开发了一种嵌入式软PLC系统。张红香等[16]研究了嵌入式软PLC的开发系统,实现了梯形图程序的编辑和编译功能,具有一定的实用价值。除此之外,哈尔滨工业大学、西北工业大学等高校的学者,在软PLC技术方面,也进行了大量的研究。endprint

虽然我国在软PLC 的研究方面取得了一些成果,但是与西方发达国家的软PLC技术相比,我国的技术还是比较落后。同时,国内所研究的软PLC系统大多数都是利用翻译型编译原理,将PLC程序编译成目标机器可识别的代码,然后由相应的硬件执行。该方法占用资源少,执行效率高,但是PLC程序修改后,需要再次进行编译,重新生成目标代码;另外,针对不同的硬件,需要开发不同的编译器,这不利于数控系统的开放性与灵活性。为了解决这个问题,本文提出了利用解释型编译原理,运行系统直接解释指令表语言的方法,来分析PLC程序的逻辑关系。该方法的优点在于不同的硬件设备,可使用同一套软PLC系统,同时不需要提前生成机器可识别的目标代码,从而使PLC程序修改方便。这种方法占用硬件资源较高,但是随着CPU的迅猛发展,以及程序的精心设计,硬件资源的占用已不成问题。

1 开放式数控系统中软PLC的功能

软件PLC(soft PLC)是以PC机为依托,通过编程,利用软件的方式实现传统PLC的基本功能。这样就可以将PLC的控制功能封装到软件内,运行于PC机[17]。从而充分的利用了PC机的优势,摆脱了传统PLC的各种弊端,使PLC的结构更加灵活,满足了开放式数控系统的要求。软PLC功能实现结构如图1所示。

对于全软件型模块化的开放式数控系统,其结构如图2所示。从图2中可以看出软PLC模块与其他各模块之间的关系。带有加工信息的NC代码经过人机界面模块传给软CNC模块,经过软CNC模块的译码模块,将M、S、T等逻辑开关量信息交给软PLC处理,软PLC运行系统按照软PLC开发系统编制的PLC程序,解释各种逻辑关系,通过主轴伺服单元和电器回路控制机床的辅助功能。同时通过反馈模块将反馈的信息交给软PLC模块和软CNC模块处理。

2 软PLC控制系统结构的划分

因为数控系统是实时多任务计算机控制系统[18],要求具有较高的实时性。软PLC作为数控系统的一个控制模块,当然也需要具有实时性的特点。但目前的Windows系统是典型的非“硬实时性”系统,主要表现在高优先级的任务可以被低优先级的任务抢占。为了解决Windows系统的实时性,采取了在Windows系统中加入RTX实时内核的方法。RTX可以认为是Windows系统的一个子系统[19],它由硬件抽象层HAL(hard ware abstract layer)擴展、实时子系统RTSS (realtime sub system)及实时开发工具库组成。采用Windows+RTX平台,既继承了Windows系统原有的优点,又满足了软PLC实时性的要求。Windows+RTX平台示意图如图3所示。

软PLC的实时性主要体现在对输入、输出数据的采集以及对逻辑关系处理的响应时间上,而编程界面并不需要较高的实时性,因此将软PLC的开发系统和运行系统单独进行开发。合理的设计软PLC的结构有利于提升PLC控制系统的稳定性[20],根据软件模块的思想,将软PLC划分成了如下结构,如图4所示。开发系统由编辑器和编译器两个模块组成,同时具有一个良好的人机界面。编辑器主要负责梯形图和指令表等语言的编程。编译器主要是对编程语言进行词法分析、语法分析和语义分析并最终将各种PLC程序转换成指令表程序。

运行系统是软PLC的核心,它运行于RTSS环境中,随数控系统同时启动,二者相互协作,共同完成对机床的控制功能。运行系统主要是解释执行PLC程序的逻辑关系,对输入输出的数据进行存储和将开关量输出给机床等。软PLC运行系统的好坏,直接关系着开放式数控系统的性能,因此下文将详细的阐述软PLC运行系统的关键技术。

3 软PLC运行系统关键技术研究

3.1 软PLC运行系统工作原理

因为软PLC运行系统需要根据数控系统的各种逻辑指令快速做出响应,为了能够实时检测到数控系统或外设传递的信号,软PLC运行系统的工作方式必须是基于扫描周期的,其工作原理如图5所示。在每一个扫描周期内,软PLC运行系统首先采集外设的输入状态,同时将其存入到输入映像区并刷新输入映像区的数据;然后,读取输入映像区的数据,解释执行中间代码,同时把运算结果写入到输出映像区,并刷新输出映像区。最后,进入输出信息处理阶段,将输出映像区的数据输出到I/O板卡的各个输出端口,进而控制机床的各种逻辑指令。

3.2 软PLC运行系统逻辑功能软件的实现

3.2.1 存储模块的实现

存储模块主要是存储开发系统生成的指令表程序和运行系统中的解释模块以及I/O模块产生的数据,因此将存储模块分为程序存储区和数据存储区两个部分。而数据存储区作为各种实时数据的载体,直接关系到运行系统的性能,是其他各个模块的基础。

1)程序存储区用来存放编译后生成的中间代码,程序存储区会随运行系统的开、关情况调用相应的函数来申请和释放内存。

2)数据存储区主要包括输入/输出数据的存储、辅助继电器数据的存储和指令、功能块逻辑运算结果的存储。

为了使软PLC运行系统能够正确的翻译中间代码的逻辑关系,在一个扫描周期内,输入的数据必须保持不变,因此必须将输入采样阶段采集的输入状态数据保存在一块内存中,并将其整体放在程序的数据采集模块的位置,供程序解释执行阶段调用,在其他任何阶段,无论输入状态是否改变都不允许改动内存中的值,除非下一采样阶段的到来。对于输出继电器和辅助继电器的状态会随程序执行过程而改变,也需要内存来存储继电器的状态。因此建立各类映像区是十分必要的,建立映像区可以采用数组、链表或申请内存等多种方法,但是考虑到映像区应该地址紧凑,查找、存储方便,因此采用了最简单的数组的形式建立了输入、输出映像区,达到了使程序结构简单,便于维护的目的。

PLC程序中经常会出现指令的串、并联等多分支电路的情况,在分析这些程序的逻辑关系时,会产生很多中间数据。如果只有运算结果存储器,当对下一指令块或下一分支的运算结果进行存储时,会擦除运算结果寄存器中存储的上一结果,从而造成了逻辑关系的断裂。为了解决这一问题,建立了逻辑堆栈,其堆栈结构如图6所示。endprint

PLC程序中可能会有多个分支,此处以两个逻辑块并联作为输入加以说明,程序会先计算第1个分支的结果,并将运算结果从运算结果寄存器压入堆栈栈顶,栈中原有的数据依次向下移动一层。然后计算第2个分支的结果,此时第2个分支的结果存储在运算结果寄存器中。为了完成两个分支的逻辑运算,需要将栈顶的数据出栈与运算结果寄存器中的数据进行运算,判断逻辑通断与否。栈顶的数据出栈后,逻辑堆栈中的数据依次上移一格,这样经过一进一出,栈中原有的数据得以恢复。 堆栈实现的部分代码如下,通过堆栈中的Point来控制堆栈中的数据移动。

3.2.2 程序解释模块的实现

程序解释模块是软PLC运行系统的核心,此模块负责对指令表的解释。指令表主要由操作码和操作数构成,通常基本指令有一个操作数,功能指令有两个或多个操作数,因此设计的指令表结构如下:

为了满足软PLC系统的实时性的要求,利用RTX提供的定时器功能,在RTSS环境中创建定时器线程,定时周期可以根据需要自由设置。为了降低CPU的负担,提高软PLC运行的效率,必须合理的设计程序解释模块的执行过程。在每一个扫描周期内,对指令表从上到下,逐行扫描,根据扫描到的关键字执行相应的程序,可以很好并且高速的完成对指令表的翻译。在一个扫描周期内程序解释模块运行的流程如图7所示。

在一个扫描周期开始时,程序会到输入映像区读取输入的数据,带着输入的数据,程序会对指令表进行扫描。根据指令表中的操作码(Order)和操作数(Name,CodeF)进行关键字匹配,利用这些关键字,定位到相应的解释程序,并把计算结果写入到输出映像区中。当扫描到结束指令END时,会跳出此次扫描循环,并将输出映像区中的数据进行输出,完成一次扫描周期的任务,随后进行下一扫描周期的循环。

在对指令表进行解释时,指令表的每一条语句,都有唯一的一段C++程序与之相对应。对应的这段程序除了对数据的存储外,最主要的功能就是指令表逻辑关系的处理。是否能够快速而又准确的进行逻辑处理,是衡量软PLC系统的重要指标。对指令表逻辑关系处理的方式有很多种,例如可以利用类似内存寻址加堆栈的方式进行逻辑处理,但是这种方法比较复杂,需要逐级找到对应的地址,效率比较低。而采用幂位运算加堆栈的方式,可以快速而又方便的实现指令表逻辑关系的处理。所说的幂位运算是指根据操作数中的CodeF与2进行幂运算再与输入、输出映像区中的数据进行位运算,根据位运算的结果来判断逻辑的通与断(0或1),最后将逻辑结果放入到堆栈中。

3.2.3 I/O模块的实现

开放式数控系统中的软PLC,在具体逻辑控制过程中,控制的主要是外部I/O设备,I/O模块是机床硬件与软PLC运行系统之间的桥梁。I/O模块一方面负责采集硬件输入的状态并将其存入输入映像区中,另一方面负责根据输出映像区中的数据,控制I/O板卡输出端口位的状态。为了实现控制机床逻辑功能的目的,将输入/输出映像区中数据的各个位与I/O板卡输入/输出位进行了一一映射,这样就提高了软PLC运行系统的效率和适应性。将输入/出映像区以字(Word)为单位划分成若干段,因为通常I/O板卡的每个端口对应8个位,所以I/O板卡的两个端口对应输入/出映像区中的一个字,输出映像区第一段与I/O板卡输出端口位的映射关系如图8所示,输入映像区与输入端口位映射关系与此相同。

大部分I/O板卡以动态链接庫的形式向用户提供了各种函数,利用这些函数,通过映射关系,运行系统就可以快速的读写I/O板卡端口位的状态,从而控制机床的各种逻辑指令,其工作流程如图9所示。

3.2.4 通信模块的实现

通信模块主要用来实现软PLC模块、人机界面模块(human machine interaction,简称HMI)和软CNC模块之间的通信。因为开放式数控系统是基于模块化的,因此各个模块是不同的进程,为了实现各个进程之间的数据交换,必须建立良好的通信机制。在同一台工控机上,实现不同进程之间的通信有很多种方法,主要包括邮槽、剪贴板、命名管道和共享内存等。但是,邮槽以广播的形式进行通讯,最大的消息长度不能超过424字节;剪贴板通信需要拷贝数据,造成内存浪费;命名管道通讯方式简单,但是不能同时在多个进程之间通信;共享内存采用文件映射的方式进行多进程之间的通信,进程可以直接读写内存,不需要拷贝数据,但是只能用于同一台工控机上的不同进程之间的通信。综合以上的利弊关系,选用共享内存的方式,进行软PLC模块、软CNC模块和人机界面模块之间的通信,利用此方式在同一台工控机不同进程间通信效率高,实时性强,满足了数控系统的需求。软PLC模块、软CNC模块和人机界面模块之间通过共享内存进行通信关系如图10所示。

4 软PLC系统功能测试

该软PLC测试平台的硬件包括研华工控机+研华PCI1758UDIO板卡+研华39100接线端子+洛克电子控制面板+拓璞五轴数控铣床床体。软件平台为Windows +RTX8.1。利用VC6.0设计的开发系统界面如图11所示,当点击梯形图或指令表按钮时,会出现梯形图或指令表编程界面,在编好的梯形图或指令表程序上进行双击,会弹出程序编辑界面,如图11 a)、b)所示。当点击模拟仿真按钮时,会弹出仿真界面,可以对编好的程序进行仿真,如图11 c)所示。当点击写入数据按钮时,会将指令表程序下载到运行系统。在四个按钮之间相互切换,除了完成指定的功能切换外,还会进行编译,对编好的PLC程序中存在的错误进行提示,如图11 d)所示。

设计的机床控制软面板如图12所示,当按下软面板中的逻辑按钮时,按钮上面的指示灯会根据实际的工作状态进行显示,同时更新硬面板上面指示灯的状态。同样当按下硬面板上的某个逻辑按钮时,软面板上的指示灯也会根据实际的工作状态进行更新,达到了软硬面板同时控制和显示工作状态的要求。endprint

利用图13所示的控制机床冷却液的程序,可以控制机床冷却液的开、关。当按下冷却液按钮时,冷却液打开,冷却液指示灯亮;当再次按下冷却液按钮时,冷却液关,同时冷却液指示灯灭。对机床的控制效果如图14所示。

5 结 论

本文利用VC6.0对解释型软PLC进行了开发及设计。在分析了软PLC的系统构成和工作原理的基础上,对软PLC系统进行了合理的划分,并设计了开发系统的主体框架。同时,精心的设计了解释型软PLC运行系统的工作方式和数据存储方式,采用了利用解释原理,通过逐级扫描和关键字匹配的方法来开发运行系统。实现了对源语言程序的直接解释,省去了提前编译成目标代码的繁琐过程。最后经过实验验证,得到了与传统PLC相同的控制结果,证明了这种方法的可行性。同时,开发的软件系统结构开放,使用方便,为今后的进一步完善软PLC功能和实现良好的控制特性奠定了基础。

参 考 文 献:

[1] SUKHWAN Suh, Seong Kyoon Kang. Theory and Design of CNC Systems [M].London: Springer Series in Advanced Manufacturing, 2008:353-393.

[2] 周祖德,魏仁选,陈幼平.开放式控制系统的现状、趋势与对策[J].武汉:中国机械工程,1999,1(10 ) : 1090-1093.

[3] 李茂月.开放式智能数控系统及其在线控制相关技术研究[D].哈尔滨:哈尔滨工业大学,2012:1-4.

[4] 阳俊将.面向数控系统的软PLC的研究与设计[D].广东:华南理工大学,2012: 6-8.

[5] 李东滨,陈欣.精密扁钢精整设备的 PLC 控制[J].哈尔滨理工大学学报,2009,14(4):25-27.

[6] ZHOU Qingguo, YANG Xuhui. An Embedded Control System Designed Based on Soft PLC[J]. Lecture Notes in Electrical Engineering,2014:115-120.

[7] 于恩超, 杜莹. 对软PLC技术的发展趋势及前景展望[J]. 石家庄:科技风, 2014: 253.

[8] 李万军. 软PLC体系结构分析及工程应用[D]. 西安: 西安电子科技大学, 2007:6-8.

[9] PRAHOFER H, SCHATZ R, WIRTH C, et al. A Comprehensive Solution for Deterministic Replay Debugging of SoftPLC Applications[J]. IEEE Transactions on Industrial Informatics, 2011, 7(4): 641-651.

[10]孙欣. 数控系统软PLC的研究与开发[D]. 大连: 大连理工大学, 2007: 3-5.

[11]毕辉, 程良鸿. 关于软PLC技术的研究及发展[J]. 机电产品开发与创新, 2006, 19 (6): 118-119.

[12]王新华, 周峰等.软编译系统的开发与实现[J]. 北京工业大学学报, 2008, 34(11): 54-56.

[13]王飞, 裴海龙. 开放式数控系统中软PLC系统的开发及应用[J]. 设计与研究, 2010( 8) : 73-76.

[14]喻赛花. 基于Windows的软PLC系统开发[D]. 南京: 南京航空航天大学, 2011: 40-46.

[15]冯霄. 基于Windows CE的嵌入式软PLC研究与开发[D]. 合肥: 合肥工业大学, 2012: 5-48.

[16]张红香. 面向数控机床的嵌入式软PLC开发系统的研究[D]. 兰州: 兰州理工大学, 2014: 22-49.

[17]高进. 软PLC运行系统的研究[D]. 成都: 西华大学, 2010: 1-3.

[18]马雄波.基于PC机的开放式多轴软数控系统关键技术研究及实现[D] .哈尔滨:哈尔滨工业大学,2007:14-20.

[19]张蕾.基于RTX的全软件數控系统研究[D].秦皇岛:燕山大学,2006:810.

[20]谢劲松,梁宏斌.五轴数控铣床软PLC控制系统的研究[J].组合机床与自动化加工技术,2014(3):82-85.

(编辑:温泽宇)endprint

猜你喜欢
实时性数控系统开放式
基于YOLOV5与Raspberry PI及Arduino的视觉开放式智能机器服务平台
大型开放式网络课程中游戏元素分析
海德汉ITNC530系统的Q参数循环的应用
计算机控制系统实时性的提高策略
可编程控制器的实时处理器的研究
基于B/S的实时用户行为检测管理系统设计与实现
华中数控在CIMT 2015上展示3C钻攻生产线
晨星开放式基金业绩排行榜
基于Windows的线接触加工数控系统实时性研究
高中物理实验室开放式教学与管理的探讨