一种应用于plc开发的梯形图转换为语句表的方法

文档序号:6310862阅读:599来源:国知局
专利名称:一种应用于plc开发的梯形图转换为语句表的方法
技术领域
本发明涉及编程语言转换技术领域,具体为ー种应用于PLC开发的梯形图转换为语句表的方法。
背景技术
可编程逻辑控制器(PLC,Programmable Logic Controller)在当今各行各业中应用非常广泛,而计算机技术的快速发展及IEC61131-3标准的颁布,进ー步促进了其发展。在IEC61131-3定义的5种PLC编程语言中,梯形图和语句表的应用最为广泛。梯形图以常开元件、常闭元件、定时器等图元的连接组合实现控制功能,作为ー种图形化编程语言易于工程人员的使用。语句表是ー种类汇编语言,易于处理器的解析。因此,在PLC开发中实现从梯形图到语句表的转换解算尤为重要,一直以来是PLC开发中的重点和难点。现已公知的转换方法主要有两种,一种可以称为扫描合并法,如申请号为200410078297的专利申请“将梯形图程序转换为指令列表程序的方法及系统”,其特征在于包括如下步骤a)生成梯形图程序中各网络内元件及其元件间连接关系的描述数据,形成各网络的元件集合和连接关系集合;b)分别从各网络的元件集合中的ー个元件开始,依据各网络的元件集合和连接关系集合生成用节点的描述网络内元件之间的逻辑关系的ニ叉树;c)分别遍历各ニ叉树的所有节点,根据节点描述的逻辑关系生成各节点对应的语句表。该方法不足之处是没有提及多输出的梯形图程序如何转换为语句表;该方法以图元对象和连接点对象的集合来描述梯形图,该数据结构时间和空间复杂度较高,对某些串并联逻辑关系比较复杂的梯形图不能很好的得到转换結果,即并不适用于串、并联逻辑关系比较复杂的梯形图程序。另ー种可以称作基于AOV有向图的转换方法,如申请号为200810195899的专利申请“ー种将梯形图转换为指令表程序及解释执行的方法与系统”和《计算机工程与应用》,2010,46 (18) =244-248公开的“软PLC梯形图到语句表转换新策略的研究”,该方法包括如下步骤a)将梯形图映射为AOV图;b)由其建立表示指令间的逻辑关系的ニ叉树;c)通过后序遍历ニ叉树实现梯形图与语句表的转换。该方法能够实现各种复杂梯形图与语句表间的转换,但中间数据结构ニ叉树的建立过程比较繁琐,需要建立多个冗余的树结点,时间和空间复杂度较高。

发明内容
要解决的技术问题为解决现有技术存在的不足,本发明提出了ー种应用于PLC开发的梯形图转换为语句表的方法,该方法基于节点势能,以达到降低转换复杂度,解算多支梯形图及复杂梯形图程序等目的。技术方案本发明提出的ー种应用于PLC开发的梯形图转换为语句表的方法,是ー种基于“节点势能”的将梯形图转换为语句表的方法,它的指导思想是将梯形图类比电路图,仿照电势能,以“节点势能”虚拟梯形图中能量流动对每支梯形图,从左母线进入梯形图时节点的势能值为O,能量在梯形图中按一定规则变化,经过梯形图后连接到右母线节点的最终势能值变为N,N为远大于梯形图中图元个数与梯形图行数之和的数值。本发明首次提出了“节点势能”这ー概念。节点,即梯形图各图元间的连接点。节点势能,即节点的势能值,每个节点拥有唯一的 节点势能值。除竖线外,梯形图每个图元都有左右两个节点,因此除去竖线每个图元拥有左节点势能值和右节点势能值。本发明以ー种基干“节点势能”的图元数据集合描述梯形图,进而基干“节点势能”关系按特定的步骤将梯形图转化为最终ニ叉树数据结构,最后通过遍历最終ニ叉树得到语句表。本发明的技术方案为所述ー种应用于PLC开发的梯形图转换为语句表的方法,其特征在于包括以下步骤步骤I :以基干“节点势能”的图元数据集合描述梯形图,其中基干“节点势能”的单个图元数据结构包括图元类型,图元左、右节点势能值,图元行、列值,图元地址和图元属性參数;步骤2 :给图元的左、右节点赋节点势能值步骤2. I :从上到下逐行扫描梯形图,每行按从左到右顺序扫描,除竖线为,按规则2. I给图元的左、右节点赋节点势能值规则2. I:a、第一行最左端图元的左节点势能值=0 ;b、对于同一图元,其右节点势能值=左节点势能值+1 ;C、对于同一行左侧相邻一列有图兀的图兀,其左节点势能值=前一个被扫描图兀右节点势能值;d、对于同一行左侧相邻一列无图元的图元,其左节点势能值=前一个被扫描图元右节点势能值+1;步骤2. 2 :按照规则2. 2对特殊类型图元的左、右节点势能值进ー步处理规则2. 2:a、首先将连接左母线的图元的左节点势能值赋0,将连接右母线的图元的右节点势能值赋N,其中N为远大于梯形图中图元个数与梯形图行数之和的数值;b、其次处理竖线连接的节点令下行节点的势能值等于上行节点的势能值;C、最后处理横线连接的节点令横线左侧相邻图元的右节点势能值、横线的左节点势能值、横线的右节点势能值、横线右侧相邻图元的左节点势能值相等,且等于其中的最小值;步骤3 :将用图元数据集合描述的梯形图转化为ニ叉树数据结构,其中二叉树数据结构包括索引号,ニ叉树类型,左、右节点势能值,行值,根节点内容,左、右节点指针,独立标志位和遍历标志位步骤3. I :从上到下逐行扫描采用图元数据集合描述的梯形图,每行按从左到右顺序扫描,建立除横线和竖线外的每个图元对应的初始ニ叉树数据结构;其中初始ニ叉树中的索引号按建立顺序从O开始依次递增;ニ叉树类型,左、右节点势能值,行值等于对应图元数据结构中的图元类型,图元左、右节点势能值,图元行值;根节点内容为对应图元数据结构中图元地址和图元属性參数对应的操作数,左、右节点指针为空,独立标志位设为独立,遍历标志位设未被遍历;步骤3. 2 :按照索引号从小到大顺序扫描所有独立ニ叉树,在扫描得到的右节点势能值不为N的独立ニ叉树范围中,按照并联规则处理所有并联关系;步骤3. 3 :按照索引号从小到大顺序扫描经过步骤3. 2处理后的所有独立ニ叉树,在扫描得到的右节点势能值不为N且ニ叉树类型不为取反、上升沿、下降沿中任一类型的独立ニ叉树范围中,按照串联规则处理所有“节点交汇处有且仅有两个ニ叉树串联”的串联关系;步骤3. 4 :重复步骤3. 2至步骤3. 3,直至没有新的ニ叉树生成,进入步骤3. 5 ;
步骤3. 5 :按照索引号从小到大顺序扫描经过步骤3. 4后的所有独立ニ叉树,在扫描得到的右节点势能值不为N的独立ニ叉树范围中,按串联规则处理完所有剩余的串联关系串联取反、上升沿ニ叉树、下降沿ニ叉树,节点交汇处有两个以上ニ叉树串联;处理完后剩余的独立ニ叉树为左节点势能值为O的ニ叉树或右节点势能值为N的ニ叉树;步骤3. 6 :按照索引号从小到大顺序扫描经过步骤3. 5处理后的剰余独立ニ叉树,按串联规则处理所有剩余独立ニ叉树,得到最终ニ叉树;最终ニ叉树左节点势能值为0,右节点势能值为N ;所述并联规则为对某两个ニ叉树a,b,若ニ叉树a左节点势能值=ニ叉树b左节点势能值,ニ叉树a右节点势能值=ニ叉树b右节点势能值,则a,b为并联关系;若将并联关系建立为ー个新的ニ叉树,则新的ニ叉树的索引号按已有的ニ叉树构建序列继续依次排列,类型为“并联块”,左、右节点势能值与并联的两个ニ叉树的左、右节点势能值相等,行值等于并联的两个ニ叉树行值中的小值,根节点内容为并联关系指令,左支指向行值较小的ニ叉树,右支指向行值较大的ニ叉树,ニ叉树设为独立,未被遍历;构建新ニ叉树的同时将并联的两个旧ニ叉树a和b设为非独立;所述串联规则为对某两个ニ叉树a,b,若ニ叉树a右节点势能值=ニ叉树b左节点势能值,则a,b为串联关系;若将串联关系建立为ー个新的ニ叉树,则新的ニ叉树的索引号按已有的ニ叉树构建序列继续依次排列,ニ叉树类型为“串联块”,左节点势能值=a的左节点势能值,右节点势能值=b的右节点势能值,左支指向ニ叉树a,右支指向ニ叉树b,根节点内容为左右支ニ叉树类型決定的指令,行值等于ニ叉树b的行值,ニ叉树设为独立,未被遍历;构建新ニ叉树的同时将串联的两个旧ニ叉树a和b设为非独立;步骤4 :遍历步骤3得到的最終ニ叉树,建立语句表;若有M支最終ニ叉树,则按行值从小到大依次遍历,且只遍历一次;对于ニ叉树类型为关系块且右支连接有关系块的ニ叉子树,采用后续遍历,否则采用中序遍历,其中关系块指并联块或串联块;遍历时遇到左叶子ニ叉树时,向语句表中加写装载指令。有益效果本发明通过对梯形图“节点势能”的确定,将梯形元间的连接关系抽象为数值关系,从而以一种复杂度较低的数据结构将梯形图完整地描述出来。该数据结构与现有方法相比更加简单清晰,并且降低了转换的复杂度,能够转换含多输出的梯形图程序及复杂的梯形图程序。该转换方法还能够为其他类似图形关系的解算提供參考,具有普遍适用性。


图I :本发明中梯形图到语句表转换过程;图2 :实施例中节点势能示意图;图3 :ニ叉树构建流程图;
图4 :实施例中最终ニ叉树14的全貌图。
具体实施例方式下面结合实施例描述本发明以图2中的梯形图为实施例,具体的将梯形图转换为语句表的方法为步骤I :以基干“节点势能”的图元数据集合描述梯形图,其中基干“节点势能”的单个图元数据结构包括图元类型,图元左、右节点势能值,图元行、列值,图元地址和图元属性參数;具体为名称Element成员type-图元类型,整数型。如本实施例中type=2代表常开节点,type=3
代表常闭节点,等等Ienode-图元左节点势能值,整数型。rinode-图元右节点势能值,整数型。row, col——图元的行、列位置,整数型,整数型。jcq,nl,n2——图元的地址寄存器,字,位,字符串型,整数型,整数型。n3,n4——图元的属性參数,共用体型。所有图元的集合m_ptrArray将整个梯形图描述出来。步骤2 :给图元的左、右节点赋节点势能值步骤2. I :从上到下逐行扫描梯形图,每行按从左到右顺序扫描,除竖线为,按规则2. I给图元的左、右节点赋节点势能值规则2. I a、第一行最左端图元的左节点势能值=0 ;b、对于同一图元,其右节点势能值=左节点势能值+1 ;C、对于同一行左侧相邻一列有图兀的图兀,其左节点势能值=前一个被扫描图兀右节点势能值;d、对于同一行左侧相邻一列无图元的图元,其左节点势能值=前一个被扫描图元右节点势能值+1 ;步骤2. 2 :按照规则2. 2对特殊类型图元的左、右节点势能值进ー步处理规则2. 2 a、首先将连接左母线的图元的左节点势能值赋0,将连接右母线的图元的右节点势能值赋N,其中N为远大于梯形图中图元个数与梯形图行数之和的数值;本实施例中取N=IOOOO ;b、其次处理竖线连接的节点令下行节点的势能值等于上行节点的势能值;
C、最后处理横线连接的节点令横线左侧相邻图元的右节点势能值、横线的左节点势能值、横线的右节点势能值、横线右侧相邻图元的左节点势能值相等,且等于其中的最小值;參照附图2,①、②分别给出了步骤2. I和步骤2. 2完成后的节点势能值。描述图2梯形图的各图元数据如下表1,按行列顺序排列图元序号表I :
权利要求
1.ー种应用于PLC开发的梯形图转换为语句表的方法,其特征在于包括以下步骤 步骤I :以基干“节点势能”的图元数据集合描述梯形图,其中基干“节点势能”的单个图元数据结构包括图元类型,图元左、右节点势能值,图元行、列值,图元地址和图元属性參数; 步骤2 :给图元的左、右节点赋节点势能值 步骤2. I :从上到下逐行扫描梯形图,每行按从左到右顺序扫描,除竖线为,按规则2. I给图元的左、右节点赋节点势能值 规则2. I a、第一行最左端图元的左节点势能值=O; b、对于同一图元,其右节点势能值=左节点势能值+1; C、对于同一行左侧相邻一列有图元的图元,其左节点势能值=前ー个被扫描图元右节点势能值; d、对于同一行左侧相邻一列无图元的图元,其左节点势能值=前ー个被扫描图元右节点势能值+1 ; 步骤2. 2 :按照规则2. 2对特殊类型图元的左、右节点势能值进ー步处理 规则2. 2 a、首先将连接左母线的图元的左节点势能值赋0,将连接右母线的图元的右节点势能值赋N,其中N为远大于梯形图中图元个数与梯形图行数之和的数值; b、其次处理竖线连接的节点令下行节点的势能值等于上行节点的势能值; C、最后处理横线连接的节点令横线左侧相邻图元的右节点势能值、横线的左节点势能值、横线的右节点势能值、横线右侧相邻图元的左节点势能值相等,且等于其中的最小值; 步骤3:将用图元数据集合描述的梯形图转化为ニ叉树数据结构,其中二叉树数据结构包括索引号,ニ叉树类型,左、右节点势能值,行值,根节点内容,左、右节点指针,独立标志位和遍历标志位 步骤3. I :从上到下逐行扫描采用图元数据集合描述的梯形图,每行按从左到右顺序扫描,建立除横线和竖线外的每个图元对应的初始ニ叉树数据结构;其中初始ニ叉树中的索引号按建立顺序从O开始依次递增;ニ叉树类型,左、右节点势能值,行值等于对应图元数据结构中的图元类型,图元左、右节点势能值,图元行值;根节点内容为对应图元数据结构中图元地址和图元属性參数对应的操作数,左、右节点指针为空,独立标志位设为独立,遍历标志位设未被遍历; 步骤3. 2 :按照索引号从小到大顺序扫描所有独立ニ叉树,在扫描得到的右节点势能值不为N的独立ニ叉树范围中,按照并联规则处理所有并联关系; 步骤3. 3 :按照索引号从小到大顺序扫描经过步骤3. 2处理后的所有独立ニ叉树,在扫描得到的右节点势能值不为N且ニ叉树类型不为取反、上升沿、下降沿中任一类型的独立ニ叉树范围中,按照串联规则处理所有“节点交汇处有且仅有两个ニ叉树串联”的串联关系; 步骤3. 4 :重复步骤3. 2至步骤3. 3,直至没有新的ニ叉树生成,进入步骤3. 5 ; 步骤3. 5 :按照索引号从小到大顺序扫描经过步骤3. 4后的所有独立ニ叉树,在扫描得到的右节点势能值不为N的独立ニ叉树范围中,按串联规则处理完所有剩余的串联关系串联取反、上升沿ニ叉树、下降沿ニ叉树,节点交汇处有两个以上ニ叉树串联;处理完后剩余的独立ニ叉树为左节点势能值为O的ニ叉树或右节点势能值为N的ニ叉树; 步骤3. 6 :按照索引号从小到大顺序扫描经过步骤3. 5处理后的剰余独立ニ叉树,按串联规则处理所有剩余独立ニ叉树,得到最终ニ叉树;最终ニ叉树左节点势能值为O,右节点势能值为N ; 所述并联规则为对某两个ニ叉树a,b,若ニ叉树a左节点势能值=ニ叉树b左节点势能值,ニ叉树a右节点势能值=ニ叉树b右节点势能值,则a,b为并联关系;若将并联关系建立为ー个新的ニ叉树,则新的ニ叉树的索引号按已有的ニ叉树构建序列继续依次排列,类型为“并联块”,左、右节点势能值与并联的两个ニ叉树的左、右节点势能值相等,行值等于并联的两个ニ叉树行值中的小值,根节点内容为并联关系指令,左支指向行值较小的ニ 叉树,右支指向行值较大的ニ叉树,ニ叉树设为独立,未被遍历;构建新ニ叉树的同时将并联的两个旧ニ叉树a和b设为非独立; 所述串联规则为对某两个ニ叉树a,b,若ニ叉树a右节点势能值=ニ叉树b左节点势能值,则a,b为串联关系;若将串联关系建立为ー个新的ニ叉树,则新的ニ叉树的索引号按已有的ニ叉树构建序列继续依次排列,ニ叉树类型为“串联块”,左节点势能值=a的左节点势能值,右节点势能值=b的右节点势能值,左支指向ニ叉树a,右支指向ニ叉树b,根节点内容为左右支ニ叉树类型決定的指令,行值等于ニ叉树b的行值,ニ叉树设为独立,未被遍历;构建新ニ叉树的同时将串联的两个旧ニ叉树a和b设为非独立; 步骤4 :遍历步骤3得到的最终ニ叉树,建立语句表;若有M支最终ニ叉树,则按行值从 小到大依次遍历,且只遍历一次;对于ニ叉树类型为关系块且右支连接有关系块的ニ叉子树,采用后续遍历,否则采用中序遍历,其中关系块指并联块或串联块;遍历时遇到左叶子ニ叉树时,向语句表中加写装载指令。
全文摘要
本发明提出了一种应用于PLC开发的梯形图转换为语句表的方法,以一种基于“节点势能”的图元数据集合描述梯形图,进而基于“节点势能”关系按特定的步骤将梯形图转化为最终二叉树数据结构,最后通过遍历最终二叉树得到语句表。本发明通过对梯形图“节点势能”的确定,将梯形元间的连接关系抽象为数值关系,从而以一种复杂度较低的数据结构将梯形图完整地描述出来。该数据结构与现有方法相比更加简单清晰,并且降低了转换的复杂度,能够转换含多输出的梯形图程序及复杂的梯形图程序。该转换方法还能够为其他类似图形关系的解算提供参考,具有普遍适用性。
文档编号G05B19/05GK102736552SQ20121022277
公开日2012年10月17日 申请日期2012年7月1日 优先权日2012年7月1日
发明者吴旭光, 牛云, 郝方, 魏晓晴 申请人:西北工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1