公开/公告号CN104317631A
专利类型发明专利
公开/公告日2015-01-28
原文格式PDF
申请/专利权人 湖南先步信息股份有限公司;
申请/专利号CN201410572477.7
申请日2014-10-24
分类号G06F9/45(20060101);
代理机构44214 广州市红荔专利代理有限公司;
代理人张文
地址 410000 湖南省长沙市雨花经济开发区兴业路18号
入库时间 2023-12-17 04:10:37
法律状态公告日
法律状态信息
法律状态
2022-11-18
专利权质押合同登记的生效 IPC(主分类):G06F 8/53 专利号:ZL2014105724777 登记号:Y2022430000095 登记生效日:20221101 出质人:湖南先步信息股份有限公司 质权人:华融湘江银行股份有限公司长沙分行 发明名称:语句表到梯形图的转换方法 申请日:20141024 授权公告日:20180209
专利权质押合同登记的生效、变更及注销
2019-06-14
专利权质押合同登记的生效 IPC(主分类):G06F8/53 登记号:2019430000045 登记生效日:20190522 出质人:湖南先步信息股份有限公司 质权人:交通银行股份有限公司湖南省分行 发明名称:语句表到梯形图的转换方法 授权公告日:20180209 申请日:20141024
专利权质押合同登记的生效、变更及注销
2018-02-09
授权
授权
2015-02-25
实质审查的生效 IPC(主分类):G06F9/45 申请日:20141024
实质审查的生效
2015-01-28
公开
公开
技术领域
本发明涉及工业控制领域,特别是语句表到梯形图的转换方法。
背景技术
梯形图(Ladder Diagram)作为起源于早期继电器逻辑控制电路的一种图形化编程语言,由于其简单易用,可高效直观地实现复杂的逻辑控制功能,在工业控制领域当中从简单的PLC到复杂得系统如集散控制系统(DCS)、现场总线控制系统(FCS)中都作为一个必不可少且往往是最主要的编程语言。梯形图一般会被编译成为语句表,在具体实现中语句表往往就是IEC61131-3虚拟主机的基本指令,从虚拟主机的二进制程序代码与语句表指令一一对应。出于调试维护的原因,有时需要上载已经在运行的PLC内部程序,上载的二进制代码可以很方便的转换为语句表,语句表毕竟是文本化程序语言,没有梯形图看起来直观简单,因此需要将语句表转化为梯形图。
发明内容
本发明的目的是提供一种语句表到梯形图的转换方法。
本发明是通过以下技术方案予以实现的:
语句表到梯形图的转换方法,以LD/LDN类指令,AND/ANDN类指令,OR/ORN类指令,ALD指令,OLD指令,LPS、LRDLPP指令这五类指令为中,以及线圈(Coil)类与功能盒(Box)类指令则根据当前逻辑栈顶的值来决定是否执行或赋值,可根据需要任意扩展;具体步骤如下:
步骤1:建立必要的数据结构;
步骤2:创建路径链表:①创建一个链表结构,存储这里称之为“路径”的对象,路径对象描述了该组成该路径的梯形图元件、源节点号、目标节点号的信息。路径还可以包含子路径,子路径之间可以是串联或并联关系;②建立一种节点号申请机制,使得每次都可申请到一个新的节点号;③建立路径的出发节点(源节点)机进入节点(目标节点)堆栈;
步骤3:扫描语句表,生成路径链表;
步骤4:根据所扫描到的指令,按下面的算法生成路径链表:
⑴LD/LDN类指令:
①. 生成一个新的路径,路径中包含一个触点类型的梯形图元件;
②. 申请新的节点号,压入源节点号堆栈;
③. 再次申请新的节点号,压入目标节点号堆栈;
④. 新路径的源节点号等于源节点号堆栈栈顶值;
⑤. 新路径的目标节点号等于目标节点号堆栈栈顶值;
⑥. 新生成的路径插入到链表的前端;
⑵AND/ANDN类指令:
①. 生成一个新的路径,路径中包含一个触点类型的梯形图元件;
②. 新路径源节点号等于目标节点号堆栈栈顶值;
③. 申请新的节点号,替换目标节点号堆栈栈顶值;
④. 新路径的源节点号等于源节点号堆栈栈顶值;
⑤. 新路径的目标节点号等于目标节点号堆栈栈顶值;
⑥. 新生成的路径与链表最前端的路径合并生成一个串联复合路径;
⑶OR/ORN类指令:
①. 生成一个新的路径,路径中包含一个触点类型的梯形图元件;
②. 新路径源节点号等于源节点号堆栈栈顶值;
③. 新路径目标节点号等于目标节点号堆栈栈顶值;
④. 新生成的路径与链表最前端的路径合并生成一个并联复合路径;
⑷ALD指令:
①. 生成一个新的路径,不包含任何元件;
②. 新路径源节点号等于源节点号堆栈栈顶值;
③. 链表头开始第2位置路径的源节点号等于目标节点号堆栈栈顶值;
④. 源节点号堆栈弹出,用新路径源节点号替换源节点号堆栈栈顶值;
⑤. 目标节点号堆栈弹出;
⑥. 新路径目标节点号等于目标节点号堆栈栈顶值;
⑦. 按顺序将链表头开始的2个路径移动到新路径的子路径;
⑧. 新生成的路径插入到链表的前端;
⑸OLD指令:
①. 生成一个新的路径。不包含任何元件;
②. 源节点号堆栈弹出;
③. 目标节点号堆栈弹出;
④. 新路径源节点号等于源节点号堆栈栈顶值;
⑤. 新路径目标节点号等于目标节点号堆栈栈顶值;
⑥. 链表头开始第1、2位置路径的源节点号等于源节点号堆栈栈顶值;
⑦. 链表头开始第1、2位置路径的目标节点号等于目标节点号堆栈栈顶值;
⑧. 按顺序将链表头开始的2个路径移动到新路径的子路径;
⑨. 新生成的路径插入到链表的前端;
⑹LPS指令:复制目标节点号堆栈栈顶值并压栈:
⑺LRD指令:复制目标节点号堆栈第2位置的值到栈顶:
⑻LPP指令:目标节点号堆栈弹出:
⑼线圈(Coil)类指令:
①. 生成一个新的路径,路径中包含一个线圈类型的梯形图元件;
②. 新路径源节点号等于源节点号堆栈栈顶值;
③. 新路径目标节点号等于新节点号;
④. 新生成的路径插入到链表的前端;
⑽功能盒(Box)类指令:
①. 生成一个新的路径,路径中包含一个功能盒(Box)类型的梯形图元件;
②. 新路径源节点号等于源节点号堆栈栈顶值;
③. 新路径目标节点号等于新节点号;
④. 新生成的路径插入到链表的前端;
步骤5:从路径链表中提起梯形图:
原始路径为只有1个梯形图元件,没有子路径的路径;将路径链表中的所有原始路径中的梯形图元件提出,就可得到语句表所对应的梯形图元件及连接相互之间的连接关系了;从原始路径中提取梯形图元件时,遵循以下原则:
①. 梯形图元件左侧连接到路径源节点号对应的接入点,梯形图元件右侧连接到路径门板节点号对应的接入点;
②. 按路径在链表/子链表中的顺序存放梯形图元件。
附图说明
图1是本发明的梯形图;
图2是本发明的LD A生成对应路径的示意图;
图3是本发明的LD B生成对应路径的示意图;
图4是本发明的AND C生成对应路径的示意图;
图5是本发明的LD D生成对应路径的示意图;
图6是本发明的AND E生成对应路径的示意图;
图7是本发明的OLD建立路径之间关系的示意图;
图8是本发明的OR F生成对应路径的示意图;
图9是本发明的ALD建立路径之间关系的示意图;
图10是本发明的AND G生成对应路径的示意图;
图11是本发明的LPS处理路径节点的示意图;
图12是本发明的AND H生成对应路径的示意图;
图13是本发明的ADD生成对应路径的示意图;
图14是本发明的LRD生成对应路径的示意图。
具体实施方式
下面结合附图对本发明的实施例做进一步描述:
如图1所示的梯形图对应的语句表如下,后面的步骤描述将下面的语句表反编译为图1所示的梯形图:
LD A //将A加载到逻辑栈顶
LD B //逻辑堆栈下压1层,将B放到栈顶
AND C //逻辑栈顶与C相与,结果放到栈顶
LD D //逻辑堆栈下压1层,将B放到栈顶
AND E //逻辑栈顶与C相与,结果放到栈顶
OLD //栈顶与其下一层相或,逻辑堆栈上弹,结果放在栈顶
OR F //逻辑栈顶与H相与
ALD //栈顶与其下一层相或,逻辑堆栈上弹,结果放在栈顶
AND G //逻辑栈顶与I相与,结果放到栈顶
LPS //下压逻辑栈,并保持栈顶值不变
AND H //逻辑栈顶与J相与,结果放到栈顶
ADD //如果栈顶为真,则进行加法运算
LRD //复制次层的值到栈顶
LD I //逻辑堆栈下压1层,将I放到栈顶
LD J //逻辑堆栈下压1层,将J放到栈顶
AND K //逻辑栈顶与K相与,结果放到栈顶
OLD //栈顶与其下一层相或,逻辑堆栈上弹,结果放在栈顶
ALD //栈顶与其下一层相与,逻辑堆栈上弹,结果放在栈顶
SUB //如果栈顶为真,则进行减法运算
LPP //逻辑堆栈上弹
MUL //如果栈顶为真,则进行乘法运算。
机译: 介质存储分区表,介质存储分区表生成方法,语句分析设备,语句分析方法和介质存储语句分析程序
机译: 用于插入语音合成的模型语句表数据库和用于生成模型语句表的方法
机译: 梯形图的转换方法