APP下载

软PLC梯形图到指令表的转换方法研究

2018-03-09王立春张凯

科技创新与应用 2018年7期
关键词:梯形图

王立春+张凯

摘 要:软PLC是一种新型的控制技术,即利用软件实现传统PLC的功能。梯形图转换指令表是软PLC技术中一个关键点,文章通过AOV和拓扑排序、AOV和串并联扫描、正向深度优先扫描、二叉有向图四种方法实现梯形图到指令表的转换,同时介绍四种方法优缺点。

关键词:软PLC;梯形图;指令表;转换算法

中图分类号:TM571.6 文献标志码:A 文章编号:2095-2945(2018)07-0080-03

Abstract: Soft PLC is a new type of control technology, which uses software to realize the function of traditional PLC. The conversion of ladder diagram into instruction table is a key point in soft PLC technology. In this paper, four methods, i.e., AOV and topological sorting, AOV and series-parallel scanning, forward depth-first scanning and binary digraph, are used to realize the conversion from ladder diagram into instruction table. At the same time, the advantages and disadvantages of the four methods are introduced.

Keywords: soft PLC; ladder diagram (LAD); instruction list; conversion algorithm

引言

近年來,随着控制技术向网络化、智能化、分散化以及开放式控制发展,传统的PLC技术逐渐暴露出其不足之处:软硬件体系结构封闭、指令集固定;不同厂家的PLC产品兼容性差;编程语言和指令系统各不相同,给使用人员带来很多不便[1]。随着信息技术的迅速发展,特别是PLC的国际编程标准IEC61131-3的制定,软PLC技术应运而生,它因其功能强大而越来越多得到企业和研究人员的重视。西门子、罗克韦尔、三菱、艾默生等公司都推出软PLC相关产品,国内外很多高校和科研机构也在研究这项技术[2]。

相对于传统PLC,软PLC具有开放的体系结构、强大网络通信能力和快速数据处理分析能力,同时遵循国际工业标准[3]。软PLC系统的体系结构由开发系统和运行系统组成的,编译器是软PLC开发系统中最重要的一个模块,具有承上启下的作用。用户编写的梯形图程序只有通过编译器进行编译,才能被运行系统识别,进而控制设备运行。梯形图作为图形化的语言,具有直观、清晰、易于电气技术人员掌握和学习优点,但却不能被PLC的CPU识别。然而,指令表是一种汇编风格的编程语言,具有高效、执行速度快的优点,易于底层的运行系统解释执行。因此要想实现编译功能,研究梯形图向指令表转换的算法是非常有必要的[4]。

1 基于AOV图的转换算法

AOV有向图是由顶点和弧构成的,梯形图程序是由若干图元和线段按照一定规则相互连接起来的。某些梯形图到指令表的转换方法需要将梯形图转换成AOV有向图。通过分析梯形图程序,我们可以把梯形图中的图元看作顶点,图元与图元之间的连线看作有向图中的弧,这样就可以得到梯形图的AOV有向图结构,从而确定各元件后继和前驱关系。梯形图映射AOV图时,需要在母线处和其他联结加入虚顶点[6]。根据上述方法将如图1所示的梯形图抽象成AOV有向图,AOV图中的1、2表示虚顶点。

1.1 AOV和拓扑排序转换算法

拓扑排序指的是在有向图中,寻找一个线性序列(V1V2V3…Vn),其中从顶点Vi到Vj有一条路径,序列中顶点Vi必在Vj之前[7]。拓扑排序算法的过程如下:

(1)在有向图中选择一个入度为0的顶点,由于该顶点没有任何先决条件,输出该顶点。

(2)从图中删除所有以它为尾的弧。

(3)重复执行(1)和(2),直到找不到入度为0的顶点,拓扑排序完成。

拓扑排序是基于AOV为前提的,AOV有向图常用存储结构有十字链表、邻接矩阵、邻接表三种,但由于梯形图是动态编辑的,而邻接矩阵是静态方法,效率较低,而十字链表建立过程比较复杂,我们采用邻接表的存储方式[8]。

根据拓扑排序算法,选择入度为0的顶点并将顶点输出,同时该顶点所有后继结点入度值减1。将输出的顶点存放在一个临时的栈中,当所有顶点输出以后就得到了图元的地址值。图2为虚顶点1输出过程中,AOV图顶点变化过程和临时栈的变化过程。由于AOV的图中顶点有虚顶点,因此需要除去临时栈中的虚顶点。当所有虚顶点去除之后,在所有地址值前面添加相应操作符即可得到完整指令表结构[9]。

1.2 基于AOV和串并联扫描法的转换算法

串并联扫描是为了解决AOV图不能反映元件间的逻辑关系,通过对AOV图进行深入扫描确定AOV图中各元件间串并联关系[10]。串并联扫描分过程如下:

(1)对AOV进行扫描,确定并联或者串联关系。

(2)对更新的AOV图进行串并联扫描,同样把扫描结果去更新AOV图。

(3)重复执行(1)和(2),直到生成能够清楚反映元件的逻辑关系的逻辑树。

梯形图准换指令表的分为三个部分[11-12]:(1)梯形图映射AOV;(2)对AOV进行串并联扫描,确定逻辑树;(3)对逻辑树进行遍历生成指令表。下面通过一个实例来说明具体如何实现串并联扫描。将AOV图中所有实顶点存入一个向量M中,第一轮扫描,找到第一个元件I0.0与元件I0.1串联,将I0.0和I0.1从向量M中移除,生成逻辑结点串1放入向量N中,同时更新AOV图,如图3。经过第二次串并联扫描,I0.2和I0.3串联,生成逻辑结点串2;经过第三次扫描,I0.5和I0.6串联,生成结点串3;经过第四次扫描,I0.7和I1.0串联,生成结点串4;进过第五次扫描,I0.4和Q0.0串联,生成结点串5,如图4。经过第六次扫描,串1,I1.0和串3并联,生成逻辑结点并1;经过第七次扫描,串2和串4并联,生成逻辑结点并2;经过第八次扫描,并1,并2和串5串联,生成逻辑结点串6,如5图。通过简化生成逻辑树结构,如图6。endprint

2 基于正向深度优先扫描的转换算法

正向深度优先扫描算法是通过正向、深度扫描梯形图存储的双向链表结构,得到指令表方法。“正向”就是梯形图程序第一行第一列的输入结点开始,从左到右,从上到下顺序对程序进行读取扫描。深度优先是按照手工翻译思想,先处理深层次支,后处理浅层分支或主路,类似于树的深度扫描[13-14]。具体描述就是,以梯形图的每一个梯级为单位进行从上到下,从左到右扫描,与到并联支路,就转入与当前分支并联的下一行进行扫描,重复执行,一个阶梯扫描完成后,回到原来位置继续向右扫描直到整个梯形图程序扫描结束。如果没有出现并联情况,就按照从左到右扫描处理。通过扫描构建成树的结构,最后通过遍历实现梯形图到指令表转换。

图7举例展示处理一个梯形图程序时扫描过程和顺序。按照图中箭头和数字标识,从梯形图第一行第一列开始扫描,首先扫描图元I0.0,发现右下侧右并联分支,转向下一行,对下一行进行扫描发现图元I0.1,扫描I0.1右下没有并联分支,此阶梯扫描完毕。回到原来位置接着从图元I0.0后面向右继续扫描发现图元I0.2,图元I0.2右下有并联分支转向下一行,对并联支路扫描遇到图元I0.3,I0.4,发现I0.3没有向下的并联支路,返回主路图元I0.2后面继续向右扫描,遇到图元I0.5发现图元没有并联支路,继续向右扫描遇到图元Q0.0,继续扫描发现右母线此网络程序扫描结束,跳转下一个网络,重复此过程直到整个程序结束。例子中的梯形图转换指令表程序段,如图7。

3 基于二叉树有向图的转换算法

梯形图转换指令表时,常采用一种方法就是将梯形图的存储为二叉树有向图形式,通过一次遍历就可以得到指令表[15]。梯形图转换指令表核心问题就是需准确表达梯形图图元的位置关系与逻辑关系(串并联关系)。利用二叉有向图用左子树表示串联,右子树表示并联,这样就可以表达出图元的逻辑关系[16,17]。图8给出了一个典型梯形图程序,将梯形图中的每个图元看做一个节点,按照每个网络进行转换,网络之间通过虚拟节点实现连接。转换后的二叉有向图如图8。

4 结束语

本文介绍了几种梯形图向指令表转换的算法,AOV和拓扑排序方法能够直观方便,对于复杂串并联梯形图效率不高;AOV和串并联扫描转换算法每次可以扫描归并多个元件效率高,但扫描过繁多;正向深度优先扫描算法准换准确率高但复杂梯形图需要使用递归调用方法;二叉树有向图方法简单,但对逻辑错误查找和梯形图规范的检查比较困难。

参考文獻:

[1]周雷.基于PC的软PLC开发系统的设计与实现[D].重庆:重庆大学,2009.

[2]毕辉,程良鸿.关于软PLC技术的研究及发展[J].机电产品开发与创新,2006,6.

[3]李成勇.软PLC技术研究与开发[D].四川:西华大学,2008.

[4]吴亚山,陆阳.软PLC梯形图编辑与指令表生成方法研究[J].合肥工业大学学报:自然科学版,2015,33(10):1353-1357.

[5]朱战立.数据结构-使用C++语言[M].西安:西安电子科技大学出版社,2005.

[6]冯光,夏清国,裴远方.PLC梯形图向AOV图的一种转化算法[J].航空计算技术,2009,39(2):109-112.

[7]段恩泽.数据结构(c#)[M].北京:清华大学出版社,2006.

[8]韩江,段少磊,夏链,等.软PLC梯形图向指令表转换的算法研究与实现[J].组合机床与自动化加工技术,2013,11(11):61-64.

[9]姚远,丑武胜,陈友东,等.软PLC编程开发系统的设计和实现[J].组合机床与自动化加工技术,2006,6(14):14-17.

[10]邹莉.软PLC梯形图向指令表转换新算法的研究与实现[J].聊城大学学报:自然科学版,2013,3(26):105-110.

[11]石锐,周雷,杨正益.软PLC梯形图到语句表转换新策略的研究[J].计算机工程与应用,2010.

[12]常明伟.PLC软件开发平台的设计与实现[D].天津:天津大学,2009.

[13]郭书杰.软件PLC梯形图编程系统的研究与实现[D].沈阳:中国科学院,2010.

[14]章德平.软件PLC开发平台的设计与实现[D].武汉:武汉理工大学,2007.

[15]黄云鹰,张浩,樊留群.软PLC梯形图可视化编辑软件C++实现[J].机电一体化,2006,5:52-54.

[16]苏淑芝.软PLC梯形图编程系统的研究与实现[D].广州:华南理工大学,2012.

[17]仪维.软件化PLC平台的研究与开发[D].山东:山东大学,2005.endprint

猜你喜欢

梯形图
在PLC梯形图教学上对初学者的几点建议
PLC梯形图编程系统应用分析
全自动洗衣机的PLC控制
工业污水处理PLC控制教学项目设计
可编程控制器控制环节的研究
基于单片机开发可编程控制器的研究
PLC编译功能的实现
工矿机车GK1F、GK1C柴油机调速控制
S7—200PLC基本编程教学案例
数控机床梯形图故障设置方法研究