基于深度遍历的S7-300系列可编程控制器梯形图程序自动生成算法研究

2013-07-25 07:17袁佳溢路林吉
微型电脑应用 2013年1期
关键词:梯形图流程图程序

袁佳溢,路林吉

0 引言

可编程逻辑控制器即是我们熟悉的PLC, PLC的广泛应用取代了传统的继电器,接触器等搭建的硬件电路。PLC 程序设计中,最常用的编程语言就是梯形图。但随着工业自动化生产的发展,从编程构思到写梯形图程序的工作量越来越大,编程人员的工作量很大,严重影响工作效率。

本文提出一种解决方案,梯形图生成软件,即编程人员只要根据规则给出系统的流程图,硬件的地址表输入到该软件,梯形图就能自动生成。在这个转换的过程中, 用树的数据结构来表示梯形图中各个模块之间的逻辑关系, 并对其进行深度遍历。根据这些逻辑关系,并将模块的内容转化成对应的PLC符号, 即可生成对应的梯形图。

1 设计思想

在PLC梯形图自动生成系统中,首先需要创建一张PLC输入/输出地址表。每一个PLC的输入/输出点都有对应的简洁的文字说明。在流程图中即以文字说明来代表对应的PLC输入输出点。流程图作为整个PLC梯形图自动生成系统的重要输入信息,它是由一系列的模块组成。

这些模块是将整个工艺流程分成若干步简单的动作,而每步动作就是流程图中的一个模块。对该模块的描述要用到输入/输出地址表中对于的输入/输出点的说明,如此一来,就能根据模块的文字描述将模块的内容转化为对应的PLC符号和地址。在将整个流程分解成若干动作模块,又将这些模块的描述定义好以后,还要将这些模块通过计算机较容易识别和处理的数据结构将这些模块组合起来才能构成流程图。

在此选择用树形结构来组织所有的动作模块从而构成流程图,树是一种方便插入和查找的数据结构,比较适合流程图的要求。然而计算机读取流程图时只是逐个读取动作模块,并无法识别模块间的逻辑关系。所以要设计算法帮助计算机识别各个动作模块之间的关系,还原成树形数据结构储存。

随后还要对流程图进行深度遍历,方法是从树的树根出发,在访问了任意一个与最靠左的且未被访问的子节点V1之后,再从该节点V1出发,访问V1最靠左的且未被访问的子节点V2,然后再从V2出发进行如上所述访问,直到该结点没有子节点为止。然后退回到尚有相邻结点未被访问过的节点,再从该节点出发,重复上述搜索过程,直到所有被访问过的顶点的邻接点都被访问过为止。树的这种遍历过程就称为树的深度优先遍历。动作模块通过深度遍历后产生的先后顺序和实际梯形图的执行顺序是一致的。根据深度遍历的结果,将动作模块逐个转化为对应的梯形图符号即可自动产生梯形图程序。

2 算法实现

对一个“机器人汽车焊接生产线演示”进行模拟。本实例的PLC是西门子S7-300系列。首先将建立一张I/O硬件地址表,表1所示:

表1 I/O硬件地址表

随后,根据实际的工作流程,编织一张流程图,该实例的流程图,如图1所示:图1中各节点的描述都采用了和IO地址表中的描述一

图1 输入流程图

致,并且明确了是输入还是输出。如果有延时还注明了延时时间。常闭表示模块的电气梯形图符号是常闭形式。并且每个节点的左上角都有一个编号,根据这个标号就可以将输入的节点构造成树形结构。流程图结构如下:

随后对该树形结构进行深度遍历,程序如下:

程序运行后,遍历的顺序是(节点编号):0.1,1.1.0.1,1.2.0.1,1.3.0.1,1.4.0.1,1.5.0.1,1.6.0.1,1.7.0.1,2.1.1.1,3.1.2.1,3.2.2.1,3.3.2.1,4.1.3.1,4.2.3.2,4.3.3.3,5.1.4.1,6.1.5.1。

将节点的遍历顺序,结合刚才的节点关系对应表就可以将流程图以一种类似于梯形图的格式表示出来。深度遍历顺序中相邻的两个节点如果是父子关系,则这两个节点是串联排列,如果是右邻兄弟节点,则两个节点是并联。于是输入到计算机的流程图被处理成,如图2所示:

图2 经深度遍历转换后的流程图

将每个模块对应的梯形图符号一一替换掉模块,替换规则如下:如果模块是输出,则用符号“”替换,如果模块为方形且是输入,则用“”替换,如果模块是菱形且是输入,则用“”替换,如果模块写有计时,则用定时器替换。产生的梯形图程序,如图3所示:

图3 由算法生成的梯形图

3 总结

本文介绍的逻辑可编程控制器的梯形图程序自动生成系统, 采用了图形化的输入方式,将工程技术人员的设计思想通过流程图的方式输入计算机,经过算法将输入的流程图转化成树形结构储存,再通过深度遍历算法将其转化成类似梯形图的结构。最后用梯形图符号替换掉各个动作模块,生成PLC梯形图程序。该系统大大节约了输入梯形图程序的时间,可以使工程技术人员将精力放在程序的设计和优化上,从而提高了编程的效率和效果。

[1]严蔚敏, 吴伟民. 数据结构[ M ]. 北京: 清华大学出版社,1997: 118-158.

[2]图解西门子S7-300/400PLC编程技术 .[M]中国电力出版社,2010.

[3]深入浅出西门子S7 300PLC .[M]北京航空航天大学出版社,2004.

[4]孙睿,朱劲,滕建忠. 基于块生长观点的PLC指令表向梯形图转化算法[J]电脑知识与技术, 2008, (33) .

猜你喜欢
梯形图流程图程序
试论我国未决羁押程序的立法完善
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
PLC编译功能的实现
专利申请审批流程图
专利申请审批流程图
数控机床梯形图故障设置方法研究
一种可编程逻辑控制程序的竞态检测方法
创卫暗访程序有待改进
PLC梯形图程序设计技巧及应用