关于PLC梯形图到指令表转换算法的研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文章编号:1009-2552(2012)06-0075-04中图分类号:TP273+.5文献标识码:A
关于PLC梯形图到指令表转换算法的研究
阳俊将,黄道平,刘少君
(华南理工大学自动化科学与工程学院,广州510640)
摘要:针对只有一条左侧母线且各个元器件及类型独立的梯形图,提出一种由可编程逻辑控制器(PLC)梯形图生成指令表的算法。在该算法中使用虚结点,先将梯形图转换为AOV图,然后根据结点类型和它们在AOV图中的拓扑排序将梯形图转化为指令表。该算法是一种能将任意复杂的梯形图转换为指令表的通用算法,它已经成功地应用于软PLC的设计。
关键词:AOV图;指令表;可编程逻辑控制器PLC;梯形图
Research on conversion algorithm for ladder diagram
to instruction list in PLC
YANG Jun-jiang,HUANG Dao-ping,LIU Shao-jun
(School of Automation Science and Engineering,South China University of Technology,Guangzhou510640,China) Abstract:The paper presents an algorithm for generation of instruction list(IL)code from programmable logic controllers(PLC)ladder diagram(LD)based on treating LD as a tree with single root left bar and treating LD component separately in accordance with their type.This algorithm uses virtual nodes.The LD is presented as an activity on vertex(AOV)diagram.Then it establishes activity on a vertex to transform LD to IL.The algorithm for transformation from any complex LD to IL.It has been applied in the design of a software PLC and successfully complied to IL.
Key words:AOV diagraph;instruction list;programmable logic controllers;ladder diagram
0引言
可编程控制器(PLC)起源于上世纪60年代,它是一种数字逻辑设备,早先它被用来替换自动化工业领域的继电器逻辑控制系统。最初的编程语言是梯形图,现在有多种初级编程语言,指令表就是其中一种用于嵌入式平台且能直接转化为二进制代码的汇编语言。IEC61131-3国际标准旨在统一规范PLC的编程语言,梯形图和指令表都包含在该标准内[1]。
本文提出一种从梯形图转化为指令集的算法,它的难点在于将梯形图网络转化为拓扑网络,因此采用双堆栈深度优先搜索算法遍历梯形图树。双堆栈深度优先搜索算法使用虚结点,也就是合并点和分裂点,并利用梯形图和对应指令集的语义关系来遍历梯形图并将梯形图转化为指令集代码,在此之前需要一个将梯形图网络转化为容易被该算法遍历形式的解析器。该算法简单但是能高效地生成代码。它不需要将梯形图拓扑图转换为其它的树,输入梯形图就能输出指令集代码。
1图的概述
图是由数据元素的集合及数据元素间的关系集合组成的一种数据结构:Graph=(V,E),其中V= {x|x∈某个数据对象}是数据元素的集合,一般被称为顶点(vertex)。E={(v,w)|v,w∈V}或E= {<v,w>|v,w∈V&&Path(v,w)}是数据元素之间关系的集合。图有不同的种类:有向图和无向图,加权图和不加权图,有环图和无环图。一个图可由矩阵M和它的邻接矩阵或邻接表表示[2]。
在图中,若顶点对(v,w)是无序的,则称此图为
收稿日期:2012-01-13
作者简介:阳俊将(1983-),男,硕士研究生,主要从事软PLC系统的研究。
无向图(undirected graph )。若顶点对<v ,
w >是有序的,则称此图为有向图(directed graph )。顶点对<v ,w >称为从顶点v 到顶点w 的一条有向边(又
称为弧),其中v 称为有向边<v ,
w >的始点(弧尾)。w 称为有向边<v ,
w >的终点(弧头)。有向图中,以顶点v 为始点的有向边的条数称为顶点v
的出度,记为OD (v )。以顶点v 为终点的有向边的条数称为顶点v 的入度,记为ID (v );有向图中顶点v 的度等于该顶点的入度与出度之和:TD (v )=ID (v )+OD (v )。
一个无环的有向图称为有向无环图,简写为
DAG (directed acyclic graph ),像图顶点的拓扑顺序
为v1,…vi ,vj ,…,vn 且i <j 这种优先约束顶点的拓扑结构。
2梯形图及其表示
图1所示的为梯形图,它的详细语法分析见文献[3]。梯形图是由电路理论发展而来的,因此它的语法规则同电路相近,如电路中二极管正向电流方向不允许有反向电流,梯形图则规定左侧线为电源位置,电流方向从左到右
。
图1PLC 梯形图语言
梯形图语法简化了图的分析,由梯形图语句直
接转化产生的AOV 图如图2所示。以左侧起始线作为源结点,这样源结点就可以唯一确定,然后可以从左侧起始线开始遍历整个图。一个图中可以有若干个尾结点,尾结点的出度为零,入度为一;源结点的入度为零,出度大小由需要决定;其它结点的出度
和入度均为一;虚拟结点用来表示平行网络中的交
叉点,虚拟结点的出度和入度都可能大于等于一。大多数算法都是基于将梯形图转换为二叉树,然后用二叉树遍历算法如后序遍历算法,其他的算法则用二端串并联和二叉分解树。在二叉树中,所有的结点都是叶子结点。左侧起始线为二叉树的
根
图2梯形图的AOV 图