一种基于发电机组控制器的PLC指令表转梯形图的方法技术

技术编号:11213765 阅读:99 留言:0更新日期:2015-03-27 00:22
本发明专利技术提供一种基于发电机组控制器的PLC指令表转梯形图的方法,包括以下步骤:步骤1:根据PLC指令表构建中间树;步骤2:遍历中间树;步骤3:输出步骤2中生成的梯形图。本发明专利技术方法提供了一种由PLC指令表生成梯形图的方法,可自动检测错误和冗余,由PLC指令表生成中间树结构,然后由中间树生成梯形图。

【技术实现步骤摘要】
一种基于发电机组控制器的PLC指令表转梯形图的方法
本专利技术涉及一种指令表转梯形图的方法,具体的说,涉及了一种基于发电机组控制器的PLC指令表转梯形图的方法。
技术介绍
PLC的编程语言一般采用梯形图语言(LD)、指令表语言(IL)、功能模块语言(FBD)、顺序功能流程图语言(SFC)和结构化文本语言(ST)五种,然而,在使用的过程中,有时候需要将现有的指令表转为梯形图,普通的方法在转梯形图的过程中不能纠错,并且容易出现翻译错误或者冗余。为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。
技术实现思路
本专利技术的目的是针对现有技术的不足,提供了一种易于实现,能自动检测错误和冗余的基于发电机组控制器的PLC梯形图转指令表的方法。为了实现上述目的,本专利技术所采用的技术方案是:一种基于发电机组控制器的PLC指令表转梯形图的方法,包括以下步骤:步骤1:根据PLC指令表构建中间树:定义一个栈来保存节点,从上到下逐步翻译PLC指令表每一行的指令;a、若是LD或LDNOT指令,新建一个叶子节点X,并将新建的叶子节点X推进栈;b、如果碰到AND或ANDNOT指令,新建一个叶子节点X,然后判断栈顶节点的类型;如果是串联节点,将该叶子节点X设置为栈顶节点的子节点;如果栈顶节点是叶子节点或并联节点,则新建一个串联节点S,将新建的叶子节点X和栈顶节点设置为新建的串联节点S的子节点,栈顶节点出栈,新建的串联节点S进栈;c、如果碰到OR和ORNOT指令,新建一个叶子节点X,然后判断栈顶节点的类型;如果是并联节点,直接将新建的叶子节点X设置为栈顶节点的子节点;如果是叶子节点或串联节点,新建一个并联节点P,将叶子节点X和栈顶节点设置为该并联节点P的子节点,栈顶节点出栈,该并联节点P进栈;d、如果碰到ANDLD指令,新建一个串联节点S,将栈的前两个节点出栈,并将这两个节点设置为该串联节点S的子节点,该串联节点S进栈;e、如果碰到ORLD指令,新建一个并联节点P,将栈的前两个节点出栈,并将这两个节点设置为该并联节点P的子节点,该并联节点P进栈;f、碰到OUT指令,新建输出节点;g、碰到END指令,则结束,中间树生成完成;其中,所述中间树的节点包括叶子节点X和关系节点,所述关系节点为梯形图逻辑节点的父节点,包括串联节点S和并联节点P;所述叶子节点X为梯形图中逻辑节点开关量;每个叶子节点X必须有个关系父节点,如果关系节点的子节点为关系节点,关系子节点不能与父节点类型相同;步骤2:遍历中间树:a1、遍历中间树,如果是关系节点,那么继续递归下去,直到遍历到叶子节点X,则绘制成梯形图的一个逻辑节点;b1、遍历到下一个叶子节点X,该叶子节点X与上一个节点有一个共同的关系节点,判断该关系节点的类型,如果是串联节点S则绘制在上一个节点的X轴方向的后面,如果是并联节点P则绘制在上一个节点Y轴方向的下面;c1、依次遍历完中间树的所有叶子节点X,根据步骤a1、步骤b1将中间树中每一个叶子节点X都绘制成梯形图中的一个逻辑节点;步骤3:输出步骤2中生成的梯形图。本专利技术相对现有技术具有突出的实质性特点和显著进步,具体的说,本专利技术方法提供了一种由PLC指令表生成梯形图的方法,可自动检测错误和冗余,由PLC梯形图生成中间树结构,然后由中间树生成指令表。附图说明图1是本专利技术方法具体说明的步骤e中依据采用的PLC指令表生成的中间树。图2是本专利技术方法具体说明中依据采用的PLC指令表最终生成的中间树。图3是本专利技术方法具体说明中依据采用的PLC指令表最终生成的梯形图。具体实施方式下面通过具体实施方式,对本专利技术的技术方案做进一步的详细描述。一种基于发电机组控制器的PLC指令表转梯形图的方法,包括以下步骤:步骤1:根据PLC指令表构建中间树:定义一个栈来保存节点,从上到下逐步翻译PLC指令表每一行的指令;a、若是LD或LDNOT指令,新建一个叶子节点X,并将新建的叶子节点X推进栈;b、如果碰到AND或ANDNOT指令,新建一个叶子节点X,然后判断栈顶节点的类型;如果是串联节点,将该叶子节点X设置为栈顶节点的子节点;如果栈顶节点是叶子节点或并联节点,则新建一个串联节点S,将新建的叶子节点X和栈顶节点设置为新建的串联节点S的子节点,栈顶节点出栈,新建的串联节点S进栈;c、如果碰到OR和ORNOT指令,新建一个叶子节点X,然后判断栈顶节点的类型;如果是并联节点,直接将新建的叶子节点X设置为栈顶节点的子节点;如果是叶子节点或串联节点,新建一个并联节点P,将叶子节点X和栈顶节点设置为该并联节点P的子节点,栈顶节点出栈,该并联节点P进栈;d、如果碰到ANDLD指令,新建一个串联节点S,将栈的前两个节点出栈,并将这两个节点设置为该串联节点S的子节点,该串联节点S进栈;e、如果碰到ORLD指令,新建一个并联节点P,将栈的前两个节点出栈,并将这两个节点设置为该并联节点P的子节点,该并联节点P进栈;f、碰到OUT指令,新建输出节点;g、碰到END指令,则结束,中间树生成完成;其中,所述中间树的节点包括叶子节点X和关系节点,所述关系节点为梯形图逻辑节点的父节点,包括串联节点S和并联节点P;所述叶子节点X为梯形图中逻辑节点开关量;每个叶子节点X必须有个关系父节点,如果关系节点的子节点为关系节点,关系子节点不能与父节点类型相同;步骤2:遍历中间树:a1、遍历中间树,如果是关系节点,那么继续递归下去,直到遍历到叶子节点X,则绘制成梯形图的一个逻辑节点;b1、遍历到下一个叶子节点X,该叶子节点X与上一个节点有一个共同的关系节点,判断该关系节点的类型,如果是串联节点S则绘制在上一个节点的X轴方向的后面,如果是并联节点P则绘制在上一个节点Y轴方向的下面;c1、依次遍历完中间树的所有叶子节点X,根据步骤a1、步骤b1将中间树中每一个叶子节点X都绘制成梯形图中的一个逻辑节点;步骤3:输出步骤2中生成的梯形图。以下对上述PLC指令表转梯形图的方法做出具体说明:PLC指令表中的指令包括以下10种:LD、LDNOT、AND、ANDNOT、OR、ORNOT、ANDLD、ORLD、OUT、END;具体说明时,拟采用如下表所示的PLC指令表:LDX1LDX2ORNOTX3ANDLDORX4LDX5LDX6LDX7ORX8ANDLDORLDORX9ANDLDANDX10OUTFun#1END。a、定义一个栈来保存节点。b、读取上述PLC指令表中的第一行“LDX1”,读取到LD指令,则新建一个叶子节点X1,叶子节点X1进栈。c、接着又读取到“LDX2”指令,同步骤b,新建一个叶子节点X2,叶子节点X2进栈。d、读取到“ORNOTX3”,新建叶子节点X3。因为是ORNOT指令,所以要判断栈顶节点的类型,即X2节点的类型。由于X2节点为叶子节点,所以要新建一个并联节点P1,将X2节点和X3节点设置为并联节点P1的子节点,X2节点出栈,并联节点P1进栈,现在,栈中有两个节点:叶子节点X1和并联节点P1。e、读取到ANDLD,新建一个串联节点S1,并将栈中的第一个和第二个节点设置为串联节点S1的子节点,即:将叶子节点X1和并联节点P1设置为串联节点S1的子节点,叶子节点X1和并联节点P1出栈,S1节点进栈,此时栈中只有一个串联本文档来自技高网...
一种基于发电机组控制器的PLC指令表转梯形图的方法

【技术保护点】
一种基于发电机组控制器的PLC指令表转梯形图的方法,其特征在于,包括以下步骤:步骤1:根据PLC指令表构建中间树:定义一个栈来保存节点,从上到下逐步翻译PLC指令表每一行的指令;a、若是LD或LDNOT指令,新建一个叶子节点X,并将新建的叶子节点X推进栈;b、如果碰到AND或ANDNOT指令,生成一个叶子节点X,然后判断栈顶节点的类型;如果是串联节点,将该叶子节点X设置为栈顶节点的子节点;如果栈顶节点是叶子节点或并联节点,则新建一个串联节点S,将生成的叶子节点X和栈顶节点设置为新建的串联节点S的子节点,栈顶节点出栈,新建的串联节点S进栈;c、如果碰到OR和ORNOT指令,生成一个叶子节点X,然后判断栈顶节点的类型;如果是并联节点,直接将生成的叶子节点X设置为栈顶节点的子节点;如果是叶子节点或串联节点,新建一个并联节点P,将叶子节点X和栈顶节点设置为该并联节点P的子节点,栈顶节点出栈,该并联节点P进栈;d、如果碰到ANDLD指令,新建一个串联节点S,将栈的前两个节点出栈,并将这两个节点设置为该串联节点S的子节点,该串联节点S进栈;e、如果碰到ORLD指令,新建一个并联节点P,将栈的前两个节点出栈,并将这两个节点设置为该并联节点P的子节点, 该并联节点P进栈;f、碰到OUT指令,新建输出节点;g、碰到END指令,则结束,中间树生成完成;其中,所述中间树的节点包括叶子节点X和关系节点,所述关系节点为梯形图逻辑节点的父节点,包括串联节点S和并联节点P;所述叶子节点X为梯形图中逻辑节点开关量;每个叶子节点X必须有个关系父节点,如果关系节点的子节点为关系节点,关系子节点不能与父节点类型相同;步骤2:遍历中间树:a、遍历中间树,如果是关系节点,那么继续递归下去,直到遍历到叶子节点X,则绘制成梯形图的一个逻辑节点;b、遍历到下一个叶子节点X,该叶子节点X与上一个节点有一个共同的关系节点,判断该关系节点的类型,如果是串联节点S则绘制在上一个节点的X轴方向的后面,如果是并联节点P则绘制在上一个节点Y轴方向的下面;c、依次遍历完中间树的所有叶子节点X,根据步骤a、步骤b将中间树中每一个叶子节点X都绘制成梯形图中的一个逻辑节点;步骤3:输出步骤2中生成的梯形图。...

【技术特征摘要】
1.一种基于发电机组控制器的PLC指令表转梯形图的方法,其特征在于,包括以下步骤:步骤1:根据PLC指令表构建中间树:定义一个栈来保存节点,从上到下逐步翻译PLC指令表每一行的指令;a、若是LD或LDNOT指令,新建一个叶子节点X,并将新建的叶子节点X推进栈;b、如果碰到AND或ANDNOT指令,新建一个叶子节点X,然后判断栈顶节点的类型;如果是串联节点,将该叶子节点X设置为栈顶节点的子节点;如果栈顶节点是叶子节点或并联节点,则新建一个串联节点S,将新建的叶子节点X和栈顶节点设置为新建的串联节点S的子节点,栈顶节点出栈,新建的串联节点S进栈;c、如果碰到OR和ORNOT指令,新建一个叶子节点X,然后判断栈顶节点的类型;如果是并联节点,直接将新建的叶子节点X设置为栈顶节点的子节点;如果是叶子节点或串联节点,新建一个并联节点P,将叶子节点X和栈顶节点设置为该并联节点P的子节点,栈顶节点出栈,该并联节点P进栈;d、如果碰到ANDLD指令,新建一个串联节点S,将栈的前两个节点出栈,并将这两个节点设置为该串联节点S的子节点,该串联节点S...

【专利技术属性】
技术研发人员:冯斌朱伟燕刘晓东彭长泓刘霞丽
申请(专利权)人:郑州众智科技股份有限公司
类型:发明
国别省市:河南;41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1