CN102354144B - 一种将梯形图转化成plc程序指令的方法 - Google Patents
一种将梯形图转化成plc程序指令的方法 Download PDFInfo
- Publication number
- CN102354144B CN102354144B CN 201110263395 CN201110263395A CN102354144B CN 102354144 B CN102354144 B CN 102354144B CN 201110263395 CN201110263395 CN 201110263395 CN 201110263395 A CN201110263395 A CN 201110263395A CN 102354144 B CN102354144 B CN 102354144B
- Authority
- CN
- China
- Prior art keywords
- summit
- parallel connection
- expression formula
- connection type
- digraph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Abstract
本发明涉及一种将梯形图转化成PLC程序指令的方法,其包括如下步骤:1)利用有向图表示梯形图的拓扑结构;2)利用深度优先搜索的方法对转置图GL T遍历,将并联型顶点和线圈顶点的拓扑排序关系保存到队列Q;3)对并联型顶点依照有向图GL的连接关系使用广度优先搜索,同时对其邻接的串联型顶点进行深度优先搜索,生成有向图GL的整条串联型通路上的AND表达式和并联型顶点的OR表达式;4)生成并联型顶点的最大合并项的最终表达式;5)利用Q对连接关系图Gp进行广度优先搜索,计算出相对应并联型顶点的OR表达式并验证,最后将最大合并项构造成AND表达式形成最终结果;6)判断队列Q’是否为空;7)对起始顶点进行处理。本发明可以广泛应用于将梯形图转化成PLC程序指令的过程中。
Description
技术领域
本发明涉及一种生成程序指令的方法,特别是关于一种将梯形图转化成PLC程序指令的方法。
背景技术
可编程逻辑控制器(Programmable Logic Controller,PLC)是工业控制领域最为常用的通用控制设备,而梯形图是PLC必备的编程语言。梯形图虽然直观、易于使用,但不能直接在PLC上运行,需要将梯形图转换成指令表才能使PLC按照梯形图的控制逻辑控制被控对象。从梯形图到指令表的转换有许多方法,但到目前为止较好的方法是将梯形图转换成二叉树或某种与树类似的数据结构,然后利用一些规则和一些简单线性数据结构,如栈或队列,反复对上述树形结构进行遍历,从中筛选出必要的与、或项并保存到线性数据结构中,最后将数据项连接成最终的表达式,从而完成整个转换,其中这些表达式是由指令表中的指令构成的。
但是上述方法存在以下缺点:1、从梯形图到树形结构的转换比较复杂,必须借助辅助顶点才能完成,以至于生成的结果缺乏优化。2、对于具有复杂拓扑连接结构的梯形图不能进行转换,所以转换范围受到限制。3、基于树的转换程序结构复杂,而且在转换过程中顶点和边的计算关系比较复杂,分析转换过程的时间复杂度较为困难,这类方法往往缺乏复杂度分析,所以这类方法不易在顶点规模较大时使用。
发明内容
针对上述问题,本发明的目的是提供一种通过交替使用广度优先搜索和深度优先搜索的方法将梯形图转化成PLC指令的方法。
为实现上述目的,本发明采取以下技术方案:一种将梯形图转化成PLC程序指令的方法,其包括以下步骤:1)利用有向图表示梯形图的拓扑结构,并对有向图进行处理;2)利用深度优先搜索的方法对转置图GL T遍历,将所有并联型顶点和线圈顶点的拓扑排序关系保存到队列Q中,且把所有线圈顶点的拓扑排序的顺序再单独地保存在Q’中;3)按照队列Q中并联型顶点和线圈顶点的排列顺序,对队列Q中的每一个并联型顶点依照有向图GL的连接关系使用广度优先搜索,同时对其邻接的所有的串联型顶点进行深度优先搜索,生成有向图GL的整条串联型通路上的AND表达式和并联型顶点的OR表达式,同时生成并联型顶点的连接关系图Gp;4)生成并联型顶点的最大合并项的最终表达式;5)从队列Q’出队一顶点,利用Q对连接关系图Gp进行广度优先搜索,计算出相对应并联型顶点的OR表达式,对每一项OR表达式中的子式进行验证,看其是否达到了最大合并点,直到所有的并联型顶点都生成最大合并项,最后将最大合并项构造成AND表达式形成最终结果;6)判断队列Q’是否为空,如果不为空,继续重复上述5),直至Q’为空;7)对起始顶点进行处理,使其适合指令表的表达方式,将表达式除去不必要的括号以精简该表达式,然后为表达式添加必要的换行符号,使其与指令表的显示方式一致。
所述步骤1)利用有向图表示梯形图的拓扑结构,并对有向图进行处理,处理过程如下:①对有向图的顶点进行初始化;②根据有向图GL的连接关系生成转置图GL T;③根据有向图GL中每个顶点的属性Adj和AdjT,计算出该顶点的度数,区分有向图GL中顶点的类型;④对起始顶点的p属性进行设置。
所述步骤①对有向图的顶点进行初始化,定义顶点Vertex的属性如下:
Vertex={name,type,degree,eand,color,p,pNo,Eor,Adj,AdjT},其中,name为顶点的名称;type为顶点的类型,degree为顶点的度数,eand用于记录串联型顶点AND表达式的生成结果,color为一个辅助属性表示颜色,p是用于记录与某一顶点邻接的并联型顶点,pNo表示并联型顶点在拓扑排序中的次序编号,Eor属性以邻接列表或数组的形式保存并联型顶点OR表达式的生成结果,Adj用于保存有向图的邻接关系;AdjT用于保存转置图的邻接关系。
所述步骤④对起始顶点进行设置,是指对起始顶点的p属性进行设置,如果起始顶点是串联型顶点则通过增大其度数的方法强制将其转换成并联型顶点,设置起始顶点属性p为自己指向自己。
所述步骤3)中的所述Gp图记录并联型顶点、线圈顶点之间的连接以及串联型顶点从属并联型顶点的关系。
本发明由于采取以上技术方案,其具有以下优点:1、本发明由于利用深度优先搜索方法寻找并联型顶点和线圈顶点,且对每一个并联型顶点使用广度优先搜索方法生成有向图GL整条串联型通路上的AND表达式和并联型顶点的OR表达式,同时生成并联型顶点的连接关系图Gp,搜索规模与顶点和边数成线性关系,因此使得分析时间复杂度的工作变得容易,有利于在顶点规模较大时使用。2、本发明对起始顶点的p属性进行设置,由于起始顶点不存在父顶点,则设置起始顶点的属性p为自己指向自己,这样搜索过程不会由于找不到父顶点而无限制搜索下去,因此有利于搜索过程快速的找到搜索的结束点,节省搜索的时间。3、本发明的所有操作都在原图上进行,因此不需要对原有的梯形图的拓扑结构进行大的转换,通过交替使用广度与深度优先搜索的方法,能够对具有复杂拓扑结构的梯形图进行转换,特别是在梯形图中有方向概念并能够与有向图完全对应的情况下,从而简化了转换方法,有效地提高转换的速度。4、本发明由于在转换过程中兼顾了表达式的规模与辅助单元的使用,仅仅在最大合并点式引入辅助单元,没有为每个并联型顶点分别引入辅助单元,这样使转化成的程序指令能够很好地得到优化,虽然转换结果主要针对IEC61131-3标准,但这种方法仍不失一般性,通过修改部分输出形式,可以很容易地将梯形图转换成其他类型的指令表。5、本发明可以通过顶点的属性对图中的顶点类型进行扩展,因此能够使PLC实现更为复杂的功能。本发明可以广泛应用于将梯形图转化成PLC程序指令的过程中。
附图说明
图1是本发明梯形图转换成指令表的总流程图
图2是本发明具有重输入关系的梯形图
图3是图2对应的有向图
图4是本发明具有交叉关系的梯形图
图5是图4的对应的有向图
图6是本发明具有复杂交叉关系的梯形图
图7是图6对应的有向图
图8是本发明实施例的梯形图
图9是图8对应的有向图
图10是本发明对有向图的转置图GL T深度优先搜索的流程图
图11是本发明对有向图GL进行广度优先搜索并生成顶点OR表达式的流程图
图12是本发明从图8生成的Gp图
图13是本发明生成最大合并项及其表达式的流程图
图14是本发明生成最终表达式的流程图
具体实施方式
下面结合附图和实施例对本发明进行详细的描述。
如图1所示,本发明将梯形图转换成PLC程序指令的方法包括如下步骤:
1、利用有向图表示梯形图的拓扑结构,并对有向图进行处理
1)对有向图的顶点进行初始化
如图2~9所示,PLC控制器所使用的梯形图(如图2、图4、图6、图8所示)可以看成是由不同顶点组成的与梯形图相对应的有向图(如图3、图5、图7、图9),本发明利用GL表示这种有向图。
如图3所示,有向图GL中的顶点包括以下类型:起始顶点X0,串联型顶点X1、X2、X3、X4、X5、X6,并联型顶点P1、P2,线圈顶点Y1和终止顶点END。其中,串联型顶点是与梯形图中的继电开关相对应,并联型顶点是表示多个继电开关的某一端连接到同一顶点,线圈顶点是与梯形图中输出线圈相对应。
为了描述这几类顶点以及它们之间的连接关系,同时能够方便且高效的完成从梯形图到指令的转换,本发明将顶点定义为包含多个属性的对象,Vertex(顶点)的数据结构为:Vertex={name,type,degree,eand,color,p,pNo,Eor,Adj,AdjT}。其中,name表示顶点的名称;type表示顶点的类型,包括coil型和非coil型,如果type为“coil”,则顶点的类型为coil类型,即线圈类型,也可称之为输出类型,此类型在梯形图中用圆括号表示,如果type为“非coil”,即为非线圈类型;degree表示顶点的度数,具体描述顶点与输入边和输出边的关系,即射入与射出某一顶点的所有边的数量;eand用于记录串联型顶点AND表达式的生成结果,只有串联型顶点使用该属性;color是一个辅助属性表示颜色,用于记录顶点是否被访问过,如果color为白色则表示该顶点从来没有遍历过;如果color是灰色则表示该顶点是首次访问;如果color是黑色则表示该顶点、该顶点的全部子顶点都已访问过;如果color是蓝色则表示该顶点是最大合并点,利用颜色属性标记可以避免顶点的重复访问和处理;p是用于记录与某一顶点邻接的并联型顶点,它描绘了一种连接关系,即由所有并联型顶点组成的有向图;pNo表示并联型顶点在拓扑排序中的次序编号;Eor属性以邻接列表或数组的形式保存并联型顶点OR表达式的生成结果;Adj用于保存有向图的邻接关系;AdjT列表用于保存转置图的邻接关系。
根据上述对顶点的定义,首先将所有顶点颜色设置为白色;所有顶点的eand设置为空,所有顶点的转置邻接关系表AdjT设置为空。
2)根据有向图GL的连接关系生成转置图GL T,即所有的有向边都与有向图GL相反的图,具体是通过对每个顶点的Adj链表进行遍历,然后提取逆向邻接关系并将其加入到相应顶点的AdjT中。
3)根据有向图GL中每个顶点的Adj和AdjT,计算出该顶点的度数,区分有向图GL中顶点的类型,具体过程为:遍历每个顶点,获得该顶点的Adj和AdjT的值,Adj的长度表示该顶点射出的度数,AdjT的长度表示射入该顶点的度数,Adj与AdjT的长度之和为顶点的度数。本发明定义顶点度数大于2为并联型顶点,顶点度数不大于2为串联型顶点,根据计算的顶点度数可以对串、并联顶点的类型进行区分。
4)对起始顶点的p属性进行设置,在邻接列表中排在有向图GL首位的顶点为起始顶点,排在最后一位的顶点为终止顶点,如果起始顶点是串联型顶点则通过增大其度数的方法强制将其转换成并联型顶点,设置起始顶点属性p,如果该顶点不是起始顶点,p总是指向自己的并联型父顶点,由于起始顶点不存在父顶点,则起始顶点的属性p是自己指向自己,这样有利于搜索过程找到结束点。
2、利用深度优先搜索的方法对转置图GL T遍历,依据括号定理可知:深度优先搜索这一过程可以得到并联型顶点和线圈顶点的拓扑排序关系,将所有并联型顶点和线圈顶点的拓扑排序关系保存到队列Q中,且把所有线圈顶点的拓扑排序的顺序再单独地保存在Q’中。
如图10所示,本发明以其中某一个顶点u为实施例说明整个深度优先搜索的过程,具体如下:
深度优先搜索从右到左依次完成,首先从终止顶点开始,依据深度优先的原则递归地调用搜索子过程对顶点u进行深度优先搜索,将顶点u的颜色属性设置为灰色,查看顶点u的邻接列表是否为空,如果不为空,则从顶点u的邻接列表中取出另一个顶点v,查看顶点v的颜色属性是否为白色,如果是白色,则把顶点v的值赋给顶点u,重新进行深度优先搜索;如果u的邻接列表为空将顶点u的颜色属性设置为黑色,根据搜索结果判断,如果u是并联型顶点或线圈顶点,则将顶点u放置在队列Q中,并在u顶点的pNo属性中记录具体的排序序号,如果u是线圈顶点或并联型顶点并与线圈顶点直接相连则将u加入到队列Q’中,结束对顶点u的深度优先搜索。依照上述过程,递归调用搜索的子过程,直到所有的顶点和路径都被搜索过。
如图9所示,对该有向图GL完成整个深度优先搜索过程的结果如下:Q=[X0,P1,P2,P3,P4,Y1,Y2],而Q’=[P4,Y1,Y2]。
3、按照Q队列中并联型顶点和线圈顶点的排列顺序,对队列中的每一个并联型顶点依照有向图GL的连接关系使用广度优先搜索,同时对其邻接的所有的串联型顶点进行深度优先搜索,生成有向图GL的整条串联型通路上的AND表达式和并联型顶点的OR表达式,同时生成并联型顶点的连接关系图Gp。
本发明定义并联型顶点不能和并联型顶点直接相连,并联型顶点只能和串联型顶点和线圈顶点相连,并且其射入边的另外一端只能是串联型顶点。线圈顶点射入边的另外一端可以是并联型或串联型顶点,而其射出边的另外一端只能是终止顶点。为了形成串联通路上的AND表达式,对有向图GL中的并联型顶点进行广度优先搜索的同时时,还需要对其相邻接的串联型顶点沿着串联型通路进行深度优先搜索,以获得整条串联型通路上的AND表达式,该表达式最终记录在串联通路的端点上,并在广度优先搜索时被收集到Eor的某一项中。Eor是一个数组的结构,数组中的每一项都表示一条串行路径上的AND表达式,最后将所有的AND项OR起来,形成所谓的“串联原子表达式”,它是并联型顶点的最小生成单位。
如图11所示,由于广度优先搜索只针对并联型顶点,如果队列Q为空,则不进入广度搜索进程,如果Q队列不为空,则从Q队列中取出某一个顶点u,调用广度优先搜索子进程对顶点u进行处理。如果顶点u为线圈顶点则结束广度搜索的过程,从顶点u的邻接列表中取出一个邻接顶点v,对v的类型进行判断,过程如下:
①判断v是否为空,如果邻接顶点v不为空,则将v的顶点属性p设置为u,则认为v的父顶点是u,对v的父顶点的u进行标记,并对v进行进一步的判断;如果v为空则结束。
②完成第①后,如果v不为空,判断v是否为串联型顶点,如果是,则需要判断v的父顶点u的类型。当u是并联型顶点,则v.eand被赋值为v.name,同时v.p被赋值为u即对v的父顶点进行标记;当u是串联型顶点,则v.eand被赋值成u.end+“AND”+v.name,同时v.color设置成白色,对v进行遍历,v.p被赋值为u.p,u被替换成v,递归调用深度搜索的子过程对v行深度优先搜索。
③完成①和②后,如果v不是串联型顶点,则判断v是否为并联型顶点,如果是,查看v的父顶点u的类型,如果u是线圈顶点,则u加入到v的Eor列表中;如果u是串联型顶点且u.color是白色,则u.eand两边加上括号,如何u.color是非白色,则维持u.eand属性不变,然后将u加入到v的Eor列表中。
④完成前三步后,如果v不是并联型顶点,进一步判断v是否为线圈顶点,如果是,查看v的父顶点u的类型,如果u是并联型顶点,则u加入到v的Eor列表中,当u是串联型顶点,如果u是串联型顶点且u.color是白色,则u.eand两边加上括号,如何u.color是非白色,则维持u.eand属性不变。然后将u加入到v的Eor列表中。如果v不是线圈顶点,则表明访问出现错误结束对顶点v的遍历。
如图9所示,本发明以有向图GL中的P3顶点为实施例进一步说明上述过程,搜索的过程是从右到左进行,P3有三个邻接顶点,P3所确定的OR表达式为:X5 OR X3 ORX4,其中X5,X3,X4保存在该顶点的Eor列表中,即Eor=[X5,X3,X4]。梯形图中如果串联型顶点彼此相邻,会形成一条串联型通路,该通路上除了首尾顶点与并联型顶点相邻外,其余的彼此相邻的顶点都是串联型顶点。X8到X5的通路就是串联型通路,该通路上包含2个顶点,这两个顶点也是该串联型通路上端点,一端连接到P1,而另一端连接到P3。并联型顶点生成OR表达式的每一项应该是射入边所在串联型通路上的所有串联型顶点的AND表达式,每个串联型顶点的eand属性记录着该顶点所在串联通路上当前的AND表达式,该表达式的类型为字符串。X8.eand=“X8”;X5.eand=“X8 AND X5”。其中的“X8”和“X5”实际上是X8和X5顶点的name属性。如果在X8和X5之间还存在串联型顶点Xi,Xi+1,…,Xi+n并且这些顶点都属于同一条串联型通路,则X5.eand=“X8 AND Xi AND Xi+1AND,…,AND Xi+n AND X5”。而Xi.eand=“X8A ND Xi”;Xi+1.eand=“X8 AND Xi AND Xi+1”。
如图12所示,完成对有向图GL中的所有顶点的搜索,为了使并联型点的连接关系更加清楚,生成完整梯形图的表达式,根据队列Q和队列Q’生成并联型顶点的连接关系图Gp。Gp图记录着并联型顶点、线圈顶点之间的连接以及串联型顶点从属并联型顶点的关系,其连接关系记录在顶点的属性p中,并且属性p只能记录一个顶点。
由广度优先搜索的性质可知,第一次被访问的顶点一定是最远的顶点,即它的跨度最大,因为其他顶点必定通过随后的搜索陆续到达,这时它们必定排在了最远顶点的后面。该顶点的距离指到达指定顶点所经过的边数,边数越小,距离越近,跨度越大,因为其他顶点需要经过额外的边才能到达。为了使串联型顶点不破坏上述性质,可以让串联型顶点在深度优先搜索的过程中传递并联型端点的p属性值,从而使串联型顶点不影响Gp的生成。
如图12所示,其中P3.p=P1,这是因为在对P1广度优先搜索时,首先访问的并联型顶点是P2和P3于是这两个顶点的p属性均为P1。当对P2广度优先搜索时可能再次访问P3,但由于P3的p属性已经被赋值,不能再修改了,所以P3的属性始终是P1。上述性质可以称之为并联型顶点的最大跨度性质,这一性质对于并联型顶点的化简与合并非常重要。最大跨度之内的所有并联型顶点可以合并成一项,该项称为并联型顶点的“最大合并项”,某一并联型顶点的最大跨度所对应的顶点称为“最大合并点”,P3的最大合并点为P1,而P2没有最大合并点,因为它包含在最大跨度之内。最大合并项包括串联型原子表达式以及由它们组成的OR表达式,还包括由上述结果组成的AND表达式。P3的最大合并项为“(X8 AND X5)OR(X2 AND(X3 OR X4))”,P2包含在P3最大跨度内,因此不用计算最大合并项,如下表1所示为完成本步骤,并联型顶点属性生成结果。
表1图9中并联型顶点属性生成结果
Eor | Eor中顶点p属性 | Eor中顶点eand属性 | 对应的并联原子表达式 | |
X0 | [X0] | [X0] | [″X0″] | ″X0″ |
P1 | [X1] | [X0] | [″X1″] | ″X1″ |
P2 | [X2] | [P1] | [″X2″] | ″X2″ |
P3 | [X5,X3,X4] | [P1,P2,P2] | [″(X8ANDX5)″,″X3″,″X4″] | ″(X8AND X5)″″X3 OR X4″ |
P4 | [X6] | [P3] | [″X6″] | ″X6″ |
Y1 | [P4] | [P3] | [″″] | 同P4 |
Y2 | [X7] | [P4] | [″X7″] | ″X7″ |
如图13所示,经过上述步骤每一个并联型和线圈顶点都设定了Eor属性,Eor中的每一顶点的eand属性都是潜在的OR运算项,但这不足以生成该顶点的OR表达式。当Eor中某些串联型顶点具有相同的p属性值时,可以确定这些顶点可以合并成一个简单OR表达式,该表达式称之为“并联原子表达式”。在此基础上还需要合成并联型顶点的最大合并项。此过程首先判断每一项的OR表达式的子式,该子式是指某一串联通路上的AND表达式,即是Eor数组中的某一项。是否到达了最大合并点,然后从顶点的Eor属性中取出一不为空的顶点v,然后判断v.p是否与刚处理过的上一项的同名属性值一致。如果一致,则将已经生成的表达式与“OR v.eand”合并,然后根据表达式是否涉及多个项,决定是否为该生成表达式添加括号;如果不一致,则将当前顶点替换成v.p,然后递归调用整个过程。接下来将递归调用的结果与“AND v.eand”合并。最后还是要根据表达式是否涉及多个项,决定是否为生成的表达式添加括号。当上述过程完成之后,从顶点的Eor属性中再取出一项不为空的顶点,重复上述过程直到Eor属性中无顶点可取。
如图12所示,P3的Eor=[X5,X3,X4],X5对应一个并联原子表达式,X3和X4对应一个并联原子表达式,因为X3和X4的p属性相同,都是P2。通过比对Eor中的每一项可以很容易发现哪些顶点具有相同的p属性,然后将它们提取出来形成一并联原子表达式。由于Eor是顶点邻接列表,所以形成并联原子表达式的每一项实际上是由顶点中eand属性所确定,P3各并联原子表达式分别为“X5.eand”;“X3.eand ORX4.eand”,eand属性的生成由以下条件确定:串联型顶点的名称(name属性)或在串联型通路上有多个顶点时这些顶点名称的AND表达式再加上括号。如果X3.name=“X3”;X4.name=“X4”;X5.name=“X5”;X8.name=“X8”,则X5.eand=“(X8 AND X5)”;X4.eand=“X4”;X5.eand=“X5”。X5顶点所代表的并联原子表达式为“(X8 AND X5)”,而X4与X5的并联原子表达式为“X3 OR X4”。
4、生成并联型顶点的最大合并项的最终表达式
每当得出一个并联原子表达式后,还需查看其p属性是否到达了最大合并点,如果没有到达最大合并点,递归调用上述过程。递归调用的结果是AND关系,即并联原子表达式之间是AND关系,所以递归调用所形成的表达式之间必须用“AND”字符串串起来。递归过程直到到达最大合并点才结束;递归过程并不是Eor中每一项都需要进行,从p属性相同的顶点中选择一个进行递归即可,一般选择首次出现的那一项进行递归。Eor中其后的那些p属性相同的顶点相互之间与首次出现的那一个顶点之间彼此形成OR表达式,然后再与递归结果形成AND表达式。
以图9为例,P3的最大合并项的生成过程是:首先从P3.Eor取出X5,由于X5.p已经到达了最大合并点,所以由X5.p所确定的OR项为“(X8 AND X5)”,它也是X5所对应的并联原子表达式。然后取出P3.Eor的下一项X3,由于X3.p没有到达最大合并点,所以需要递归调用P2的最大合并项的生成过程,即处理过程从P3变成了P2。由于P2.Eor只有一项,并且该项已经到达了最大合并点,所以其递归结果为“X2”。之后X3接着处理,又由于X4与X3的p属性相同,其并联原子表达式为(X3 OR X4),于是可以得到X3.p所确定的OR项为“(X2 AND(X3 OR X4))”。综合上述结果可以得出P3所确定的最大合并项为“(X8 AND X5)OR(X2 AND(X3 OR X4))”。
5、从队列Q’出队一顶点,利用Q对Gp进行广度优先搜索,计算出相对应并联型顶点的OR表达式,对每一项OR表达式中的子式进行验证,看其是否达到了最大合并点,直到所有的并联型顶点都生成最大合并项,最后将最大合并项构造成AND表达式形成最终结果。
虽然有向图GL中的终止顶点只有一个,但每一个线圈顶点都是实际上逻辑输出的终点,这些终点都被记录到了Q’队列中。虽然并联型顶点也可能被记录到Q’中,但这些都是与线圈顶点直接相连的,其结果直接用于驱动线圈,所以也可以把这类顶点看成线圈顶点。最终结果的生成过程是从Q’队列中顶点依次出队开始,依照Gp图计算每个并联型顶点的最大合并项,并将这些项AND起来,形成最大合并项的AND表达式,这一过程直到搜索到起始顶点才结束,并形成最终的表达式。
如图14所示,上述具体过程如下:首先判断Q’是否为空,如果不为空则从该队列中取出一顶点u。如果u是起始顶点则跳过,如果不是起始顶点则调用并联型顶点的最大合并项的最终表达式生成过程,以生成并联型顶点u的最大合并项。然后将u.p赋值给v,再判断v是否是蓝色,如果是,即v是最大合并点,则生成″LD″+v.name+″AND(″+u的最大合并项+″)″+原表达式的表达式;如果不是蓝色,则生成″ST″+v.name+″AND(″+u的最大合并项+″)″+原表达式的表达式,最后将v.color赋值成蓝色,并将所生成的表达式串联起来,形成中间结果。上述过程不断重复,被串联起来的表达式越来越完整,直到Q’队列中的所有顶点都被处理完。
在上述生成表达式的过程中为了精简表达式,可以将已经得出最大合并项的顶点标记成蓝色,Q’中其它顶点在生成表达式的过程中,可以直接利用已经得到的结果,而不必重新生成,当Q’为空时表明表达式最终生成。
下面以图8和图9中为实施例说明Y1顶点最终表达式的生成过程。为了便于说明用Pmax(i)表示i顶点的最大合并项,PA(j,i)表示顶点j中以i顶点为p属性的并联原子表达式,用→表示应用前面4步所描述的处理过程可推出的结果。
Pmax(Y1)
→Pmax(P4)
→Pmax(P3)AND PA(P4,P3)
→Pmax(P3)AND X6
→Pmax(P1)AND PA(P3,P1)OR PA(P2,P1)AND PA(P3,P2)AND X6
→Pmax(P1)AND(X8 AND X5)OR(X2 AND(X3 OR X4))AND X6
→X1 AND((X8 AND X5)OR(X2 AND(X3 OR X4))AND X6)
6、判断队列Q’是否为空,如果不为空,继续重复上述5,直至Q’为空。
7、对起始顶点进行处理,使其适合指令表的表达方式,将表达式除去不必要的括号以精简该表达式,然后为表达式添加必要的换行符号,使其与指令表的显示方式一致。
本发明转换可以直接应用在PLC控制器上,直接完成将梯形图转换成PLC程序执行指令,其中,可以利用ST v.name指令将最大合并点的生成的中间结果保存到PLC存储单元中,形成辅助单元,利用LD v.name指令将v.name指定的寄存器的内容放到累加器中,利用PLC自身具有的AND和OR的运算功能,使PLC能够按照最终的指令表控制被控对象。
上述各实施例仅用于说明本发明,其中实施方法的步骤的顺序是都是可以有所变化的,凡是在本发明技术方案的基础上进行的等同变换和改进,均不应排除在本发明的保护范围之外。
Claims (3)
1.一种将梯形图转化成PLC程序指令的方法,其包括以下步骤:
1)利用有向图表示梯形图的拓扑结构,并对有向图进行处理,处理过程如下:
①对有向图的顶点进行初始化,并对顶点的属性进行如下定义:
Vertex={name,type,degree,eand,color,p,pNo,Eor,Adj,AdjT},其中,Vertex表示顶点,name为顶点的名称;type为顶点的类型,degree为顶点的度数,eand用于记录串联型顶点AND表达式的生成结果,color为一个辅助属性表示颜色,p是用于记录与某一顶点邻接的并联型顶点,pNo表示并联型顶点在拓扑排序中的次序编号,Eor属性以邻接列表或数组的形式保存并联型顶点OR表达式的生成结果,Adj用于保存有向图的邻接关系;AdjT用于保存转置图的邻接关系;
②根据有向图GL的连接关系生成转置图GL T;
③根据有向图GL中每个顶点的属性Adj和AdjT,计算出该顶点的度数,区分有向图GL中顶点的类型;
④对起始顶点的p属性进行设置;
2)利用深度优先搜索的方法对转置图GL T遍历,将所有并联型顶点和线圈顶点的拓扑排序关系保存到队列Q中,且把所有线圈顶点的拓扑排序的顺序再单独地保存在队列Q’中;
3)按照队列Q中并联型顶点和线圈顶点的排列顺序,对队列Q中的每一个并联型顶点依照有向图GL的连接关系使用广度优先搜索,同时对其邻接的所有的串联型顶点进行深度优先搜索,生成有向图GL的整条串联型通路上的AND表达式和并联型顶点的OR表达式,同时生成并联型顶点的连接关系图Gp;
4)生成并联型顶点的最大合并项的最终表达式;
5)从队列Q’出队一顶点,利用队列Q对连接关系图Gp进行广度优先搜索,计算出相对应并联型顶点的OR表达式,对每一项OR表达式中的子式进行验证,看其是否达到了最大合并点,直到所有的并联型顶点都生成最大合并项,最后将最大合并项构造成AND表达式形成最终结果;
6)判断队列Q’是否为空,如果不为空,继续重复上述5),直至队列Q’为空;
7)对起始顶点进行处理,使其适合指令表的表达方式,将表达式除去不必要的括号以精简该表达式,然后为表达式添加必要的换行符号,使其与指令表的显示方式一致。
2.如权利要求1所述的一种将梯形图转化成PLC程序指令的方法,其特征在于:所述步骤④对起始顶点进行设置,是指对起始顶点的p属性进行设置,如果起始顶点是串联型顶点则通过增大其度数的方法强制将其转换成并联型顶点,设置起始顶点属性p为自己指向自己。
3.如权利要求1或2所述的一种将梯形图转化成PLC程序指令的方法,其特征在于:所述步骤3)中的所述连接关系图Gp记录并联型顶点、线圈顶点之间的连接以及串联型顶点从属并联型顶点的关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110263395 CN102354144B (zh) | 2011-09-06 | 2011-09-06 | 一种将梯形图转化成plc程序指令的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110263395 CN102354144B (zh) | 2011-09-06 | 2011-09-06 | 一种将梯形图转化成plc程序指令的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102354144A CN102354144A (zh) | 2012-02-15 |
CN102354144B true CN102354144B (zh) | 2013-07-03 |
Family
ID=45577719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110263395 Expired - Fee Related CN102354144B (zh) | 2011-09-06 | 2011-09-06 | 一种将梯形图转化成plc程序指令的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102354144B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102736551B (zh) * | 2012-06-20 | 2015-11-25 | 深圳市矩形科技有限公司 | 一种plc梯形图代码软解题方法 |
CN103942081A (zh) * | 2014-03-07 | 2014-07-23 | 东莞市升力智能科技有限公司 | Plc梯形图il指令表生成方法 |
CN104331314B (zh) * | 2014-10-31 | 2017-06-27 | 郑州众智科技股份有限公司 | 一种基于发电机组控制器的plc梯形图转指令表的方法 |
CN104460489B (zh) * | 2014-11-12 | 2017-04-12 | 郑州众智科技股份有限公司 | 一种基于发电机组控制器的plc指令表转梯形图的方法 |
CN105511393A (zh) * | 2016-01-25 | 2016-04-20 | 山东超越数控电子有限公司 | 一种plc梯形图的分析方法及装置 |
CN107291038B (zh) * | 2017-07-27 | 2019-04-02 | 浙江奇赛其自动化科技有限公司 | 一种软件plc指令解析执行方法 |
CN107832249B (zh) * | 2017-10-29 | 2020-07-03 | 北京联合大学 | 三线实现和带有spi接口外设进行通讯的系统及方法 |
CN108595208B (zh) * | 2017-12-30 | 2021-11-26 | 北京联合大学 | 一种可处理函数顶点的梯形图转换成指令序列的方法 |
CN108765539B (zh) * | 2018-05-24 | 2022-05-13 | 武汉斗鱼网络科技有限公司 | 基于OpenGLES的图像渲染方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364098A (zh) * | 2008-09-12 | 2009-02-11 | 南京航空航天大学 | 一种将梯形图转换为指令表程序及解释执行的方法与系统 |
CN101369234A (zh) * | 2008-06-24 | 2009-02-18 | 杭州电子科技大学 | 按照iec 61131-3标准的将梯形图语言编译成指令表语言的方法 |
CN101957745A (zh) * | 2009-07-16 | 2011-01-26 | 沈阳高精数控技术有限公司 | 梯形图语言转换为结构文本语言的方法 |
CN102004839A (zh) * | 2010-12-17 | 2011-04-06 | 北京优纳科技有限公司 | 一种全节点遍历路径优化方法 |
-
2011
- 2011-09-06 CN CN 201110263395 patent/CN102354144B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369234A (zh) * | 2008-06-24 | 2009-02-18 | 杭州电子科技大学 | 按照iec 61131-3标准的将梯形图语言编译成指令表语言的方法 |
CN101364098A (zh) * | 2008-09-12 | 2009-02-11 | 南京航空航天大学 | 一种将梯形图转换为指令表程序及解释执行的方法与系统 |
CN101957745A (zh) * | 2009-07-16 | 2011-01-26 | 沈阳高精数控技术有限公司 | 梯形图语言转换为结构文本语言的方法 |
CN102004839A (zh) * | 2010-12-17 | 2011-04-06 | 北京优纳科技有限公司 | 一种全节点遍历路径优化方法 |
Non-Patent Citations (2)
Title |
---|
李洪洋等.面向对象的二维图形符号编辑软件的设计与实现.《山东轻工业学院学报》.2005,第19卷(第03期), |
面向对象的二维图形符号编辑软件的设计与实现;李洪洋等;《山东轻工业学院学报》;20050930;第19卷(第03期);第28-30页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102354144A (zh) | 2012-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102354144B (zh) | 一种将梯形图转化成plc程序指令的方法 | |
CN105550268B (zh) | 大数据流程建模分析引擎 | |
JP5207863B2 (ja) | ビジネスプロセスをモデリングするコンピュータ実施方法 | |
CN107783893B (zh) | 一种基于场景描述的自动测试系统及其实现方法 | |
CN107193745B (zh) | PLC程序到NuSMV输入模型的自动化构建方法 | |
CN103886023B (zh) | Excel数据表的存储、提取方法及系统 | |
CN106021816B (zh) | 一种基于行为树的分布式系统行为仿真分析工具的实现方法 | |
CN102270137B (zh) | 一种获取体系结构描述语言的方法和一种建模工具 | |
CN104506340A (zh) | 基于工业以太网故障诊断方法中决策树的创建方法 | |
CN106909543A (zh) | 一种规则引擎的模式匹配方法和装置 | |
Wu et al. | Exploiting attributed type graphs to generate metamodel instances using an SMT solver | |
US8473895B2 (en) | Providing diverse solutions using design space exploration | |
CN115240048A (zh) | 面向图像分类的深度学习的算子定位融合方法及装置 | |
CN102799960B (zh) | 面向数据模型的并行业务流程异常检测方法 | |
CN116244333A (zh) | 一种基于代价因子校准的数据库查询性能预测方法及系统 | |
CN104899042B (zh) | 一种嵌入式机器视觉检测程序开发方法及系统 | |
Kosowski et al. | Graph decomposition for memoryless periodic exploration | |
CN109710307A (zh) | 基于Python代码重建抽象语法树的方法、电子设备 | |
CN105718591B (zh) | 一种基于规则和约束满足的定性空间关系推理方法 | |
Porreca et al. | P systems simulating oracle computations | |
CN103605849B (zh) | 一种产品设计分析开发环境中联动计算的实现方法 | |
TW201619822A (zh) | 針對軟體程式之變數推論系統及方法 | |
CN104572457B (zh) | 一种对含有特殊转换过程的非通用有限状态机进行改造的方法 | |
CN103761105B (zh) | 一种OWL-S复杂进程的Petri网自动生成方法 | |
Le Clément et al. | Constraint-based graph matching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130703 Termination date: 20130906 |