掌桥专利:专业的专利平台
掌桥专利
首页

一种梯形图转换二叉树的方法、装置、设备及存储介质

文献发布时间:2023-06-19 09:24:30


一种梯形图转换二叉树的方法、装置、设备及存储介质

技术领域

本发明实施例涉及可编程逻辑控制器技术,尤其涉及一种梯形图转换二叉树的方法、装置、设备及存储介质。

背景技术

梯形图(Ladder Diagram,LD)是可编程逻辑控制器(Programmable logiccontroller,PLC)的常用编程语言,梯形图用不同图符表示不同控制指令,对于工作人员来说形象直观,但对于PLC来说,是不可直接执行的语言,需要首先将梯形图转换为顶点活动(Activity On Vertex,AOV)图,再将AOV图转换为二叉树,最终遍历二叉树生成指令表,从而通过对指令表的编译或解释执行实现相应控制逻辑。指令表是一系列符合IEC61131-3(GB/T 15969.3)标准的指令集,类似于汇编语言。

现有技术在将梯形图转换为AOV图时,需要根据梯形图中每一个图符的具体含义来确定AOV图的节点以及节点之间的连接关系。当梯形图的结构复杂时,这种转换方法显然不具有通用性,导致二叉树转换效率低下。

发明内容

本发明实施例提供一种梯形图转换二叉树的方法、装置、设备及存储介质,以提供一种通用的生成AOV图的方法,并且将生成的AOV图转换为二叉树,实现复杂梯形图逻辑的解析,提高二叉树的转换效率。

第一方面,本发明实施例提供了一种梯形图转换二叉树的方法,所述方法包括:

获取梯形图中各图符以及图符之间的连接关系;

根据各图符的输入输出处理逻辑,生成与各图符对应的逻辑图,所述逻辑图包括一个节点,或者,两个以上的节点以及节点之间的连接关系;

根据各图符之间的连接关系,生成对应逻辑图之间的连接关系,形成顶点活动AOV图;

将所述AOV图转换为二叉树。

第二方面,本发明实施例还提供了一种梯形图转换二叉树的装置,所述方法包括:

图符获取模块,用于获取梯形图中各图符以及图符之间的连接关系;

逻辑图生成模块,用于根据各图符的输入输出处理逻辑,生成与各图符对应的逻辑图,所述逻辑图包括一个节点,或者,两个以上的节点以及节点之间的连接关系;

AOV图生成模块,用于根据各图符之间的连接关系,生成对应逻辑图之间的连接关系,形成顶点活动AOV图;

二叉树生成模块,用于将所述AOV图转换为二叉树。

第三方面,本发明实施例还提供了一种电子设备,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例提供的梯形图转换二叉树的方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例提供的梯形图转换二叉树的方法。

本发明实施例的技术方案,根据梯形图中各图符的输入输出处理逻辑,生成与各图符对应的逻辑图,并根据各图符之间的连接关系,生成对应逻辑图之间的连接关系,形成顶点活动AOV图,最后将所述AOV图转换为二叉树,实现复杂梯形图逻辑的解析,同时提高生成AOV图方法的通用性。

附图说明

图1a是本发明实施例一中的一种梯形图转换二叉树的方法的流程图;

图1b是本发明实施例一提供的一种包含串、并联逻辑关系的梯形图;

图2a是本发明实施例二中的一种梯形图转换二叉树的方法的流程图;

图2b是本发明实施例二提供的一种函数图符;

图2c是本发明实施例二提供的一种由函数图符转化得到的逻辑图;

图3a是本发明实施例三中的一种梯形图转换二叉树的方法的流程图;

图3b是本发明实施例三提供的一种功能块图符;

图3c是本发明实施例三提供的一种由功能块图符转化得到的逻辑图;

图3d是本发明实施例三提供的由图1b所示梯形图转化得到的AOV图;

图4a是本发明实施例四中的一种梯形图转换二叉树的方法的流程图;

图4b是本发明实施例四提供的由图3d所示AOV图增加虚拟节点得到的AOV图;

图4c是本发明实施例四提供的将图4b所示AOV图并联支路上的节点集合合并得到的AOV图;

图4d是本发明实施例四提供的将图4c所示AOV图并联支路合并得到的AOV图;

图4e是本发明实施例四提供的一种由图4d所示AOV图转化得到的二叉树;

图4f是本发明实施例四提供的一种由图4b所示AOV图转化得到的二叉树;

图4g是本发明实施例四提供的一种由图4f所示二叉树删除虚拟节点得到的二叉树;

图5是本发明实施例五中的一种梯形图转换二叉树的装置的结构示意图;

图6是本发明实施例六中的一种电子设备/计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1a是本发明实施例一中的一种梯形图转换二叉树的方法的流程图,本实施例的技术方案适用于将梯形图转化为AOV图,并进一步将AOV图转化为二叉树的情况,该方法可以由梯形图转换二叉树的装置执行,该装置可以由软件和/或硬件来实现,并可以集成在各种通用电子设备中,具体包括如下步骤:

步骤110、获取梯形图中各图符以及图符之间的连接关系。

其中,梯形图是PLC最常用的图形编程语言,其沿袭了继电器控制电路的形式,是在常用的继电器与接触器逻辑控制基础上简化了符号演变而来的,因此,梯形图中往往包含各种具有不同含义的图符,并按照相应逻辑关系将上述图符连接起来。

本实施例中,首先按照梯形图的解算顺序(即从左至右,从上到下的顺序)获取当前梯形图中所包含的所有图符,同时获取梯形图中各图符之间的连接关系,例如并联、串联或者串并联混合。示例性的,如图1b所示,梯形图中包含触点图符IN1、IN2和IN3,线圈图符OUT1,函数图符MOVE以及功能块图符TON0。其中,从左母线起始,按照从左至右、从上到下的顺序,触点图符IN1和功能块图符TON0串联形成第一支路,触点图符IN2和函数图符MOVE串联形成第二支路,然后将第一支路与第二支路并联后与触点图符IN3以及线圈图符OUT1串联,到右母线终止。

步骤120、根据各图符的输入输出处理逻辑,生成与各图符对应的逻辑图,逻辑图包括一个节点,或者,两个以上的节点以及节点之间的连接关系。

其中,图符的输入输出处理逻辑是指输入信号进入该图符,经过图符中包含的信号处理逻辑的处理,最终得到输出信号的逻辑。具体而言,输入输出处理逻辑包括:输入逻辑、输出逻辑和处理逻辑中的至少一种。

在一可选实施方式中,图符的输入输出处理逻辑比较简单,例如触点图符IN1,仅具有输入逻辑。这样的图符对应的逻辑图包括一个输入节点。该输入节点作为该图符的逻辑图。又例如线圈图符OUT1,仅具有输出逻辑。这样的图符对应的逻辑图包括一个输出节点。该输出节点作为该图符的逻辑图。

在另一可选实施方式中,图符的输入输出处理逻辑比较复杂,则根据图符的输入逻辑,生成输入节点;根据图符的输出逻辑,生成输出节点;根据图符的处理逻辑,生成处理节点。将输入节点、处理节点和输出节点依次连接,生成与该图符对应的逻辑图。

步骤130、根据各图符之间的连接关系,生成对应逻辑图之间的连接关系,形成顶点活动AOV图。

其中,AOV图是用顶点表示活动,用边表示活动的先后执行关系的有向图。其中,在AOV图中,若从顶点i到顶点j之间存在一条有向路径,称顶点i是顶点j的前驱,或者称顶点j是顶点i的后继。在有向图中,以顶点i为头的弧的数目称为定点i的入度;以定点i为尾的弧的数目称为定点i的出度;若是图中的边,称顶点i是顶点j的直接前驱,顶点j是顶点i的直接后继。而梯形图采用从左到右,自顶向下的顺序执行,所以用AOV图最能代表梯形图的逻辑关系。

根据图符的输入输出处理逻辑,生成的逻辑图实质是AOV图的局部图。本实施例中,在步骤120中生成与梯形图中各图符对应的逻辑图的基础上,根据梯形图中各图符之间的连接关系,对上述逻辑图进行连接,形成AOV图。

步骤140、将AOV图转换为二叉树。

其中,树(Tree)也是一种数据结构,但与图相比,树的数据元素之间存在明显的层次关系。树是n(n≥0)个结点的有限集。在任意一棵非空树中,存在以下规定:(1)有且仅有一个特定的称为根(Root)的节点;(2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每一个集合本身又是一棵树,并且称为根的子树。

其中,二叉树是一种特殊的树形结构,每个节点最多有两个子树,且顺序不能颠倒,这种数据结构的逻辑关系正好满足梯形图语言图符的顺序执行关系。因此,本实施例按照AOV图中各节点之间的连接关系,生成二叉树。

本实施例中,通过根据梯形图中各图符输入输出处理逻辑,生成与各图符对应的逻辑图,也就是对各图符提炼出输入输出处理逻辑,生成对应的逻辑图,无需对每个图符的具体含义分别分析;然后根据梯形图中各图符的连接关系连接与各图符对应的逻辑图,从而直接生成AOV图,最后将AOV图生转化为二叉树。本实施例采用统一标准(即输入输出处理逻辑)将各图符生成对应的逻辑图,并连接逻辑图直接生成AOV图,具有通用性;同时,实现复杂梯形图逻辑的解析,提高了二叉树的转换效率。

实施例二

图2a是本发明实施例二中的一种梯形图转换二叉树的方法的流程图,本实施例在上述实施例的基础上进一步细化,提供了根据图符的输入输出处理逻辑,生成与图符对应的逻辑图的具体步骤,且本实施例的技术方案适用于将多输入单输出或者单输入单输出的图符转化为逻辑图,并最终转化为二叉树的情况。下面结合图2a对本发明实施例二提供的一种梯形图转换二叉树的方法进行说明,包括以下步骤:

步骤210、获取梯形图中各图符以及图符之间的连接关系。

可选的,图符为多输入单输出或者单输入单输出的图符。

其中,多输入单输出的图符可以是函数(FU)图符。例如,ADD图符(如图2b所示)、SUB图符等。

步骤221、根据图符的输入输出处理逻辑,生成与所述图符对应的至少一个输入节点和处理输出节点。

可选的,根据FU图符的输入输出处理逻辑,生成与FU图符对应的多个输入节点和处理输出节点。

在将图符转化为逻辑图时,首先要生成与该逻辑图对应的逻辑图节点,本实施例中,主要对生成与FU图符对应的逻辑图节点过程进行解释说明。示例性的,如图2b所示的FU图符(ADD图符属于FU图符),首先根据其两个输入IN1和IN2生成两个输入节点,再根据信号处理逻辑ADD生成一个处理输出节点,由于FU图符是单输出,因此可以将输出节点与ADD节点合并,生成一个处理输出节点,最终得到如图2c所示包含三个节点的对应FU图符的逻辑图。

值得注意的是,上述图符只有一个输出,因此可以将输出节点与处理节点统一转化为一个处理输出节点。当图符具有两个或两个以上输出且各输出信号分别用作不同图符的输入时,需要将处理节点和输出节点分开表示。

步骤222、分别定义至少一个输入节点和处理输出节点的节点属性。

本实施例中,输入节点和处理输出节点仅表明信号的流向,并不能表明具体功能。因此,采用节点属性定义的方式赋予节点具体的功能,以实现图符的具体功能或具体含义。

本实施例中,定义多个输入节点和处理输出节点的节点属性为函数属性,即输入节点和处理输出节点均实现函数功能。以具有两个输入和一个输出的ADD函数图符为例,将两个输入IN1和IN2对应转化为两个具有函数属性的输入节点,将信号处理逻辑相加(ADD)以及输出OUT统一转化为一个具有函数属性的处理输出节点。

值得说明的是,对于单独的输入节点和输出节点来说,可定义输入节点的节点属性定义为线圈属性,定义输出节点的节点属性为触点属性。这是因为,在梯形图中,线圈的功能是不对携带参数做运算,只记录参数的值,而一般输入节点只需要将携带的参数输入到后续节点,无需在输入节点处进行运算操作,因此将输入节点属性设置为线圈属性;触点的功能是可以连接其他触点继续对所携带参数进行进一步的运算处理,而输出节点中携带的参数可能会需要与其他触点进行连接,做进一步的运算处理,因此将输出节点的属性设置为触点属性。

步骤223、将至少一个输入节点定义为处理输出节点的直接前驱,生成与所述图符对应的逻辑图。

本实施例中,按照梯形图中图符的输入输出处理逻辑,对步骤221中生成的节点进行连接,以生成与图符对应的逻辑图。示例性的,如图2c所示,将两个输入节点IN1和IN2作为处理输出节点ADD的直接前驱,与处理输出节点ADD进行连接,生成与ADD图符对应的逻辑图。

步骤230、根据各图符之间的连接关系,生成对应逻辑图之间的连接关系,形成顶点活动AOV图。

步骤240、将所述AOV图转换为二叉树。

本实施例的技术方案,对于多输入单输出或者单输入单输出的图符,生成至少一个输入节点和处理输出节点,并分别定义各节点的节点属性,从而形成能够完整、准确表达图符具体含义的逻辑图,具有通用性,且有效提高了将梯形图转换为二叉树的效率。本实施例提供的方案尤其支持实现混合调用的FU图符,为FU图符提供了通用的转换方法。

实施例三

图3a是本发明实施例三中的一种梯形图转换二叉树的方法的流程图,本实施例在上述实施例的基础上进一步细化,提供了根据各图符的输入输出处理逻辑,生成与各图符对应的逻辑图的具体步骤,且本实施例的技术方案适用于将多输入多输出或者单输入多输出的图符转化为逻辑图,并最终转化为二叉树的情况。下面结合图3a对本发明实施例三提供的一种梯形图转换二叉树的方法进行说明,包括以下步骤:

步骤310、获取梯形图中各图符以及图符之间的连接关系。

可选的,图符为多输入多输出或者单输入多输出的图符。

其中,多输入多输出的图符可以是功能块(FB)图符。其中,FB图符代表一个功能块,可以包含至少一个函数。例如,TON图符(如图3b所示)。

步骤321、根据图符的输入输出处理逻辑,生成与所述图符对应的至少一个输入节点、处理节点和多个输出节点。

可选的,根据FB图符的输入输出处理逻辑,生成与FB图符对应的多个输入节点、处理节点和多个输出节点。

在将图符转化为逻辑图时,首先要生成与该逻辑图对应的逻辑图节点,本实施例中,主要对生成与FB图符对应的逻辑图节点过程进行解释说明,示例性的,如图3b所示的FB图符(TON1图符属于FB图符),首先根据其两个输入IN1和PT生成两个输入节点,再根据信号处理逻辑TON生成一个处理节点,进一步根据两个输出Q和ET生成两个输出节点,最终得到如图3c所述包含5个节点的对应FB图符的逻辑图。

步骤322、分别定义至少一个输入节点、处理节点和多个输出节点的节点属性。

本实施例中,定义所述多个输入节点的节点属性为线圈属性,定义所述处理节点的节点属性为功能块属性,定义所述多个输出节点的节点属性为触点属性。即输入节点实现线圈功能,处理节点实现功能块功能,输出节点实现触点功能。以具有两个输入和两个输出的TON1图符为例,将两个输入IN和PT对应转化为两个具有线圈属性的输入节点,将信号处理逻辑TON转化为具有功能块属性的处理节点,将两个输出Q和ET转化为两个具有触点属性的输出节点,最终生成如图3c所示的包含5个节点的逻辑图。

步骤323、将至少一个输入节点定义为处理节点的直接前驱,将多个输出节点定义为处理节点的直接后继,生成与所述图符对应的逻辑图。

本实施例中,按照梯形图中图符的输入输出处理逻辑,对步骤321中生成的节点进行连接,以生成与图符对应的逻辑图。示例性的,如图3c所示,将两个输入节点IN和PT作为处理节点TON的直接前驱,与处理节点TON的输入端进行连接,并将两个输出节点Q和ET作为处理节点TON的直接后继,与处理节点TON的输出端连接,最终生成与TON1图符对应的逻辑图。

步骤330、根据各图符之间的连接关系,生成对应逻辑图之间的连接关系,形成顶点活动AOV图。

步骤340、将所述AOV图转换为二叉树。

本实施例的技术方案,对于多输入多输出或者单输入多输出的图符,生成至少一个输入节点、处理节点和多个输出节点,并分别定义各节点的节点属性,从而形成能够完整、准确表达图符具体含义的逻辑图,具有通用性,且有效提高了将梯形图转换为二叉树的效率。本实施例提供的方案尤其支持实现混合调用的FB图符,为FB图符提供了通用的转换方法。

下面,结合上述各实施例详细描述将图1b所示的梯形图转换为AOV图的过程。图1b中包含触点图符IN1、IN2和IN3,线圈图符OUT1,函数图符MOVE以及功能块图符TON0。将各触点图符依次生成输入节点IN1、IN2和IN3,并定义节点属性为触点属性,将线圈图符OUT1生成输出节点OUT1,并定义节点属性为线圈属性。将函数图符MOVE生成包括输入节点IN和处理输出节点MOV的逻辑图,定义输入节点IN和处理输出节点MOV为函数属性。将功能块图符TON0生成包括输入节点IN、处理节点TON和输出节点Q的逻辑图(由于PT和ET未连接,则不必转化为AOV节点),定义输入节点IN为触点属性,处理节点TON为功能块属性,以及定义输出节点Q为线圈属性。然后,将各逻辑图按照图符之间的连接关系相连,形成图3d所示的AOV图。

实施例四

图4a为本发明实施例四中的一种梯形图转换二叉树的方法的流程图,本实施例在上述实施例的基础上进一步细化,提供了将AOV图转换为二叉树的具体步骤以及将所述AOV图转换为二叉树之前的预处理。下面结合图4a对本发明实施例四提供的一种梯形图转换二叉树的方法进行说明,包括以下步骤:

步骤410、获取梯形图中各图符以及图符之间的连接关系。

步骤420、根据各图符的输入输出处理逻辑,生成与各图符对应的逻辑图,逻辑图包括一个节点,或者,两个以上的节点以及节点之间的连接关系。

步骤430、根据各图符之间的连接关系,生成对应逻辑图之间的连接关系,形成顶点活动AOV图。

步骤410~步骤430详见上述实施例的描述,此处不再赘述。

步骤440、按照所述AOV图中串联节点的先后顺序,沿着二叉树的叶子节点所在层级到根节点所在层级的方向,将串联的节点依次配置为各层级的第一叶子节点。

以将图3d所示的AOV图转换为图4g所示的二叉树为例进行说明,图3d中的串联节点有两组,分别为节点IN1、节点IN、节点TON和节点Q,以及节点IN2、节点IN和节点MOV。在图4g中,沿着叶子节点所在层级到根节点所在层级的方向,即从下至上的方向,将两组串联的节点分别、依次配置为各层级的叶子节点。为了方便描述和区分,将串联的节点配置为的叶子节点称为第一叶子节点。

步骤450、将所述第一叶子节点的父节点配置为串联逻辑关系的节点。

如图4g所示,将节点IN1、节点IN、节点TON、节点Q、节点IN2、节点IN和节点MOV的父节点配置为“与”逻辑关系的节点,表示第一叶子节点之间是串联关系,采用符号&&表示。

步骤460、根据所述AOV图中节点之间的并联关系,将位置对应的并联的节点配置为同一层级的第二叶子节点。

图3d中,两组串联的节点之间是并联关系,节点Q与节点MOV是位置对应的并联节点,则将节点Q与节点MOV配置为同一层级的叶子节点。与节点Q和节点MOV串联的节点按照步骤450提供的方法进行配置。本步骤规定了两组串联节点之间的层级关系。

为了方便描述和区分,将并联的节点配置为的叶子节点称为第二叶子节点。有时,第一叶子节点同时也是第二叶子节点,例如节点Q和节点MOV。

步骤470、将并联的节点的父节点配置为并联逻辑关系的节点。

如图4g所示,节点Q与节点MOV的父节点配置为“或”逻辑关系的节点,表示第二叶子节点之间是并联关系,采用符号OR表示。

后续,图3d在两组串联的节点之后,还串联有节点IN3和OUT1,则返回根据步骤440,向节点Q和节点MOV的上层,依次配置节点IN3和OUT1为对应层级的叶子节点。根据步骤450,将节点IN3的父节点和OUT1的父节点配置为“与”逻辑关系的节点。

在一些情况中,节点之间的串并联关系复杂,导致生成二叉树时耗时较长,可能出错。在一可选实施方式中,在AOV图中添加虚拟节点和/或合并节点,以便简化AOV图,达到快速、准确生成二叉树的目的。

基于上述分析,在步骤440之前,还包括一预处理过程:将所述AOV图中并联的节点集合合并为合并节点,形成各节点串联的AOV图;其中,节点集合包括一个节点或者串联的多个节点,所述合并节点的节点属性为合并属性。首先,如果一个节点集合包括串联的多个节点,则将其中串联的节点合并为一个节点,然后将并联的各节点合并为一个合并节点。示例性的,如图4b所示,首先将第一节点集合中的节点IN1、节点IN、节点TON和节点Q合并为一个节点V1,然后将第二节点集合中的节点IN2、节点IN和节点MOV合并为一个节点V2,得到图4c。在图4c的基础上,进一步对两个并连的节点V1和V2进行合并,得到最终的合并节点V3,如图4d所示。

可选地,在步骤440之前还包括另一预处理过程:如果所述AOV图中节点的入度大于等于2,添加虚拟节点为所述节点的直接前驱;如果所述AOV图中节点的出度大于等于2,添加虚拟节点为所述节点的直接后继;其中,所述虚拟节点的节点属性为虚拟属性。具体地,如果一个节点的入度大于等于2,则在该节点左侧创建一个虚拟节点,如果一个节点的出度大于等于2,则在该节点的右侧创建一个虚拟节点。虚拟节点用于表征节点的出度和入度情况,便于对AOV图进行简化处理,提高转换效率。

示例性的,从图1b的左母线为起始,引出两条并联支路,即可理解为与左母线对应的节点的出度为2,需要在其右侧创建一个虚拟节点,即为VM1,并省略左母线对应的节点。触点IN3对应的节点IN3的入度为2,因此,需要在节点IN3的左侧创建一个虚拟节点,最终生成如图4b所示的AOV图。

本实施例中,生成二叉树之前,定义AOV图中各节点的结构体,以表示AOV图中每个节点的相关信息,所定义的AOV图中各节点的结构体包括节点属性,节点入度,节点出度,左虚拟节点,右虚拟节点以及虚拟节点创建值。其中,节点属性可以分为线圈属性、触点属性、函数属性、功能块属性、虚拟属性以及合并属性;节点入度用于记录当前节点的直接前驱节点的个数;节点出度用于记录当前节点的直接后继节点的个数;左虚拟节点用于记录创建于当前节点左侧的虚拟节点;右虚拟节点用于记录创建于当前节点右侧的虚拟节点;虚拟节点创建值为真(ture)时,且当前节点的入度大于等于2,在当前节点左侧创建虚拟节点;或者,当前节点出度大于等于2时,在当前节点右侧创建虚拟节点。

预处理完成后,按照所述AOV图中各节点的先后顺序,沿着二叉树的叶子节点所在层级到根节点所在层级的方向,将串联的节点依次配置为各层级的第一叶子节点;示例性的,按照如图4d的所示的AOV图中各节点的先后顺序,沿着二叉树的叶子节点所在层级到根节点所在层级的方向,将串联的节点(节点VM1、节点V3、节点VM2、节点IN3以及节点OUT1)依次配置为各层级的第一叶子节点,生成图4e。可选地,根据节点的结构体,若一个节点的出度为1,则表示该节点与其直接后继节点是串联关系。

然后,获取合并属性的节点所合并的节点集合;将节点集合之间位置对应的并联的节点,配置为同一层级的第二叶子节点;将所述合并属性的节点替换为所述每个节点集合的父节点。值得说明的是,如果节点集合包括串联的多个节点,则按照节点集合中节点的先后顺序,沿着子二叉树的叶子节点所在层级到根节点所在层级的方向,将每个节点集合中的节点依次配置为各层级的第一叶子节点。子二叉树的根节点与第二叶子节点的父节点为同一节点。可选地,根据节点的结构图,如果一个节点的出度或入度大于等于2,则表示该节点的直接后继节点或者直接前驱节点之间的关系为并联。然后,将每个节点集合的父节点配置为并联逻辑关系的节点。

示例性的,合并节点V3所合并的节点集合包括第一节点集合中的节点IN1、节点IN、节点TON和节点Q,以及第二节点集合中的节点IN2、节点IN和节点MOV。按照各节点集合中节点的先后顺序,沿着子二叉树的叶子节点所在层级到根节点所在层级的方向,将每个节点集合中的节点依次配置为各层级的第一叶子节点。将节点集合之间位置对应的节点Q和节点MOV配置为同一层级。将节点V3替换为两个节点集合的父节点OR,生成图4f。

最后,根据各节点的结构体,确定虚拟属性的节点,并从所述二叉树中删除虚拟属性的节点所配置为的叶子节点,即节点VM1和节点VM2。

在删除虚拟属性的节点所配置为的叶子节点之后,如果所述二叉树中的节点具有一个子树,将所述节点与与所述节点的逻辑关系一致的父节点和/或子节点合并,以保证二叉树的规范性。例如,图4f中删除节点VM1之后,节点VM1的父节点具有一个右子树。已知该父节点的逻辑关系是“与”,则将该父节点与该父节点的父节点(逻辑关系也是“与”)合并。同理,删除节点VM2后,将VM2的父节点与该父节点的父节点合并,保证每个父节点具有左右两个子树。最终生成的二叉树如图4g所示。

可选地,为了方便表示二叉树,采用二叉树中逻辑关系节点的结构体来表示二叉树。其中,逻辑关系节点包括并联逻辑关系的节点和串联逻辑关系的节点。逻辑关系节点的结构体包括:逻辑关系(并联或串联),当前逻辑关系节点包含的左右子节点以及当前逻辑关系节点所包含的AOV节点个数。其中,当前逻辑关系节点所包含的AOV节点个数用于表示当前逻辑关系节点的子节点中AOV节点的个数(对应二叉树中的叶子节点),当左右子树都为空时,其子节点中包含两个AOV节点;当左右子树有其一不为空时,其子节点中包含1个AOV节点;当左右子树都不为空,其子节点中不包含AOV节点。

本实施例的技术方案,通过预先配置合并节点和/或虚拟节点,简化AOV图;通过释放合并节点和删除虚拟节点,达到快速、准确生成二叉树的目的。

实施例五

图5为本发明实施例五提供的一种梯形图转换二叉树的装置的结构示意图,本实施例的技术方案适用于将梯形图转化为AOV图,并进一步将AOV图转化为二叉树的情况。该梯形图转换二叉树的装置,包括:图符获取模块510、逻辑图生成模块520、AOV图生成模块530和二叉树生成模块540。

图符获取模块510,用于获取梯形图中各图符以及图符之间的连接关系;

逻辑图生成模块520,用于根据各图符的输入输出处理逻辑,生成与各图符对应的逻辑图,所述逻辑图包括一个节点,或者,两个以上的节点以及节点之间的连接关系;

AOV图生成模块530,用于根据各图符之间的连接关系,生成对应逻辑图之间的连接关系,形成顶点活动AOV图;

二叉树生成模块540,用于将所述AOV图转换为二叉树。

本发明实施例的技术方案,通过确定梯形图中各图符输入输出处理逻辑,生成与各图符对应的逻辑图,然后根据梯形图中各图符的连接关系连接与各图符对应的逻辑图,从而生成AOV图,最后将AOV图生转化为二叉树。即本实施例的技术方案中,仅根据图符的输入输出处理逻辑生成与图符对应的逻辑图,并进一步根据上述逻辑图生成AOV图,解决了现有技术中根据梯形图中图符的具体含义生成AOV图的方法不具有通用性的问题,提高了AOV图生成方法的通用性。

可选的,所述逻辑图生成模块520,包括:

节点生成单元,用于根据图符的输入输出处理逻辑,生成与所述图符对应的至少一个输入节点和处理输出节点;

节点属性定义单元,用于分别定义至少一个所述输入节点和处理输出节点的节点属性;

逻辑图生成单元,用于将所述至少一个输入节点定义为所述处理输出节点的直接前驱,生成与所述图符对应的逻辑图。

可选的,当所述图符为多输入单输出的函数FU图符时,所述节点生成单元,具体用于:

根据FU图符的输入输出处理逻辑,生成与FU图符对应的多个输入节点和处理输出节点;

所述节点属性定义单元,具体用于:

定义多个输入节点和处理输出节点的节点属性为函数属性。

可选的,所述逻辑图生成模块520,还包括:

节点生成单元,用于根据各图符的输入输出处理逻辑,生成与所述图符对应的至少一个输入节点、处理节点和多个输出节点;

节点属性定义单元,用于分别定义至少一个所述输入节点、处理节点和多个所述输出节点的节点属性;

逻辑图生成单元,用于将所述至少一个输入节点定义为所述处理节点的直接前驱,将所述多个输出节点定义为所述处理节点的直接后继,生成与所述图符对应的逻辑图。

可选的,当所述图符为多输入多输出的功能块FB图符时,所述节点生成单元,具体用于:

根据FB图符的输入输出处理逻辑,生成与FB图符对应的多个输入节点、处理节点和多个输出节点;

所述节点属性定义单元,具体用于:

定义所述多个输入节点的节点属性为线圈属性,定义所述处理节点的节点属性为功能块属性,定义所述多个输出节点的节点属性为触点属性。

可选的,所述二叉树生成模块540,包括:

第一叶子节点配置单元,用于按照所述AOV图中串联节点的先后顺序,沿着二叉树的叶子节点所在层级到根节点所在层级的方向,将串联的节点依次配置为各层级的第一叶子节点;

第一父节点配置单元,用于将所述第一叶子节点的父节点配置为串联逻辑关系的节点;

第二叶子节点配置单元,用于根据所述AOV图中节点之间的并联关系,将位置对应的并联的节点配置为同一层级的第二叶子节点;

第二父节点配置单元,用于将并联的节点的父节点配置为并联逻辑关系的节点。

可选的,所述梯形图转换二叉树的装置,还包括:

节点合并模块,用于在将所述AOV图转换为二叉树之前,将所述AOV图中并联的节点集合合并为合并节点,形成各节点串联的AOV图;

其中,节点集合包括一个节点或者串联的多个节点,所述合并节点的节点属性为合并属性;

相应地,所述第一叶子节点配置单元,具体用于:

按照所述AOV图中各节点的先后顺序,沿着二叉树的叶子节点所在层级到根节点所在层级的方向,将串联的节点依次配置为各层级的第一叶子节点。

所述第二叶子节点配置单元,具体用于:

获取合并属性的节点所合并的节点集合;

将节点集合之间位置对应的并联的节点,配置为同一层级的第二叶子节点;

将所述合并属性的节点替换为所述每个节点集合的父节点;

所述第二父节点配置单元,具体用于:

将每个节点集合的父节点配置为并联逻辑关系的节点。

可选的,所述梯形图转换二叉树的装置,还包括:

虚拟节点添加模块,用于在所述将所述AOV图转换为二叉树之前,如果所述AOV图中节点的入度大于等于2,添加虚拟节点为所述节点的直接前驱;

如果所述AOV图中节点的出度大于等于2,添加虚拟节点为所述节点的直接后继;

其中,所述虚拟节点的节点属性为虚拟属性;

相应地,所述二叉树生成模块540,还包括:

虚拟节点删除单元,用于在所述将并联的节点的父节点配置为并联逻辑关系的节点之后,从所述二叉树中删除虚拟属性的节点所配置为的叶子节点;

如果所述二叉树中的节点具有一个子树,将所述节点与与所述节点的逻辑关系一致的父节点和/或子节点合并。

本发明实施例所提供的梯形图转换二叉树的装置可执行本发明任一实施例提供的梯形图转换二叉树的方法,具备执行方法相应的功能模块和有益效果。

实施例六

图6为本发明实施例六提供的一种电子设备的结构示意图,如图6所示,该电子设备包括处理器60和存储器61;设备中处理器60的数量可以是一个或多个,图6中以一个处理器60为例;设备中的处理器60和存储器61可以通过总线或其他方式连接,图6中以通过总线连接为例。

存储器61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种梯形图转换二叉树的方法对应的程序指令/模块(例如,梯形图转换二叉树的装置中的图符获取模块510、逻辑图生成模块520、AOV图生成模块530和二叉树生成模块540)。处理器60通过运行存储在存储器61中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述梯形图转换二叉树的方法。

该方法包括:

获取梯形图中各图符以及图符之间的连接关系;

根据各图符的输入输出处理逻辑,生成与各图符对应的逻辑图,所述逻辑图包括一个节点,或者,两个以上的节点以及节点之间的连接关系;

根据各图符之间的连接关系,生成对应逻辑图之间的连接关系,形成顶点活动AOV图;

将所述AOV图转换为二叉树。

存储器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

实施例七

本发明实施例七还提供一种其上存储有计算机程序的计算机可读存储介质,所述计算机程序在由计算机处理器执行时用于执行一种梯形图转换二叉树的方法,该方法包括:

获取梯形图中各图符以及图符之间的连接关系;

根据各图符的输入输出处理逻辑,生成与各图符对应的逻辑图,所述逻辑图包括一个节点,或者,两个以上的节点以及节点之间的连接关系;

根据各图符之间的连接关系,生成对应逻辑图之间的连接关系,形成顶点活动AOV图;

将所述AOV图转换为二叉树。

当然,本发明实施例所提供的其上存储有计算机程序的计算机可读存储介质,其计算机程序不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的梯形图转换二叉树的方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述一种梯形图转换二叉树的装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 一种梯形图转换二叉树的方法、装置、设备及存储介质
  • 一种梯形图的转换方法、装置、设备及存储介质
技术分类

06120112158785