一种将梯形图转化成PLC程序指令的方法.pdf

上传人:a*** 文档编号:822064 上传时间:2018-03-14 格式:PDF 页数:19 大小:849.40KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110263395.0

申请日:

2011.09.06

公开号:

CN102354144A

公开日:

2012.02.15

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G05B 19/05申请日:20110906授权公告日:20130703终止日期:20130906|||授权|||实质审查的生效IPC(主分类):G05B 19/05申请日:20110906|||公开

IPC分类号:

G05B19/05

主分类号:

G05B19/05

申请人:

北京联合大学

发明人:

王郁昕; 李红豫; 何宁

地址:

100101 北京市朝阳区北四环东路97号

优先权:

专利代理机构:

北京纪凯知识产权代理有限公司 11245

代理人:

徐宁

PDF下载: PDF下载
内容摘要

本发明涉及一种将梯形图转化成PLC程序指令的方法,其包括如下步骤:1)利用有向图表示梯形图的拓扑结构;2)利用深度优先搜索的方法对转置图GLT遍历,将并联型顶点和线圈顶点的拓扑排序关系保存到队列Q;3)对并联型顶点依照有向图GL的连接关系使用广度优先搜索,同时对其邻接的串联型顶点进行深度优先搜索,生成有向图GL的整条串联型通路上的AND表达式和并联型顶点的OR表达式;4)生成并联型顶点的最大合并项的最终表达式;5)利用Q对连接关系图Gp进行广度优先搜索,计算出相对应并联型顶点的OR表达式并验证,最后将最大合并项构造成AND表达式形成最终结果;6)判断队列Q’是否为空;7)对起始顶点进行处理。本发明可以广泛应用于将梯形图转化成PLC程序指令的过程中。

权利要求书

1: 一种将梯形图转化成 PLC 程序指令的方法, 其包括以下步骤 : 1) 利用有向图表示梯形图的拓扑结构, 并对有向图进行处理 ; 2) 利用深度优先搜索的方法对转置图 GLT 遍历, 将所有并联型顶点和线圈顶点的拓扑 排序关系保存到队列 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 程序指令的方法, 其特征在于 : 所述 步骤 1) 利用有向图表示梯形图的拓扑结构, 并对有向图进行处理, 处理过程如下 : ①对有向图的顶点进行初始化 ; ②根据有向图 GL 的连接关系生成转置图 GLT ; ③根据有向图 GL 中每个顶点的属性 Adj 和 AdjT, 计算出该顶点的度数, 区分有向图 GL 中顶点的类型 ; ④对起始顶点的 p 属性进行设置。
3: 如权利要求 2 所述的一种将梯形图转化成 PLC 程序指令的方法, 其特征在于 : 所述 步骤①对有向图的顶点进行初始化, 定义顶点 Vertex 的属性如下 : Vertex = {name, type, degree, eand, color, p, pNo, Eor, Adj, AdjT}, 其中, name 为顶 点的名称 ; type 为顶点的类型, degree 为顶点的度数, eand 用于记录串联型顶点 AND 表达 式的生成结果, color 为一个辅助属性表示颜色, p 是用于记录与某一顶点邻接的并联型顶 点, pNo 表示并联型顶点在拓扑排序中的次序编号, Eor 属性以邻接列表或数组的形式保存 并联型顶点 OR 表达式的生成结果, Adj 用于保存有向图的邻接关系 ; AdjT 用于保存转置图 的邻接关系。
4: 如权利要求 2 所述的一种将梯形图转化成 PLC 程序指令的方法, 其特征在于 : 所述 步骤④对起始顶点进行设置, 是指对起始顶点的 p 属性进行设置, 如果起始顶点是串联型 顶点则通过增大其度数的方法强制将其转换成并联型顶点, 设置起始顶点属性 p 为自己指 向自己。
5: 如权利要求 3 所述的一种将梯形图转化成 PLC 程序指令的方法, 其特征在于 : 所述 步骤④对起始顶点进行设置, 是指对起始顶点的 p 属性进行设置, 如果起始顶点是串联型 顶点则通过增大其度数的方法强制将其转换成并联型顶点, 设置起始顶点属性 p 为自己指 向自己。 2
6: 如权利要求 1 或 2 或 3 或 4 或 5 所述的一种将梯形图转化成 PLC 程序指令的方法, 其特征在于 : 所述步骤 3) 中的所述 Gp 图记录并联型顶点、 线圈顶点之间的连接以及串联型 顶点从属并联型顶点的关系。

说明书


一种将梯形图转化成 PLC 程序指令的方法

    【技术领域】
     本发明涉及一种生成程序指令的方法, 特别是关于一种将梯形图转化成 PLC 程序 指令的方法。背景技术
     可编程逻辑控制器 (Programmable Logic Controller, PLC) 是工业控制领域最为 常用的通用控制设备, 而梯形图是 PLC 必备的编程语言。梯形图虽然直观、 易于使用, 但不 能直接在 PLC 上运行, 需要将梯形图转换成指令表才能使 PLC 按照梯形图的控制逻辑控制 被控对象。从梯形图到指令表的转换有许多方法, 但到目前为止较好的方法是将梯形图转 换成二叉树或某种与树类似的数据结构, 然后利用一些规则和一些简单线性数据结构, 如 栈或队列, 反复对上述树形结构进行遍历, 从中筛选出必要的与、 或项并保存到线性数据结 构中, 最后将数据项连接成最终的表达式, 从而完成整个转换, 其中这些表达式是由指令表 中的指令构成的。
     但是上述方法存在以下缺点 : 1、 从梯形图到树形结构的转换比较复杂, 必须借助 辅助顶点才能完成, 以至于生成的结果缺乏优化。2、 对于具有复杂拓扑连接结构的梯形图 不能进行转换, 所以转换范围受到限制。 3、 基于树的转换程序结构复杂, 而且在转换过程中 顶点和边的计算关系比较复杂, 分析转换过程的时间复杂度较为困难, 这类方法往往缺乏 复杂度分析, 所以这类方法不易在顶点规模较大时使用。发明内容
     针对上述问题, 本发明的目的是提供一种通过交替使用广度优先搜索和深度优先 搜索的方法将梯形图转化成 PLC 指令的方法。
     为实现上述目的, 本发明采取以下技术方案 : 一种将梯形图转化成 PLC 程序指令 的方法, 其包括以下步骤 : 1) 利用有向图表示梯形图的拓扑结构, 并对有向图进行处理 ; 2) T 利用深度优先搜索的方法对转置图 GL 遍历, 将所有并联型顶点和线圈顶点的拓扑排序关 系保存到队列 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 的连接关系生成转置图 GLT ; ③根据 有向图 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 是本发明对有向图的转置图 GLT 深度优先搜索的流程图 图 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 的连接关系生成转置图 GLT, 即所有的有向边都与有向图 GL 相反 的图, 具体是通过对每个顶点的 Adj 链表进行遍历, 然后提取逆向邻接关系并将其加入到 相应顶点的 AdjT 中。
     3) 根据有向图 GL 中每个顶点的 Adj 和 AdjT, 计算出该顶点的度数, 区分有向图 GL 中顶点的类型, 具体过程为 : 遍历每个顶点, 获得该顶点的 Adj 和 AdjT 的值, Adj 的长度表 示该顶点射出的度数, AdjT 的长度表示射入该顶点的度数, Adj 与 AdjT 的长度之和为顶点 的度数。本发明定义顶点度数大于 2 为并联型顶点, 顶点度数不大于 2 为串联型顶点, 根据 计算的顶点度数可以对串、 并联顶点的类型进行区分。
     4) 对起始顶点的 p 属性进行设置, 在邻接列表中排在有向图 GL 首位的顶点为起始 顶点, 排在最后一位的顶点为终止顶点, 如果起始顶点是串联型顶点则通过增大其度数的 方法强制将其转换成并联型顶点, 设置起始顶点属性 p, 如果该顶点不是起始顶点, p 总是 指向自己的并联型父顶点, 由于起始顶点不存在父顶点, 则起始顶点的属性 p 是自己指向 自己, 这样有利于搜索过程找到结束点。
     2、 利用深度优先搜索的方法对转置图 GLT 遍历, 依据括号定理可知 : 深度优先搜索 这一过程可以得到并联型顶点和线圈顶点的拓扑排序关系, 将所有并联型顶点和线圈顶点 的拓扑排序关系保存到队列 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 中并联型顶点属性生成结果
     9102354144 A CN 102354153Eor [X0] [X0] [P1] [P1, P2, P2] [P3] [P3] [P4] [″ X7″ ] [″″ ] [″ X6″ ] [″ (X8ANDX5)″,″ X3″,″ X4″ ] [″ X2″ ] [″ X1″ ] ″ X1″ [″ X0″ ] ″ X0″Eor 中顶点 p 属性Eor 中顶点 eand 属性对应的并联原子表达式X0[X0]P1[X1]说P2[X2]″ X2″ ″ (X8AND X5)″″ X3 OR X4″ ″ X6″ 同 P4 ″ X7″明10P3[X5, X3, X4]书P4[X6]Y1[P4]Y2[X7]7/9 页102354144 A CN 102354153
     说明书8/9 页如图 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 能够按照最终的指令表控制被控对象。
     上述各实施例仅用于说明本发明, 其中实施方法的步骤的顺序是都是可以有所变 化的, 凡是在本发明技术方案的基础上进行的等同变换和改进, 均不应排除在本发明的保 护范围之外。
    

一种将梯形图转化成PLC程序指令的方法.pdf_第1页
第1页 / 共19页
一种将梯形图转化成PLC程序指令的方法.pdf_第2页
第2页 / 共19页
一种将梯形图转化成PLC程序指令的方法.pdf_第3页
第3页 / 共19页
点击查看更多>>
资源描述

《一种将梯形图转化成PLC程序指令的方法.pdf》由会员分享,可在线阅读,更多相关《一种将梯形图转化成PLC程序指令的方法.pdf(19页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102354144A43申请公布日20120215CN102354144ACN102354144A21申请号201110263395022申请日20110906G05B19/0520060171申请人北京联合大学地址100101北京市朝阳区北四环东路97号72发明人王郁昕李红豫何宁74专利代理机构北京纪凯知识产权代理有限公司11245代理人徐宁54发明名称一种将梯形图转化成PLC程序指令的方法57摘要本发明涉及一种将梯形图转化成PLC程序指令的方法,其包括如下步骤1利用有向图表示梯形图的拓扑结构;2利用深度优先搜索的方法对转置图GLT遍历,将并联型顶点和线圈顶点的拓扑排序关系。

2、保存到队列Q;3对并联型顶点依照有向图GL的连接关系使用广度优先搜索,同时对其邻接的串联型顶点进行深度优先搜索,生成有向图GL的整条串联型通路上的AND表达式和并联型顶点的OR表达式;4生成并联型顶点的最大合并项的最终表达式;5利用Q对连接关系图GP进行广度优先搜索,计算出相对应并联型顶点的OR表达式并验证,最后将最大合并项构造成AND表达式形成最终结果;6判断队列Q是否为空;7对起始顶点进行处理。本发明可以广泛应用于将梯形图转化成PLC程序指令的过程中。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书9页附图7页CN102354153A1/2页21一种将梯形。

3、图转化成PLC程序指令的方法,其包括以下步骤1利用有向图表示梯形图的拓扑结构,并对有向图进行处理;2利用深度优先搜索的方法对转置图GLT遍历,将所有并联型顶点和线圈顶点的拓扑排序关系保存到队列Q中,且把所有线圈顶点的拓扑排序的顺序再单独地保存在Q中;3按照队列Q中并联型顶点和线圈顶点的排列顺序,对队列Q中的每一个并联型顶点依照有向图GL的连接关系使用广度优先搜索,同时对其邻接的所有的串联型顶点进行深度优先搜索,生成有向图GL的整条串联型通路上的AND表达式和并联型顶点的OR表达式,同时生成并联型顶点的连接关系图GP;4生成并联型顶点的最大合并项的最终表达式;5从队列Q出队一顶点,利用Q对连接关。

4、系图GP进行广度优先搜索,计算出相对应并联型顶点的OR表达式,对每一项OR表达式中的子式进行验证,看其是否达到了最大合并点,直到所有的并联型顶点都生成最大合并项,最后将最大合并项构造成AND表达式形成最终结果;6判断队列Q是否为空,如果不为空,继续重复上述5,直至Q为空;7对起始顶点进行处理,使其适合指令表的表达方式,将表达式除去不必要的括号以精简该表达式,然后为表达式添加必要的换行符号,使其与指令表的显示方式一致。2如权利要求1所述的一种将梯形图转化成PLC程序指令的方法,其特征在于所述步骤1利用有向图表示梯形图的拓扑结构,并对有向图进行处理,处理过程如下对有向图的顶点进行初始化;根据有向图。

5、GL的连接关系生成转置图GLT;根据有向图GL中每个顶点的属性ADJ和ADJT,计算出该顶点的度数,区分有向图GL中顶点的类型;对起始顶点的P属性进行设置。3如权利要求2所述的一种将梯形图转化成PLC程序指令的方法,其特征在于所述步骤对有向图的顶点进行初始化,定义顶点VERTEX的属性如下VERTEXNAME,TYPE,DEGREE,EAND,COLOR,P,PNO,EOR,ADJ,ADJT,其中,NAME为顶点的名称;TYPE为顶点的类型,DEGREE为顶点的度数,EAND用于记录串联型顶点AND表达式的生成结果,COLOR为一个辅助属性表示颜色,P是用于记录与某一顶点邻接的并联型顶点,PN。

6、O表示并联型顶点在拓扑排序中的次序编号,EOR属性以邻接列表或数组的形式保存并联型顶点OR表达式的生成结果,ADJ用于保存有向图的邻接关系;ADJT用于保存转置图的邻接关系。4如权利要求2所述的一种将梯形图转化成PLC程序指令的方法,其特征在于所述步骤对起始顶点进行设置,是指对起始顶点的P属性进行设置,如果起始顶点是串联型顶点则通过增大其度数的方法强制将其转换成并联型顶点,设置起始顶点属性P为自己指向自己。5如权利要求3所述的一种将梯形图转化成PLC程序指令的方法,其特征在于所述步骤对起始顶点进行设置,是指对起始顶点的P属性进行设置,如果起始顶点是串联型顶点则通过增大其度数的方法强制将其转换成。

7、并联型顶点,设置起始顶点属性P为自己指向自己。权利要求书CN102354144ACN102354153A2/2页36如权利要求1或2或3或4或5所述的一种将梯形图转化成PLC程序指令的方法,其特征在于所述步骤3中的所述GP图记录并联型顶点、线圈顶点之间的连接以及串联型顶点从属并联型顶点的关系。权利要求书CN102354144ACN102354153A1/9页4一种将梯形图转化成PLC程序指令的方法技术领域0001本发明涉及一种生成程序指令的方法,特别是关于一种将梯形图转化成PLC程序指令的方法。背景技术0002可编程逻辑控制器PROGRAMMABLELOGICCONTROLLER,PLC是工业。

8、控制领域最为常用的通用控制设备,而梯形图是PLC必备的编程语言。梯形图虽然直观、易于使用,但不能直接在PLC上运行,需要将梯形图转换成指令表才能使PLC按照梯形图的控制逻辑控制被控对象。从梯形图到指令表的转换有许多方法,但到目前为止较好的方法是将梯形图转换成二叉树或某种与树类似的数据结构,然后利用一些规则和一些简单线性数据结构,如栈或队列,反复对上述树形结构进行遍历,从中筛选出必要的与、或项并保存到线性数据结构中,最后将数据项连接成最终的表达式,从而完成整个转换,其中这些表达式是由指令表中的指令构成的。0003但是上述方法存在以下缺点1、从梯形图到树形结构的转换比较复杂,必须借助辅助顶点才能完。

9、成,以至于生成的结果缺乏优化。2、对于具有复杂拓扑连接结构的梯形图不能进行转换,所以转换范围受到限制。3、基于树的转换程序结构复杂,而且在转换过程中顶点和边的计算关系比较复杂,分析转换过程的时间复杂度较为困难,这类方法往往缺乏复杂度分析,所以这类方法不易在顶点规模较大时使用。发明内容0004针对上述问题,本发明的目的是提供一种通过交替使用广度优先搜索和深度优先搜索的方法将梯形图转化成PLC指令的方法。0005为实现上述目的,本发明采取以下技术方案一种将梯形图转化成PLC程序指令的方法,其包括以下步骤1利用有向图表示梯形图的拓扑结构,并对有向图进行处理;2利用深度优先搜索的方法对转置图GLT遍历。

10、,将所有并联型顶点和线圈顶点的拓扑排序关系保存到队列Q中,且把所有线圈顶点的拓扑排序的顺序再单独地保存在Q中;3按照队列Q中并联型顶点和线圈顶点的排列顺序,对队列Q中的每一个并联型顶点依照有向图GL的连接关系使用广度优先搜索,同时对其邻接的所有的串联型顶点进行深度优先搜索,生成有向图GL的整条串联型通路上的AND表达式和并联型顶点的OR表达式,同时生成并联型顶点的连接关系图GP;4生成并联型顶点的最大合并项的最终表达式;5从队列Q出队一顶点,利用Q对连接关系图GP进行广度优先搜索,计算出相对应并联型顶点的OR表达式,对每一项OR表达式中的子式进行验证,看其是否达到了最大合并点,直到所有的并联型。

11、顶点都生成最大合并项,最后将最大合并项构造成AND表达式形成最终结果;6判断队列Q是否为空,如果不为空,继续重复上述5,直至Q为空;7对起始顶点进行处理,使其适合指令表的表达方式,将表达式除去不必要的括号以精简该表达式,然后为表达式添加必要的换行符号,使其与指令表的显示方式一致。说明书CN102354144ACN102354153A2/9页50006所述步骤1利用有向图表示梯形图的拓扑结构,并对有向图进行处理,处理过程如下对有向图的顶点进行初始化;根据有向图GL的连接关系生成转置图GLT;根据有向图GL中每个顶点的属性ADJ和ADJT,计算出该顶点的度数,区分有向图GL中顶点的类型;对起始顶点。

12、的P属性进行设置。0007所述步骤对有向图的顶点进行初始化,定义顶点VERTEX的属性如下0008VERTEXNAME,TYPE,DEGREE,EAND,COLOR,P,PNO,EOR,ADJ,ADJT,其中,NAME为顶点的名称;TYPE为顶点的类型,DEGREE为顶点的度数,EAND用于记录串联型顶点AND表达式的生成结果,COLOR为一个辅助属性表示颜色,P是用于记录与某一顶点邻接的并联型顶点,PNO表示并联型顶点在拓扑排序中的次序编号,EOR属性以邻接列表或数组的形式保存并联型顶点OR表达式的生成结果,ADJ用于保存有向图的邻接关系;ADJT用于保存转置图的邻接关系。0009所述步骤对。

13、起始顶点进行设置,是指对起始顶点的P属性进行设置,如果起始顶点是串联型顶点则通过增大其度数的方法强制将其转换成并联型顶点,设置起始顶点属性P为自己指向自己。0010所述步骤3中的所述GP图记录并联型顶点、线圈顶点之间的连接以及串联型顶点从属并联型顶点的关系。0011本发明由于采取以上技术方案,其具有以下优点1、本发明由于利用深度优先搜索方法寻找并联型顶点和线圈顶点,且对每一个并联型顶点使用广度优先搜索方法生成有向图GL整条串联型通路上的AND表达式和并联型顶点的OR表达式,同时生成并联型顶点的连接关系图GP,搜索规模与顶点和边数成线性关系,因此使得分析时间复杂度的工作变得容易,有利于在顶点规模。

14、较大时使用。2、本发明对起始顶点的P属性进行设置,由于起始顶点不存在父顶点,则设置起始顶点的属性P为自己指向自己,这样搜索过程不会由于找不到父顶点而无限制搜索下去,因此有利于搜索过程快速的找到搜索的结束点,节省搜索的时间。3、本发明的所有操作都在原图上进行,因此不需要对原有的梯形图的拓扑结构进行大的转换,通过交替使用广度与深度优先搜索的方法,能够对具有复杂拓扑结构的梯形图进行转换,特别是在梯形图中有方向概念并能够与有向图完全对应的情况下,从而简化了转换方法,有效地提高转换的速度。4、本发明由于在转换过程中兼顾了表达式的规模与辅助单元的使用,仅仅在最大合并点式引入辅助单元,没有为每个并联型顶点分。

15、别引入辅助单元,这样使转化成的程序指令能够很好地得到优化,虽然转换结果主要针对IEC611313标准,但这种方法仍不失一般性,通过修改部分输出形式,可以很容易地将梯形图转换成其他类型的指令表。5、本发明可以通过顶点的属性对图中的顶点类型进行扩展,因此能够使PLC实现更为复杂的功能。本发明可以广泛应用于将梯形图转化成PLC程序指令的过程中。附图说明0012图1是本发明梯形图转换成指令表的总流程图0013图2是本发明具有重输入关系的梯形图0014图3是图2对应的有向图0015图4是本发明具有交叉关系的梯形图0016图5是图4的对应的有向图说明书CN102354144ACN102354153A3/9。

16、页60017图6是本发明具有复杂交叉关系的梯形图0018图7是图6对应的有向图0019图8是本发明实施例的梯形图0020图9是图8对应的有向图0021图10是本发明对有向图的转置图GLT深度优先搜索的流程图0022图11是本发明对有向图GL进行广度优先搜索并生成顶点OR表达式的流程图0023图12是本发明从图8生成的GP图0024图13是本发明生成最大合并项及其表达式的流程图0025图14是本发明生成最终表达式的流程图具体实施方式0026下面结合附图和实施例对本发明进行详细的描述。0027如图1所示,本发明将梯形图转换成PLC程序指令的方法包括如下步骤00281、利用有向图表示梯形图的拓扑结构。

17、,并对有向图进行处理00291对有向图的顶点进行初始化0030如图29所示,PLC控制器所使用的梯形图如图2、图4、图6、图8所示可以看成是由不同顶点组成的与梯形图相对应的有向图如图3、图5、图7、图9,本发明利用GL表示这种有向图。0031如图3所示,有向图GL中的顶点包括以下类型起始顶点X0,串联型顶点X1、X2、X3、X4、X5、X6,并联型顶点P1、P2,线圈顶点Y1和终止顶点END。其中,串联型顶点是与梯形图中的继电开关相对应,并联型顶点是表示多个继电开关的某一端连接到同一顶点,线圈顶点是与梯形图中输出线圈相对应。0032为了描述这几类顶点以及它们之间的连接关系,同时能够方便且高效的。

18、完成从梯形图到指令的转换,本发明将顶点定义为包含多个属性的对象,VERTEX顶点的数据结构为VERTEXNAME,TYPE,DEGREE,EAND,COLOR,P,PNO,EOR,ADJ,ADJT。其中,NAME表示顶点的名称;TYPE表示顶点的类型,包括COIL型和非COIL型,如果TYPE为“COIL”,则顶点的类型为COIL类型,即线圈类型,也可称之为输出类型,此类型在梯形图中用圆括号表示,如果TYPE为“非COIL”,即为非线圈类型;DEGREE表示顶点的度数,具体描述顶点与输入边和输出边的关系,即射入与射出某一顶点的所有边的数量;EAND用于记录串联型顶点AND表达式的生成结果,只有。

19、串联型顶点使用该属性;COLOR是一个辅助属性表示颜色,用于记录顶点是否被访问过,如果COLOR为白色则表示该顶点从来没有遍历过;如果COLOR是灰色则表示该顶点是首次访问;如果COLOR是黑色则表示该顶点、该顶点的全部子顶点都已访问过;如果COLOR是蓝色则表示该顶点是最大合并点,利用颜色属性标记可以避免顶点的重复访问和处理;P是用于记录与某一顶点邻接的并联型顶点,它描绘了一种连接关系,即由所有并联型顶点组成的有向图;PNO表示并联型顶点在拓扑排序中的次序编号;EOR属性以邻接列表或数组的形式保存并联型顶点OR表达式的生成结果;ADJ用于保存有向图的邻接关系;ADJT列表用于保存转置图的邻接。

20、关系。0033根据上述对顶点的定义,首先将所有顶点颜色设置为白色;所有顶点的EAND设置为空,所有顶点的转置邻接关系表ADJT设置为空。说明书CN102354144ACN102354153A4/9页700342根据有向图GL的连接关系生成转置图GLT,即所有的有向边都与有向图GL相反的图,具体是通过对每个顶点的ADJ链表进行遍历,然后提取逆向邻接关系并将其加入到相应顶点的ADJT中。00353根据有向图GL中每个顶点的ADJ和ADJT,计算出该顶点的度数,区分有向图GL中顶点的类型,具体过程为遍历每个顶点,获得该顶点的ADJ和ADJT的值,ADJ的长度表示该顶点射出的度数,ADJT的长度表示射。

21、入该顶点的度数,ADJ与ADJT的长度之和为顶点的度数。本发明定义顶点度数大于2为并联型顶点,顶点度数不大于2为串联型顶点,根据计算的顶点度数可以对串、并联顶点的类型进行区分。00364对起始顶点的P属性进行设置,在邻接列表中排在有向图GL首位的顶点为起始顶点,排在最后一位的顶点为终止顶点,如果起始顶点是串联型顶点则通过增大其度数的方法强制将其转换成并联型顶点,设置起始顶点属性P,如果该顶点不是起始顶点,P总是指向自己的并联型父顶点,由于起始顶点不存在父顶点,则起始顶点的属性P是自己指向自己,这样有利于搜索过程找到结束点。00372、利用深度优先搜索的方法对转置图GLT遍历,依据括号定理可知深。

22、度优先搜索这一过程可以得到并联型顶点和线圈顶点的拓扑排序关系,将所有并联型顶点和线圈顶点的拓扑排序关系保存到队列Q中,且把所有线圈顶点的拓扑排序的顺序再单独地保存在Q中。0038如图10所示,本发明以其中某一个顶点U为实施例说明整个深度优先搜索的过程,具体如下0039深度优先搜索从右到左依次完成,首先从终止顶点开始,依据深度优先的原则递归地调用搜索子过程对顶点U进行深度优先搜索,将顶点U的颜色属性设置为灰色,查看顶点U的邻接列表是否为空,如果不为空,则从顶点U的邻接列表中取出另一个顶点V,查看顶点V的颜色属性是否为白色,如果是白色,则把顶点V的值赋给顶点U,重新进行深度优先搜索;如果U的邻接列。

23、表为空将顶点U的颜色属性设置为黑色,根据搜索结果判断,如果U是并联型顶点或线圈顶点,则将顶点U放置在队列Q中,并在U顶点的PNO属性中记录具体的排序序号,如果U是线圈顶点或并联型顶点并与线圈顶点直接相连则将U加入到队列Q中,结束对顶点U的深度优先搜索。依照上述过程,递归调用搜索的子过程,直到所有的顶点和路径都被搜索过。0040如图9所示,对该有向图GL完成整个深度优先搜索过程的结果如下QX0,P1,P2,P3,P4,Y1,Y2,而QP4,Y1,Y2。00413、按照Q队列中并联型顶点和线圈顶点的排列顺序,对队列中的每一个并联型顶点依照有向图GL的连接关系使用广度优先搜索,同时对其邻接的所有的串。

24、联型顶点进行深度优先搜索,生成有向图GL的整条串联型通路上的AND表达式和并联型顶点的OR表达式,同时生成并联型顶点的连接关系图GP。0042本发明定义并联型顶点不能和并联型顶点直接相连,并联型顶点只能和串联型顶点和线圈顶点相连,并且其射入边的另外一端只能是串联型顶点。线圈顶点射入边的另外一端可以是并联型或串联型顶点,而其射出边的另外一端只能是终止顶点。为了形成串联通路上的AND表达式,对有向图GL中的并联型顶点进行广度优先搜索的同时时,还需要对其相邻接的串联型顶点沿着串联型通路进行深度优先搜索,以获得整条串联型通路上的说明书CN102354144ACN102354153A5/9页8AND表达。

25、式,该表达式最终记录在串联通路的端点上,并在广度优先搜索时被收集到EOR的某一项中。EOR是一个数组的结构,数组中的每一项都表示一条串行路径上的AND表达式,最后将所有的AND项OR起来,形成所谓的“串联原子表达式”,它是并联型顶点的最小生成单位。0043如图11所示,由于广度优先搜索只针对并联型顶点,如果队列Q为空,则不进入广度搜索进程,如果Q队列不为空,则从Q队列中取出某一个顶点U,调用广度优先搜索子进程对顶点U进行处理。如果顶点U为线圈顶点则结束广度搜索的过程,从顶点U的邻接列表中取出一个邻接顶点V,对V的类型进行判断,过程如下0044判断V是否为空,如果邻接顶点V不为空,则将V的顶点属。

26、性P设置为U,则认为V的父顶点是U,对V的父顶点的U进行标记,并对V进行进一步的判断;如果V为空则结束。0045完成第后,如果V不为空,判断V是否为串联型顶点,如果是,则需要判断V的父顶点U的类型。当U是并联型顶点,则VEAND被赋值为VNAME,同时VP被赋值为U即对V的父顶点进行标记;当U是串联型顶点,则VEAND被赋值成UEND“AND”VNAME,同时VCOLOR设置成白色,对V进行遍历,VP被赋值为UP,U被替换成V,递归调用深度搜索的子过程对V行深度优先搜索。0046完成和后,如果V不是串联型顶点,则判断V是否为并联型顶点,如果是,查看V的父顶点U的类型,如果U是线圈顶点,则U加入。

27、到V的EOR列表中;如果U是串联型顶点且UCOLOR是白色,则UEAND两边加上括号,如何UCOLOR是非白色,则维持UEAND属性不变,然后将U加入到V的EOR列表中。0047完成前三步后,如果V不是并联型顶点,进一步判断V是否为线圈顶点,如果是,查看V的父顶点U的类型,如果U是并联型顶点,则U加入到V的EOR列表中,当U是串联型顶点,如果U是串联型顶点且UCOLOR是白色,则UEAND两边加上括号,如何UCOLOR是非白色,则维持UEAND属性不变。然后将U加入到V的EOR列表中。如果V不是线圈顶点,则表明访问出现错误结束对顶点V的遍历。0048如图9所示,本发明以有向图GL中的P3顶点为。

28、实施例进一步说明上述过程,搜索的过程是从右到左进行,P3有三个邻接顶点,P3所确定的OR表达式为X5ORX3ORX4,其中X5,X3,X4保存在该顶点的EOR列表中,即EORX5,X3,X4。梯形图中如果串联型顶点彼此相邻,会形成一条串联型通路,该通路上除了首尾顶点与并联型顶点相邻外,其余的彼此相邻的顶点都是串联型顶点。X8到X5的通路就是串联型通路,该通路上包含2个顶点,这两个顶点也是该串联型通路上端点,一端连接到P1,而另一端连接到P3。并联型顶点生成OR表达式的每一项应该是射入边所在串联型通路上的所有串联型顶点的AND表达式,每个串联型顶点的EAND属性记录着该顶点所在串联通路上当前的A。

29、ND表达式,该表达式的类型为字符串。X8EAND“X8”;X5EAND“X8ANDX5”。其中的“X8”和“X5”实际上是X8和X5顶点的NAME属性。如果在X8和X5之间还存在串联型顶点XI,XI1,XIN并且这些顶点都属于同一条串联型通路,则X5EAND“X8ANDXIANDXI1AND,ANDXINANDX5”。而XIEAND“X8ANDXI”;XI1EAND“X8ANDXIANDXI1”。0049如图12所示,完成对有向图GL中的所有顶点的搜索,为了使并联型点的连接关系更加清楚,生成完整梯形图的表达式,根据队列Q和队列Q生成并联型顶点的连接关系图说明书CN102354144ACN102。

30、354153A6/9页9GP。GP图记录着并联型顶点、线圈顶点之间的连接以及串联型顶点从属并联型顶点的关系,其连接关系记录在顶点的属性P中,并且属性P只能记录一个顶点。0050由广度优先搜索的性质可知,第一次被访问的顶点一定是最远的顶点,即它的跨度最大,因为其他顶点必定通过随后的搜索陆续到达,这时它们必定排在了最远顶点的后面。该顶点的距离指到达指定顶点所经过的边数,边数越小,距离越近,跨度越大,因为其他顶点需要经过额外的边才能到达。为了使串联型顶点不破坏上述性质,可以让串联型顶点在深度优先搜索的过程中传递并联型端点的P属性值,从而使串联型顶点不影响GP的生成。0051如图12所示,其中P3PP。

31、1,这是因为在对P1广度优先搜索时,首先访问的并联型顶点是P2和P3于是这两个顶点的P属性均为P1。当对P2广度优先搜索时可能再次访问P3,但由于P3的P属性已经被赋值,不能再修改了,所以P3的属性始终是P1。上述性质可以称之为并联型顶点的最大跨度性质,这一性质对于并联型顶点的化简与合并非常重要。最大跨度之内的所有并联型顶点可以合并成一项,该项称为并联型顶点的“最大合并项”,某一并联型顶点的最大跨度所对应的顶点称为“最大合并点”,P3的最大合并点为P1,而P2没有最大合并点,因为它包含在最大跨度之内。最大合并项包括串联型原子表达式以及由它们组成的OR表达式,还包括由上述结果组成的AND表达式。。

32、P3的最大合并项为“X8ANDX5ORX2ANDX3ORX4”,P2包含在P3最大跨度内,因此不用计算最大合并项,如下表1所示为完成本步骤,并联型顶点属性生成结果。0052表1图9中并联型顶点属性生成结果0053说明书CN102354144ACN102354153A7/9页10EOREOR中顶点P属性EOR中顶点EAND属性对应的并联原子表达式X0X0X0X0X0P1X1X0X1X1P2X2P1X2X2P3X5,X3,X4P1,P2,P2X8ANDX5,X3,X4X8ANDX5X3ORX4P4X6P3X6X6Y1P4P3同P4Y2X7P4X7X7说明书CN102354144ACN1023541。

33、53A8/9页110054如图13所示,经过上述步骤每一个并联型和线圈顶点都设定了EOR属性,EOR中的每一顶点的EAND属性都是潜在的OR运算项,但这不足以生成该顶点的OR表达式。当EOR中某些串联型顶点具有相同的P属性值时,可以确定这些顶点可以合并成一个简单OR表达式,该表达式称之为“并联原子表达式”。在此基础上还需要合成并联型顶点的最大合并项。此过程首先判断每一项的OR表达式的子式,该子式是指某一串联通路上的AND表达式,即是EOR数组中的某一项。是否到达了最大合并点,然后从顶点的EOR属性中取出一不为空的顶点V,然后判断VP是否与刚处理过的上一项的同名属性值一致。如果一致,则将已经生成。

34、的表达式与“ORVEAND”合并,然后根据表达式是否涉及多个项,决定是否为该生成表达式添加括号;如果不一致,则将当前顶点替换成VP,然后递归调用整个过程。接下来将递归调用的结果与“ANDVEAND”合并。最后还是要根据表达式是否涉及多个项,决定是否为生成的表达式添加括号。当上述过程完成之后,从顶点的EOR属性中再取出一项不为空的顶点,重复上述过程直到EOR属性中无顶点可取。0055如图12所示,P3的EORX5,X3,X4,X5对应一个并联原子表达式,X3和X4对应一个并联原子表达式,因为X3和X4的P属性相同,都是P2。通过比对EOR中的每一项可以很容易发现哪些顶点具有相同的P属性,然后将它。

35、们提取出来形成一并联原子表达式。由于EOR是顶点邻接列表,所以形成并联原子表达式的每一项实际上是由顶点中EAND属性所确定,P3各并联原子表达式分别为“X5EAND”;“X3EANDORX4EAND”,EAND属性的生成由以下条件确定串联型顶点的名称NAME属性或在串联型通路上有多个顶点时这些顶点名称的AND表达式再加上括号。如果X3NAME“X3”;X4NAME“X4”;X5NAME“X5”;X8NAME“X8”,则X5EAND“X8ANDX5”;X4EAND“X4”;X5EAND“X5”。X5顶点所代表的并联原子表达式为“X8ANDX5”,而X4与X5的并联原子表达式为“X3ORX4”。0。

36、0564、生成并联型顶点的最大合并项的最终表达式0057每当得出一个并联原子表达式后,还需查看其P属性是否到达了最大合并点,如果没有到达最大合并点,递归调用上述过程。递归调用的结果是AND关系,即并联原子表达式之间是AND关系,所以递归调用所形成的表达式之间必须用“AND”字符串串起来。递归过程直到到达最大合并点才结束;递归过程并不是EOR中每一项都需要进行,从P属性相同的顶点中选择一个进行递归即可,一般选择首次出现的那一项进行递归。EOR中其后的那些P属性相同的顶点相互之间与首次出现的那一个顶点之间彼此形成OR表达式,然后再与递归结果形成AND表达式。0058以图9为例,P3的最大合并项的生。

37、成过程是首先从P3EOR取出X5,由于X5P已经到达了最大合并点,所以由X5P所确定的OR项为“X8ANDX5”,它也是X5所对应的并联原子表达式。然后取出P3EOR的下一项X3,由于X3P没有到达最大合并点,所以需要递归调用P2的最大合并项的生成过程,即处理过程从P3变成了P2。由于P2EOR只有一项,并且该项已经到达了最大合并点,所以其递归结果为“X2”。之后X3接着处理,又由于X4与X3的P属性相同,其并联原子表达式为X3ORX4,于是可以得到X3P所确定的OR项为“X2ANDX3ORX4”。综合上述结果可以得出P3所确定的最大合并项为“X8ANDX5ORX2ANDX3ORX4”。005。

38、95、从队列Q出队一顶点,利用Q对GP进行广度优先搜索,计算出相对应并联型顶说明书CN102354144ACN102354153A9/9页12点的OR表达式,对每一项OR表达式中的子式进行验证,看其是否达到了最大合并点,直到所有的并联型顶点都生成最大合并项,最后将最大合并项构造成AND表达式形成最终结果。0060虽然有向图GL中的终止顶点只有一个,但每一个线圈顶点都是实际上逻辑输出的终点,这些终点都被记录到了Q队列中。虽然并联型顶点也可能被记录到Q中,但这些都是与线圈顶点直接相连的,其结果直接用于驱动线圈,所以也可以把这类顶点看成线圈顶点。最终结果的生成过程是从Q队列中顶点依次出队开始,依照G。

39、P图计算每个并联型顶点的最大合并项,并将这些项AND起来,形成最大合并项的AND表达式,这一过程直到搜索到起始顶点才结束,并形成最终的表达式。0061如图14所示,上述具体过程如下首先判断Q是否为空,如果不为空则从该队列中取出一顶点U。如果U是起始顶点则跳过,如果不是起始顶点则调用并联型顶点的最大合并项的最终表达式生成过程,以生成并联型顶点U的最大合并项。然后将UP赋值给V,再判断V是否是蓝色,如果是,即V是最大合并点,则生成LDVNAMEANDU的最大合并项原表达式的表达式;如果不是蓝色,则生成STVNAMEANDU的最大合并项原表达式的表达式,最后将VCOLOR赋值成蓝色,并将所生成的表达。

40、式串联起来,形成中间结果。上述过程不断重复,被串联起来的表达式越来越完整,直到Q队列中的所有顶点都被处理完。0062在上述生成表达式的过程中为了精简表达式,可以将已经得出最大合并项的顶点标记成蓝色,Q中其它顶点在生成表达式的过程中,可以直接利用已经得到的结果,而不必重新生成,当Q为空时表明表达式最终生成。0063下面以图8和图9中为实施例说明Y1顶点最终表达式的生成过程。为了便于说明用PMAXI表示I顶点的最大合并项,PAJ,I表示顶点J中以I顶点为P属性的并联原子表达式,用表示应用前面4步所描述的处理过程可推出的结果。0064PMAXY10065PMAXP40066PMAXP3ANDPAP4。

41、,P30067PMAXP3ANDX60068PMAXP1ANDPAP3,P1ORPAP2,P1ANDPAP3,P2ANDX60069PMAXP1ANDX8ANDX5ORX2ANDX3ORX4ANDX60070X1ANDX8ANDX5ORX2ANDX3ORX4ANDX600716、判断队列Q是否为空,如果不为空,继续重复上述5,直至Q为空。00727、对起始顶点进行处理,使其适合指令表的表达方式,将表达式除去不必要的括号以精简该表达式,然后为表达式添加必要的换行符号,使其与指令表的显示方式一致。0073本发明转换可以直接应用在PLC控制器上,直接完成将梯形图转换成PLC程序执行指令,其中,可以利。

42、用STVNAME指令将最大合并点的生成的中间结果保存到PLC存储单元中,形成辅助单元,利用LDVNAME指令将VNAME指定的寄存器的内容放到累加器中,利用PLC自身具有的AND和OR的运算功能,使PLC能够按照最终的指令表控制被控对象。0074上述各实施例仅用于说明本发明,其中实施方法的步骤的顺序是都是可以有所变化的,凡是在本发明技术方案的基础上进行的等同变换和改进,均不应排除在本发明的保护范围之外。说明书CN102354144ACN102354153A1/7页13图1图2说明书附图CN102354144ACN102354153A2/7页14图3图4图5图6图7说明书附图CN102354144ACN102354153A3/7页15图8图9说明书附图CN102354144ACN102354153A4/7页16图10说明书附图CN102354144ACN102354153A5/7页17图11说明书附图CN102354144ACN102354153A6/7页18图12图13说明书附图CN102354144ACN102354153A7/7页19图14说明书附图CN102354144A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 控制;调节


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1