将梯形图程序转换为指令列表程序的方法及系统的制作方法

文档序号:6327046阅读:234来源:国知局
专利名称:将梯形图程序转换为指令列表程序的方法及系统的制作方法
技术领域
本发明涉及一种将梯形图程序转换为指令列表程序的方法及系统。
背景技术
可编程逻辑控制器在当今的各行各业中具有广泛的应用,如汽车、化工、纺织等等。它由输入端子、处理器和输出端子组成,主要功能是读入输入端子的电信号,转换为数字信号后在处理器中按照用户事先预设的逻辑进行处理,处理结果转换为电信号输出到输出端子上,再驱动其它设备完成相应的功能。
在可编程逻辑控制器中,用户可以使用设备供应商提供的开发语言编写自己的用户程序,下载到可编程逻辑控制器中运行,达到自己所需要的设备控制效果。从目前主流的可编程逻辑控制器编程软件来看,梯形图(LD)和指令列表(IL)是两种最主要的用于编写可编程逻辑控制器处理逻辑的用户开发语言。
LD是一种图形编程语言,它由输入触点、各种连接线和输出线圈组成,使用输入触点开关的逻辑组合来控制输出线圈,一个简单的LD程序如图1所示左边的母线表示电源的能流,输入触点X0和X1并联后再和触点X2串联的结果,决定能流是否能够接通到输出线圈Y0是否生效。输入触点X0或者X1需要有一个接通,并且触点X2是接通的,则能流就可以通过触点输出到线圈Y0。
LD的优点是图形化、直观,可以很容易的看出输入控制元件和输出元件之间的逻辑关系,对于刚接触可编程逻辑控制器的电气工程师可以很容易的学习和使用;其缺点是编程效率比较低,需要逐个选择需要的逻辑元件和输入元件参数。
IL是一种文本编程语言,它使用文本指令的方式装载输入触点和将结果输出到输出线圈中,和图1对应的IL语句如下
LD X0OR X1ANDX2OUTY0“LD X0”指令将X0触点的值装载到能流点中;“OR X1”指令将X1触点的值和当前能流点的值相并联以后的结果赋予当前能流点;“AND X2”指令将当前能流点的值和X2触点的值相串联后的结果赋予当前能流点;“OUT Y0”指令将当前能流点的值输出到Y0线圈中。
IL的优点是编程效率高,在LD中输入一个图形元件,在IL中只需要输入对应的一行指令代码即可;其缺点是不直观,从很多行的IL程序中,很难一下看出输入元件和输出元件简的关系。
LD图形语言转换到IL文本语言存在的问题从上面的示例可以看到,虽然是两种差别很大的编程方法,但是可以完成相同的处理逻辑,并且从LD图形到IL文本直观上有着一定对应关系LD图形上首先直接连接左母线的元件和IL中的“LD”指令对应;图形上一个元件和另一个元件的并联连接和IL中的“OR”指令对应;图形上一个元件和另一个元件的串联连接和IL中的“AND”指令对应;图形上的输出线圈和IL中的“OUT”指令对应。
在软件系统中,LD图形语言需要一种合理的数据结构来保存和维护用户编写的LD程序,可以方便的保存用户加入的各种元件,高效的识别元件之间的逻辑结构,快速的显示到计算机屏幕上供用户查看和修改;IL文本语言的数据结构只要可以正确保存字符串就可以了,用户对程序的修改也就是对数据结构中字符串的修改。
由于两种编程语言的特点,用户在对可编程逻辑控制器编程时,常常根据编程效率或者检查方便性的需要在LD和IL语言之间切换,如何快速、稳定的从LD语言转换到IL是其中一个很重要的问题。

发明内容
本发明提供一种将梯形图程序转换为指令列表程序的方法及系统,以实现LD语言和IL语言间的快速转换。
实现本发明的技术方案一种将梯形图程序转换为指令列表程序的方法,包括如下步骤A、生成梯形图(LD)程序中各网络内元件及其元件间连接关系的描述数据,形成各网络的LD元件集合和连接关系集合;B、分别从各网络的LD元件集合中的一个元件开始,依据各网络的LD元件集合和连接关系集合生成用节点的描述数据描述网络内元件之间的逻辑关系的二叉树;C、分别从各二叉树的根节点开始遍历所有节点,根据节点描述的逻辑关系生成各节点对应的指令列表(IL)程序命令。
一种将梯形图程序转换为指令列表程序的系统,包括用于处理数据的计算机装置,该系统还包括第一装置,用于在计算装置中生成包含一个或多个网络的梯形图(LD)程序并保存;第二装置,用于生成LD程序中各网络内元件及其元件间连接关系的描述数据,形成各网络的LD元件集合和连接关系集合;第三装置,用于从各网络的LD元件集合中的一个元件开始,依据各网络的LD元件集合和连接关系集合生成用节点的描述数据描述网络内元件之间的逻辑关系的二叉树;第四装置,用于从各二叉树的根节点开始遍历二叉树的所有节点,根据节点描述的逻辑关系生成各节点对应的指令列表(IL)程序命令,形成IL程序文本。
本发明定义了三种数据结构LDDataStruct、MidDataStruct和ILDataStruct,通过两个转换过程,将LDDataStruct经过MidDataStruct最终转换为ILDataStruct。
由于LDDataStruct是专为保存LD图形程序设计的数据结构,可以完全满足LD图形程序中对LD元件的图形、位置和元件间连接关系的维护。
ILDataStruct是专用于保存IL指令文本的数据结构,也可完全满足IL指令程序的编辑和维护要求。
在转换方面,通过引入MidDataStruct中间二叉树数据结构,将LDDataStruct中的数据完全转换为ILDataStruct,转换过程处理了必须的元件和逻辑结构,通过中间数据结构的引入,使得转换过程更加易于理解和实现。所有的步骤中,对元件和逻辑关系只访问一次,达到了较高的转换效率。


图1为一个简单的LD程序;图2为图1经转换后生成的树结构示意图;图3为转换示意图;图4为图1经转换后的示意图;图5A、图5B为本发明的流程图。
具体实施例方式
在提供可编程逻辑控制器编程环境的软件系统中,将用户程序从LD程序转换为IL程序的实质,也就是将软件系统中表示LD程序的数据结构转换到表示IL程序的数据结构。因此在转换中存在的问题,一是确定表示LD和IL程序的合理数据结构;二是要找出一种将表示图形的数据结构转换为表示文本的数据结构的方法。
首先确定能够表示LD图形语言的数据结构LDDataStruct和IL文本语言的数据结构ILDataStruct,其次为了完成LDDataStruct和ILDataStruct两种数据结构间的转换,引入一种中间数据结构MidDataStruct,通过数据结构间的算法转换,MidDataStruct可以不丢失任何程序信息的表示LDDataStruct中的内容,也可以方便的转换为ILDataStruct数据结构。下面详细说明每种数据结构的内容和数据结构之间的转换方法。
1、数据结构LD图形语言的数据结构-LDDataStructLD图形语言是由多个输入触点元件、输出触点元件和元件间的连接线组成,连接线也可以看作是一种元件,数据结构首先必须正确保存这些元件的类型和位置;其次,为了可以方便快速的识别元件间的逻辑关系,数据结构还应该保存元件之间的连接关系根据上面对LD图形语言程序的保存需要,LD的数据结构由两个部分组成,一个是LD元件的集合,一个是元件之间连接点的集合,其中LD元件和连接点的数据结构表示如下LD程序的数据结构名称LDDataStruct成员ArrayLDElem-LD元件集合,保存用户加入的所有LD元件ArrayConnectPoint-LD元件间连接点集合,用户增删LD元件后,修改连接点的信息。
LD元件的数据结构名称LDElemStruct成员nElemID-元件唯一ID号,整数型。
nType-LD元件类型(输入触点,输出触点,横线,竖线等),整数型。
strName-元件名称,如X0、Y0等,字符串型。
nRow-元件所在行,整数型。
nCol-元件所在列,整数型。
LeftConnectPoint-元件左边连接的连接点。
RightConnectPoint-元件右边连接的连接点。
bVisited-元件是否已经被处理。
连接点的数据结构名称ConnectPointStruct成员ArrayLeftElems-连接点左边连接的LD元件集合,用数组保存,元件中不包含横线和竖线,连接线只起到延续连接点的作用。
ArrayRightElems-连接点右边连接的LD元件集合,用数组保存,元件中不包含横线和竖线,连接线只起到延续连接点的作用。
如图1所示,LD元件包括X0,X1,X2,Y0,竖线1,横线2,元件的连接点有A,A’,B,B’。A和A’通过竖线1连接,合并为一个连接点A,B和B’通过横线连接,合并为一个连接点B,因此只有两个实际的连接点A和B。
保存这个LD程序的数据结构LDDataStruct如下LDDataStructArrayLDElem={X0,X1,X2,Y0,竖线1,横线2}ArrayConnectPoint={A,B}其中各个LD元件的成员值为

各连接点的成员值为

2、IL文本语言的数据结构-ILDataStructIL语言是一种纯文本的编程方式,编写好的程序使用字符串就可以完全表示和保存了,因此IL语言的数据结构中仅包含一个字符串,如下名称ILDataStruct
成员strILProgText-IL程序文本,字符串型如图1所示的LD程序用IL表示并且保存到数据结构中时,strILProgText的值为“LD X0OR X1AND X2OUT Y0”3、转换中的中间数据结构-MidDataStructLDDataStruct和ILDataStruct两种数据结构在用于表示图形编程语言和文本编程语言时具有简单直接的特点,但是两种数据结构相差太大,很难直接从LDDataStruct转换到ILDataStruct。为了完成转换,引入一种中间数据结构MidDataStruct作为中介。MidDataStruct是一个典型的二叉树结构,它适合表示LD图形程序中各个元件的连接和逻辑关系,所有的LD元件和元件之间的逻辑关系都可以在树的节点中表示。相连的LD元件可以用一棵树来表示,因此一个树的数组就可以表示一个完成的LD程序。通过遍历树的每个节点,可以方便的生成节点对应的IL代码,通过MidDataStruct,就可以将LD程序中的元件和逻辑关系同IL中的文本指令对应起来。
MidDataStruct是一种用二叉树表示的数据结构,它包含两个子数据结构,一个是树Tree,一个是树节点TreeNode,详细描述如下名称MidDataStruct成员ArrayLDTree-用于表示LD程序的树的数组,Tree类型数组。
名称Tree成员RootNode-树的根节点,TreeNode类型,通过对根节点的访问,可以遍历整个树的每个节点。
名称TreeNode成员LeftChildNode-左子节点,TreeNode类型;RightChildNode-右子节点,TreeNode类型;
nLogicType-左右子节点的逻辑类型(串联关系、并联关系、无关系),整数型;LDElem-节点对应的LD元件结构,LDElemStruct类型;LeftConnectPoint-节点左边连接的连接点;RightConnectPoint-节点右边连接的连接点。
图1所示的LD程序用MidDataStruct中的树表示为图2所示,其中+节点表示左右子节点为并联关系,*节点表示左右子节点为串联关系。
本发明的整个转换过程分为两步,首先是将用LDDataStruct表示的用户程序转换为MidDataStruct中的二叉树中,然后再将MidDataStruct中的二叉树转换为ILDataStruct中的文本,如图3所示。
下面详细说明两个转换过程的具体方法和步骤。
转换过程1,参阅图5A。
转换过程1的功能是将LDDataStruct中针对图形使用方式保存的程序数据,转换为MidDataStruct中使用二叉树针对LD元件逻辑关系保存的数据结构,它主要通过逐个读取LDDataStruct中的LD元件,分析该元件和其它元件的连接关系来生成元件对应的树节点和连接关系对应的树节点,整个分析过程也就是对LD图形逐级合并最简网络的过程,例如对图1所示的LD程序第一步读出X0元件。
第二步读出和X0相并联的元件X1,检查X1和前面元件的关系,X0和X1是一个最简网络,合并X0和X1,把它们并联的结果看成一个输入触点继续处理,如图4所示。
第三步读出合并后的触点“X0+X1”连接的X2,进一步合并,把和X2串联的结果看成是一个新的触点。
第四步读出合并后的触点“(X0+X1)*X2”连接的Y0,再次合并。
通过上面的逐级合并,可以把一个复杂的LD程序简化为一个最简的程序,从而达到处理整个LD程序的目的。
对LD程序的逐级合并和生成二叉树的操作详细说明如下
在下面A~E的5个步骤中,A是一个大循环,每次找出一个LD网络的开始元件,循环完成A就是处理了所有的网络;D是一个小循环,每次找出和当前元件相连接的下一个元件,循环完D就是处理了当前的网络;步骤B和C用于将当前的元件和前面的元件在符合条件的情况下构成一个最简的并联或者串联网络。
A、判断是否有未处理的LD网络,如果是,则取出和左母线连接并且没有被处理的元件,创建包含该LD元件的树节点作为当前节点,进行步骤B,如果没有未处理LD网络,则整个处理完成,MidDataStruct的ArrayLDTree中包含了已经转换完成的所有树。
具体操作遍历LDDataStruct中的ArrayLDElem,取出LeftConnectPoint=左母线,bVisited=FALSE的LDDataStruct类型的LD元件,命名为NewLDElem;创建一个TreeNode型的节点CurTreeNode,其LDElem成员的值为NewLDElem,将LDElem的LeftConnectPoint和RightConnectPoint的值分别赋予CurTreeNode的LeftConnectPoint和RightConnectPoint。
B、如果当前节点和栈顶的节点是最简并联关系网络,则增加一个父节点,当前节点和栈顶的节点分别作为左右子节点,逻辑关系为并联关系,将父节点作为当前节点,重复B操作;如果不是则进行步骤C。
具体操作(1)如果当前节点CurTreeNode和栈顶节点PeekTreeNode的左右连接点LeftConnectPoint和RightConnectPoint相同,则两个节点中包含的LD元件是并联关系,不是并联关系则到步骤C。
(2)增加新的树节点NewTreeNode,弹出栈顶节点到PeekTreeNode,当前节点CurTreeNode和栈顶节点PeekTreeNode分别作为其左右子节点,NewTreeNode的nLogicType=并联关系。
(3)将CurTreeNode的LeftConnectPoint和RightConnectPoint的值分别赋予NewTreeNode的LeftConnectPoint和RightConnectPoint。
(4)将新的父节点NewTreeNode作为当前节点CurTreeNode,重复步骤B。
C、如果当前节点和栈顶的节点是最简串联关系网络,则增加一个父节点,当前节点和栈顶的节点分别作为左右子节点,逻辑关系为串联关系,将父节点作为当前节点,重复B操作,如不是则进行步骤D。
判断方法为(1)如果当前节点CurTreeNode的右连接点RightConnectPoint和栈顶节点的左连接点LeftConnectPoint相同,则两个节点中包含的LD元件是串联关系,继续步骤(2),如果不是串联关系则到步骤D。
(2)增加新的树节点NewTreeNode,弹出栈顶节点到PeekTreeNode,当前节点CurTreeNode和栈顶节点PeekTreeNode分别作为其左右子节点,NewTreeNode的nLogicType=串联关系。
(3)将CurTreeNode的左连接点LeftConnectPoint和PeekTreeNode的右连接点RightConnectPoint的值分别赋予NewTreeNode的LeftConnectPoint和RightConnectPoint。
(4)将新的父节点NewTreeNode作为当前节点CurTreeNode,重复步骤B。
D、将当前节点压栈,按照并联关系优先于串联关系的原则,取出和当前节点中的元件相连接未处理的LD元件,创建包含该LD元件的树节点作为当前节点,进行步骤B,如果LD元件都已经被处理则进行步骤E。具体处理过程如下(1)当前节点CurTreeNode压入栈中。
(2)遍历当前节点CurTreeNode的右连接点RightConnectPoint的ArrayLeftElems数组中每个LD元件,取出还没有被处理的LD元件,命名为NewLDElem,到下面的子步骤(4),此时的元件和栈中的元件是并联关系。如果ArrayLeftElems数组中的LD元件都已经被处理,到下面的步骤(3)。
(3)遍历当前节点CurTreeNode的右连接点RightConnectPoint的ArraRightElems数组中每个LD元件,取出还没有被处理的LD元件,命名为NewLDElem,到下面的步骤(4),此时的元件和栈中的元件是串联关系。如果ArrayLeftElems数组中的LD元件都已经被处理,当前LD网络程序已经处理完毕,到步骤E。
(4)创建一个TreeNode型的节点CurTreeNode,其LDElem成员的值为NewLDElem,将LDElem的LeftConnectPoint和RightConnectPoint的值分别赋予CurTreeNodeLeftConnectPoint和RightConnectPoint,到步骤B。
E、创建一个Tree类型的二叉树NewTree,其根节点为当前节点RootTreeNode=CurTreeNode,将NewTree加入到MidDataStruct的ArrayLDTree数组中;转到步骤A。
通过上面这些步骤地处理,已经将LDDataStruct数据结构中的LD图形程序,表示成了MidDataStruct数据结构中树的方式,下面进一步说明如何将MidDataStruct中保存为树的用户程序转换为ILDataStruct中的文本指令。
转换过程2,参阅图5B。
本转换的功能是将保存在MidDataStruct中的树转换为ILDataStruct中的文本指令,它主要通过遍历MidDataStruct中每棵树的每个树节点,根据节点中包含的LD元件的输入输出类型或者节点中包含的子节点的逻辑关系,生成相应的IL指令代码。
例如对图2所示的一棵树,遍历从根节点开始,采用左子节点->右子节点->父节点的遍历顺序,整个访问顺序如下X0→X1→+→X2→×→Y0→×根据访问顺序,MidDataStruct中的树生成ILDataStruct中的文本的处理如下1、遍历MidDataStruct中ArrayLDTree的每棵树,如果没有未处理的树,则转换全部完成。
2、读取树的根节点作为被处理节点,进入步骤3处理该节点。
3、处理当前节点A、如果被处理节点有右子节点,递归调用步骤C处理右子节点。
B、如果被处理节点有左子节点,递归调用步骤C处理左子节点。
C、如果左右子节点不存在或者递归处理完毕,生成本节点的IL代码。
在不同的条件下生成IL代码的方法如下(1)如果节点没有子节点,是父节点的左子节点,包含的LD元件是输入触点,生成“LD元件名”指令;(2)如果节点没有子节点,是父节点的右子节点,是输入触点,不生成指令;(3)如果节点没有子节点,包含的LD元件是输出线圈,生成“OUT元件名”指令;(4)如果节点有右子节点,右子节点包含的LD元件是输入触点,左右子节点的逻辑关系是“并联关系”,生成“OR元件名”指令。
(5)如果节点有右子节点,右子节点包含的LD元件是输入触点,左右子节点的逻辑关系是“串联关系”,生成“AND元件名”指令。
(6)如果节点有右子节点,右子节点没有包含LD元件,左右子节点的逻辑关系是“并联关系”,生成“ORB”块并联指令。
(7)如果节点有右子节点,右子节点没有包含LD元件,左右子节点的逻辑关系是“串联关系”,生成“ANB”块串联指令。
(8)如果节点有右子节点,包含的LD元件是输出线圈,不生成指令。
图2所示的树,按照遍历顺序,每个节点和生成的代码如下符合条件(1),生成“LD X0”;符合条件(2),不生成指令;符合条件(4),生成“OR X1”;符合条件(2),不生成指令;符合条件(5),生成“AND X2”;符合条件(3),生成“OUT Y0”;符合条件(8),不生成指令。
最终生成ILDataStruct中strILProgText的内容为“LD X0OR X1
AND X2OUT Y0”到本转换过程完成,已经将一个LD图形程序对应的数据结构LDDataStruct,通过中间二叉树数据结构MidDataStruct,转换成为指令文本对应的数据结构ILDataStruct。LD图形程序用LDDataStruct保存,中间二叉树用MidDataStruct保存,IL指令文本用ILDataStruct保存。
根据上述的转换方法,本领域普通技术员据此不难得到一种将梯形图程序转换为指令列表程序的系统,该系统除包括一个用于处理数据的公知计算机装置外,还包括第一装置,用于在计算装置中生成包含一个或多个网络的梯形图(LD)程序并保存到计算机的存储介质中。第二装置,用于生成LD程序中各网络内元件及其元件间连接关系的描述数据,形成各网络的LD元件集合和连接关系集合。第三装置,用于从各网络的LD元件集合中的一个元件开始,依据连接关系集合中描述的元件之间的连接关系遍历网络内的所有元件的描述数据,生成用节点的描述数据描述网络内元件之间的逻辑关系的二叉树。第四装置,用于从各二叉树的根节点开始遍历二叉树的所有节点,根据节点描述的逻辑关系生成各节点对应的指令列表(IL)程序命令,形成IL程序文本。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种将梯形图程序转换为指令列表程序的方法,其特征在于包括如下步骤A、生成梯形图(LD)程序中各网络内元件及其元件间连接关系的描述数据,形成各网络的LD元件集合和连接关系集合;B、分别从各网络的LD元件集合中的一个元件开始,依据各网络的LD元件集合和连接关系集合生成用节点的描述数据描述网络内元件之间的逻辑关系的二叉树;C、分别遍历各二叉树的所有节点,根据节点描述的逻辑关系生成各节点对应的指令列表(IL)程序命令。
2.如权利要求1所述的方法,其特征在于,步骤B中,在生成二叉树的过程中按照并联关系优先于串联关系的原则选取元件。
3.如权利要求2所述的方法,其特征在于,步骤B包括步骤B1、判断是否有未被处理的网络,如果是则取该网络中的起始元件并进行步骤B2,否则结束该流程;B2、创建该元件的树节点作为当前节点;B3、判断当前节点和栈顶的节点是否为最简并联关系网络;如果否,则进行步骤B4,如果是,则增加一个父节点,所述当前节点和栈顶的节点分别作为左右子节点,父节点将左右子节点的逻辑关系描述为并联,弹出栈顶节点并将父节点作为当前节点,返回步骤B3;B4、判断当前节点和栈顶的节点是否为最简串联关系网络;如果否,则进行步骤B5,如果是则增加一个父节点,所述当前节点和栈顶的节点分别作为左右子节点,父节点将左右子节点的逻辑关系描述为串联关系,弹出栈顶节点并将父节点作为当前节点,返回步骤B3;B5、将当前节点压入堆栈,并判断是否有下一个和当前节点连接且未被处理的元件,如果是则取该元件并返回步骤B2;B6、将当前节点作为根结点创建树,并加入树集合中,返回步骤B1。
4.如权利要求3所述的方法,其特征在于,步骤B1中所述的起始元件是指与左母线连接并且没有被处理的元件。
5.如权利要求1至4任一项所述的方法,其特征在于,步骤C包括步骤C1、判断是否有未处理的树,如果是则进行步骤C2,否则结束该流程;C2、读取未处理的树的根节点作为被处理节点,并进行步骤C3;C3、按下述条件处理当前节点-如果当前节点有右子节点,将该右子节点作为当前节点递归调用步骤C处理右子节点;-如查当前节点有左子节点,将该左子节点作为当前节点递归调用步骤C处理左子节点;-如果当前节点不存在左右子节点或者递归处理完毕,生成当前节点的IL代码。
6.如权利要求5所述的方法,其特征在于,按下述条件生成IL代码如果当前节点没有子节点,并且是父节点的左子节点且包含的LD元件是输入触点,则生成“LD元件名”指令;如果当前节点没有子节点,并且是父节点的右子节点且为输入触点,则不生成指令;如果当前节点没有子节点,并且包含的LD元件是输出线圈,则生成“OUT元件名”指令;如果当前节点有右子节点,该右子节点包含的LD元件是输入触点,并且左右子节点的逻辑关系是“并联关系”,则生成“OR元件名”指令;如果当前节点有右子节点,该右子节点包含的LD元件是输入触点,并且左右子节点的逻辑关系是“串联关系”,则生成“AND元件名”指令;如果当前节点有右子节点,该右子节点没有包含LD元件,并且左右子节点的逻辑关系是“并联关系”,则生成“ORB”块并联指令;如果当前节点有右子节点,该右子节点没有包含LD元件,并且左右子节点的逻辑关系是“串联关系”,则生成“ANB”块串联指令;如果当前节点有右子节点,并且包含的LD元件是输出线圈,则不生成指令。
7.如权利要求1所述的方法,其特征在于,所述元件的描述数据包括元件唯一标识、元件类型、元件名称、元件所在行、元件所在列、元件的左连接点、元件的右连接点和该元件是否已被处理;所述连接关系的描述数据包括各连接点左、右两边连接的所有元件的唯一标识;所述节点描述数据包括左子节点、右子节点、左右子节点的逻辑关系、节点对应的LD元件、节点左边连接的连接点和节点右边连接的连接点。
8.一种将梯形图程序转换为指令列表程序的系统,包括用于处理数据的计算机装置,其特征在于还包括第一装置,用于在计算装置中生成包含一个或多个网络的梯形图(LD)程序并保存;第二装置,用于生成LD程序中各网络内元件及其元件间连接关系的描述数据,形成各网络的LD元件集合和连接关系集合;第三装置,用于从各网络的LD元件集合中的一个元件开始,依据各网络的LD元件集合和连接关系集合生成用节点的描述数据描述网络内元件之间的逻辑关系的二叉树;第四装置,用于从各二叉树的根节点开始遍历所述二叉树的所有节点,根据节点描述的逻辑关系生成各节点对应的指令列表(IL)程序命令,形成IL程序文本。
9.如权利要求8所述的系统,其特征在于,所述二叉树中的父节点描述左右子节点的逻辑关系。
全文摘要
本发明公开了一种将梯形图程序转换为指令列表程序的方法及系统,该方法为生成梯形图(LD)程序中各网络内元件及其元件间连接关系的描述数据,形成各网络的LD元件集合和连接关系集合;分别从各网络的LD元件集合中的一个元件开始,依据连接关系集合中描述的元件之间的连接关系遍历网络内的所有元件的描述数据,生成用节点的描述数据描述网络内元件之间的逻辑关系的二叉树;分别从各二叉树的根节点开始遍历所有节点,根据节点描述的逻辑关系生成各节点对应的指令列表(IL)程序命令。
文档编号G05B19/05GK1588256SQ20041007829
公开日2005年3月2日 申请日期2004年9月23日 优先权日2004年9月23日
发明者王孟腾, 祝裕福, 李占军, 张泉, 马泉伟, 毛继科, 雷刚 申请人:艾默生网络能源有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1