CN104408263A - 一种自动处理闭环回路的图形元件分组排序方法 - Google Patents
一种自动处理闭环回路的图形元件分组排序方法 Download PDFInfo
- Publication number
- CN104408263A CN104408263A CN201410746628.6A CN201410746628A CN104408263A CN 104408263 A CN104408263 A CN 104408263A CN 201410746628 A CN201410746628 A CN 201410746628A CN 104408263 A CN104408263 A CN 104408263A
- Authority
- CN
- China
- Prior art keywords
- graphic elements
- line
- executive component
- graphic
- packet sequencing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
一种自动处理闭环回路的图形元件分组排序方法。收集起始图形元件所连接的可执行元件,将上述图形元件作为一个疑似的图形元件组中的图形元件,并按照拓扑关系进行初排序;依次遍历收集到的可执行元件,排查疑似图形组,如果该图形元件已经被排序,则不做处理;对于单一图形元件组内的图形元件进行基于数据流和拓扑关系的快速排序,并在上述过程中通过闭环处理程序自动识别并处理闭环回路;遍历孤立的无连接关系的图形元件,将上述图形元件作为独立的图形元件组;图形元件组之间通过各自的特征坐标点进行拓扑排序;遍历已排序的图形元件组,在组内依次遍历已排序的图形元件,同时设置依次递增的执行序号。上述方法能够智能识别处理图形元件连接关系中的闭合回路,在整个执行过程中完全无须人工干预,方便高效。
Description
技术领域
本发明属于自动化控制技术领域,尤其涉及一种自动处理闭环回路的图形元件分组排序方法。
背景技术
在工业自动化控制中,支持图形化编程的组态软件得到广泛应用。通常,该类软件通过编辑图形元件在页面上的拓扑位置以及彼此之间的连接关系达到组态某种用于数据处理和逻辑控制的程序的目的。
图形元件中一般可包含两种对外引脚:
(1)输入引脚:通过连线连接其它图形元件的输出引脚,将上述图形元件作为当前输入引脚所属图形元件待操作的数据源。
(2)输出引脚:将当前输出引脚所属图形元件的操作结果输出给通过连线连接的其它图形元件。
图形元件之间可使用连线相互连接,对于连线有如下定义:
(1)连线起始端:连线中连接图形元件输出引脚的一端。
(2)连线终止端:连线中连接图形元件输入引脚的一端。
另外,图形元件的可大体进行如下分类:
(1)输入元件:具有唯一的输出引脚,作为数据源存在。
(2)运算元件:具有若干输入引脚和输出引脚,可根据输入数据执行某种功能后,从输出引脚输出执行结果,作为功能执行体存在。可将若干图形元件通过连线连接,实现某种特定功能,并将上述图形元件组合封装为一个包含若干输入引脚和输出引脚的自定义的运算元件使用。
(3)终结元件:具有唯一的输入引脚,执行数据接收的动作,作为终结端存在。
由于运算元件和终结元件均执行了某种动作,因此在利用上述图形元件组态逻辑算法时需要对其执行顺序进行部署。目前已经公开的文献或相关产品中,对于图形编辑及相关过程中依然存在不足之处:有一种是完全需要人工参与,即在组态逻辑算法过程中,对于具有可执行功能的图形元件的执行顺序需要人工进行设置,整个过程纷繁复杂,容易出错,新增或删除图形元件时,相关图形元件的执行顺序往往需要一并修改;另外有一种排序算法是半自动进行,即在组态逻辑算法过程中,一旦出现闭环情况,需要人为地设定某种特殊的图形元件,显式地打破程序中出现的闭环,否则将无法对页面中的图形元件的执行顺序进行自动排布。
发明内容
本发明要解决的技术问题是,提供一种能够自动处理闭环回路的图形元件分组排序方法,其排序过程完全无须人工干预,智能解决图形元件连接过程中出现的闭环回路。
为更好的描述本发明,因此做如下定义:将输入元件或输入引脚无连接的运算元件并称为起始元件;将运算元件和终结元件称为可执行元件;将通过连线串联在一组的图形元件称为图形元件组。将连线的输出引脚一端称为连线的起始端,将连线的输入引脚一端称为连线的终止端。
为更好的描述本发明,因此做如下说明:每一个可执行元件中包含一个名为“分组排序标志位”的标志位,具体含义如下:当该标志位被置为真时,表示该可执行元件的执行顺序已经被确定了;反之,则表示该可执行元件的执行顺序尚未被确定。
本发明具体采用以下技术方案:一种自动处理闭环回路的图形元件分组排序方法,其特征在于,所述方法包括以下步骤:
(1)在逻辑组态页面中,将所有图形元件分组初始化,收集起始元件所连接的可执行元件,并按照可执行元件的二维坐标点进行排序;
(2)依次遍历收集到的可执行元件,如果当前遍历的可执行元件已经完成分组排序即确定了执行顺序,并且已经被包含在其它图形元件组中,则继续遍历其它可执行元件;否则将当前遍历的可执行元件带入到步骤(3)进行处理;
(3)根据该可执行元件的输入引脚以及输出引脚的连线的连接关系,得到该可执行元件所属的一个图形元件组中若干可执行元件的执行顺序即分组排序;
(4)遍历孤立的无连接关系的图形元件,将孤立的无连接关系的图形元件作为独立的图形元件组;
(5)图形元件组之间通过各自的特征坐标点进行组间排序;
(6)遍历已排序的图形元件组,在组内依次遍历已排序的图形元件,同时设置依次递增的执行序号。
本申请还进一步优选包括以下技术方案。
在步骤(1)中,将所有可执行元件中所包含的是否完成分组排序标志位清零;
将每一图形元件最左上角在所述逻辑组态页面中的拓扑位置作为该图形元件的在所述直角坐标系中的二维坐标点,根据起始元件所连接的可执行元件的二维坐标点进行排序,排序规则为先上后下、从左至右,即先按照y轴坐标对图形元件进行升序排列,y轴坐标相同的再按照x轴坐标进行升序排序。
在步骤(2)中,遍历某一可执行元件的时候需要判断其是否已经被其它图形元件组所包含,如果该可执行元件所属的分组排序标志位已经被置为真,则认为该可执行元件已经完成分组排序,并且已经被包含在其它图形元件组中了。
在步骤(3)中,定义并使用列表数据结构作为存储所述分组排序的执行元件的容器;定义并使用先进先出的队列数据结构作为辅助结构存储尚未经过分组排序的可执行元件。
确定单一图形元件组内图形元件执行顺序的具体步骤包括:
(31)从队列数据结构的队列头中取出当前操作的可执行元件,按照引脚从上到下的顺序依次遍历其输入引脚端连线,并判断该连线是否为闭环反馈连线,如果确定某条连线为非闭环反馈连线,同时连线另一端的图形元件为可执行元件且分组排序标志位尚未被置为真,则将该连线另一端的可执行元件加入到队列头部,重复步骤(31);
(32)如果可执行元件的某一输入引脚对应的连线为闭环反馈连线或输入引脚对应的连线为非闭环反馈连线且连线另一端的图形元件为输入元件,则认为可执行元件的该输入引脚所对应的数据源为已知,如果当前操作的可执行元件所有输入引脚所对应的数据源均已知,则将该可执行元件的分组排序标志位置为真,并将该可执行元件附加到列表数据结构尾部;
(33)将队列数据结构的队列中原有元素即尚未经过分组排序的可执行元件依次取出,查看当前操作的可执行元件的输出端连线,将非闭环反馈连线对应的分组排序标志位尚未被置为真的可执行元件进行排序:首先将上述可执行元件按照终结元件和运算元件进行分类,并对两种类型图形元件分别进行排序,将排序后的终结元件和运算元件依次添加到队列尾部后,再将队列中原有元素按照原有顺序依次添加到队列尾部,重复步骤(31)。
其中,在步骤(31)中,判断某连线是否为闭环反馈连线的方法为:
以正在操作的可执行元件的某一条输入引脚对应的连线作为初始连线,以深度优先的原则依次向图形元件输入引脚指向的数据源方向递归地遍历图形元件;
将上述按照深度优先原则遍历图形元件过程中遍历到的若干连线统称为“访问路径”,在上述遍历过程中每遍历到一条连线就将其记录到该访问路径对应的连线向量表中;
当遍历到图形元件为起始元件时,则意味着该条访问路径的终结,同时访问路径上对应的连线向量表中的连线均被置为非闭环反馈连线;
当某条访问路径上新遍历并加入到该路径对应的连线向量表中连线的终止端对应的图形元件与连线向量表中已经存在的某一连线起始端对应的图形元件是同一个图形元件时,意味着这两条连线及其中间的若干连线构成了闭合回路,按照上述闭合回路所包含的连线在连线向量表中的顺序依次对上述连线进行遍历:对于每条连线,将其起始端和终止端对应的可执行元件排序,如果连线终止端对应的图形元件靠前,则认为该连线为闭合回路中唯一的闭环反馈线,其余连线均为非闭环反馈连线。
在步骤(5)中,所述图形元件组内部除了包含可执行元件外,还包含若干输入元件,将一个图形元件组中最靠前的图形元件的二维坐标点即为作为该图形元件组的特征坐标点,所有图形元件组根据各自的特征坐标点的拓扑位置进行组间排序。
本发明具有以下有益的技术效果:
提供一种自动处理闭环回路的图形元件分组排序方法,针对页面内的图形元件按照连接关系进行分组处理,在图形元件组内部进行基于拓扑位置和数据流的智能顺序,并且在该过程中智能识别处理闭合回路,确定闭环反馈连线。整个排序过程完全无须人工干预,大大提高了编程人员的工作效率。
附图说明
图1为本发明公开的自动处理闭环回路的图形元件分组排序方法流程图;
图2为本发明确定单一图形元件组内部所包含的图形元件的排序方法流程图;
图3为本发明确定闭环反馈连线的闭环处理程序的流程图;
图4为本发明所描述的图形元件分组排序方法中连线网络图;
其中(1)描述了仅存在一条路径且无闭合回路的情况;(2)描述了仅存在一条路径且无分支的完整的闭环的情况;(3)描述了仅存在一条路径且闭环发生在起始连线之外的存在情况;(4)描述了存在多条路径的综合情况;
图5为本发明提供的图形绘制系统的图形元件智能分组排序方法示例图,其中(1)描述了图形元件连接关系无闭合回路的情况;(2)描述了图形元件连接存在闭合回路的情况;(3)描述了图形元件之间的连接存在闭环时,闭合回路中所包含的图形元件的拓扑位置变化对排序的影响。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一种实施例,而不是全部的实施例。
如附图1所示,本申请公开了一种自动处理闭环回路的图形元件分组排序方法,所述方法包括以下步骤:
(1)图形元件分组初始化:将所有可执行元件中所包含的是否完成分组排序标志位清零,只有当该可执行元件确定执行顺序后该可执行元件所属的分组排序的标志位才被置为真;在逻辑组态页面建立直角坐标系,将每一图形元件最左上角在所述逻辑组态页面中的拓扑位置作为该图形元件的在所述直角坐标系中的二维坐标点;遍历逻辑组态页面中的图形元件,收集起始元件所连接的可执行元件,根据起始元件所连接的可执行元件的二维坐标点进行排序,排序规则为先上后下、从左至右,即先按照y轴坐标对图形元件进行升序排列,y轴坐标相同的再按照x轴坐标进行升序排序;
(2)排查疑似图形元件组,经过步骤(1)排序后的可执行元件未必是一个单独的图形元件组,它有可能属于一个已经存在的图形元件组,将经步骤(1)排序后的可执行元件按照顺序依次进行遍历,并认为每一个可执行元件为一个疑似图形元件组中的图形元件,当遍历某一可执行元件的时候需要判断其是否已经被其它图形元件组所包含,如果该可执行元件所属的分组排序标志位已经被置为真,则认为该可执行元件已经完成分组排序,并且已经被包含在其它图形元件组中了,继续遍历其它可执行元件;否则将当前遍历的可执行元件带入到步骤(3)进行处理;
(3)确定每一个图形元件组中图形元件执行顺序:根据步骤(2)得到了一个标志位尚未被置为真的可执行元件;根据该可执行元件的输入引脚以及输出引脚的连线的连接关系,得到一个图形元件组中若干可执行元件的执行顺序即分组排序;定义并使用列表数据结构作为存储所述分组排序的执行元件的容器;定义并使用先进先出的队列数据结构作为辅助结构存储尚未经过分组排序的可执行元件;将当前遍历的可执行元件入队列尾部,此时队列中只有一个可执行元件,图形元件组内部图形元件排序过程是一个循环,终止条件为队列为空;
(4)遍历其余图形元件组:经过步骤(2)和步骤(3)已经找到了所有包含起始元件的且彼此之间有连接关系的若干图形元件所构成的图形元件组,并确定了其内部可执行元件的执行顺序;将逻辑页面中剩余的孤立无连接关系的且分组排序标志位尚未被置为真的可执行元件分别当为一个独立的图形元件组;
(5)图形元件组之间的排序:图形元件组内部除了包含可执行元件外,还包含若干输入元件,将一个图形元件组中包含的所有图形元件经步骤(2)、(3)的分组排序后,将最靠前的图形元件的坐标点即为作为该图形元件组的特征坐标点,所有图形元件组根据各自的特征坐标点的拓扑位置进行组间排序;
(6)按顺序依次获取并遍历经过步骤(5)的已排序各个图形元件组中对应的图形元件列表,为每一个可执行元件设置递增的执行序号。
进一步的,在步骤(3)中,确定单一图形元件组内图形元件执行顺序的具体步骤包括:
(31)从队列数据结构的队列头中取出当前操作的可执行元件,并按照引脚从上到下的顺序依次遍历其输入引脚端连线,并通过闭环处理程序判断该连线是否为闭环反馈连线,如果确定某条连线为非闭环反馈连线,同时连线另一端的图形元件为可执行元件且分组排序标志位尚未被置为真,则将该连线另一端的可执行元件加入到队列头部,重复步骤(31);
(32)如果可执行元件的某一输入引脚对应的连线为闭环反馈连线或输入引脚对应的连线为非闭环反馈连线且连线另一端的图形元件为输入元件,则认为可执行元件的该输入引脚所对应的数据源为已知,如果当前操作的可执行元件所有输入引脚所对应的数据源均已知,则将该可执行元件的分组排序标志位置为真,并将该可执行元件附加到列表数据结构尾部;
(33)将队列数据结构的队列中原有元素依次取出后备用,查看当前操作的可执行元件的输出端连线,将非闭环反馈连线对应的分组排序标志位尚未被置为真的可执行元件进行排序。
在步骤(33)的排序过程中终结元件优先于运算元件,首先将上述可执行元件按照终结元件和运算元件进行分类,并对两种类型图形元件分别进行排序,将排序后的终结元件和运算元件依次添加到队列尾部后,再将队列中原有元素按照原有顺序依次添加到队列尾部,重复步骤(31)。
进一步的,(31)步骤中所述的闭环处理程序具体操作包括:
为更好的描述闭环处理程序的操作流程,做出如下定义:
以正在操作的执行元件的某一条输入引脚对应的连线作为初始连线,以深度优先的原则依次向图形元件输入引脚指向的数据源方向递归地遍历图形元件。将上述按照深度优先原则遍历图形元件过程中遍历到的若干连线统称为“访问路径”。同时,在上述遍历过程中每遍历到一条连线就将其记录到该访问路径对应的连线向量表中,访问路径所包含的连线随着遍历深度的加深不断增加。一条初始连线可能引发出多条访问路径。递归遍历图形元件的终止条件为有两个:1)当遍历到图形元件为起始元件时,则意味着该条访问路径的终结,同时访问路径上对应的连线向量表中的连线均被置为非闭环反馈连线;2)或者,当某条访问路径上新遍历并加入到该路径对应的连线向量表中连线的终止端对应的图形元件与连线向量表中已经存在的某一连线起始端对应的图形元件是同一个图形元件时,意味着这两条连线及其中间的若干连线构成了闭合回路。按照上述闭合回路所包含的连线在连线向量表中的顺序依次对上述连线进行遍历。对于每条连线,将其起始端和终止端对应的可执行元件排序,如果连线终止端对应的图形元件靠前,则认为该连线为闭合回路中唯一的闭环反馈线,其余连线均为非闭环反馈连线。
进一步的,步骤(31)中调用闭环处理程序应注意:
由于闭环处理程序是将一条连线起始的所有路径进行遍历访问,因此在调用该程序前需要判断目标起始连线是否经过闭环处理程序判定,如果该连线已经过判定,便无须重复调用,以提高程序处理效率。另外,无须对终结元件的输入端连线调用闭环处理程序,原因在于:(a)终结元件只有唯一的输入端连线,因此该连线本身必定为非闭环反馈连线。(b)如果该先连线起始端连接的可执行元件为输入元件,那么该路径上只有一条连线,且为非闭环反馈连线;如果该连线起始端连接的可执行元件为运算元件,则其自身的输入端连线一定已经完成闭环处理程序的判定,这是由前面步骤所决定的。
进一步的,步骤(32)中排序目标执行元件应注意:
如果目标执行元件的某个输入引脚没有连线,那么仍然认为该输入引脚引入的数据源为已知。根据上述规定,即使可执行元件的对外引脚连接不完整,仍然可使用该分组排序方法排序页面中已经存在的图形元件。这使得本方法的适用范围进一步扩大。
下面进一步通过实施例介绍本申请的技术方案。
实施例1:
请参阅图1,其为自动处理闭环回路的图形元件分组排序方法流程图,同时结合以图5(1)所示的图形元件分布以及连接关系为例,说明如何针对页面中的图形元件进行分组排序。为方便描述,使用图形元件内部包含的符号来识别图形元件。例如,包含符号“in1”的输入元件,称为“输入元件in1”。本申请自动处理闭环回路的图形元件分组排序方法包括以下步骤:
(1)图形元件初始化:图5(1)中,起始元件分别为输入元件in1、输入元件in2、输入元件in3、输入元件var1,其连接的可执行元件经拓扑排序的结果为运算元件GE、运算元件ADD、运算元件MUL、运算元件SUB。
(2)排查疑似的图形元件组:当查看运算元件GE时,其尚未未经过排序处理,因此将其带入步骤(3)进行处理。由于在对包含运算元件GE的图形元件组进行排序处理后,运算元件ADD、运算元件MUL以及运算元件SUB也已经一并经过了排序处理,因此当随后排查包含运算元件ADD、运算元件MUL以及运算元件SUB时,它们的分组排序标志位已经被置为真,它们各自所代表的图形元件组均不存在。
(3)确定单一分组内图形元件执行顺序:
定义辅助队列Q和辅助列表L,将运算元件GE置于已被清空的辅助队列Q中。从辅助队列中取出队列头元素,将其作为当前目标执行元件,该过程为一个循环过程,终止条件为队列为空,图2描述了该部分的流程图,步骤(31)~(33)为其具体实施的步骤。最终,运算元件GE为首的图形元件组进行排序处理后,组内的可执行元件排列顺序为运算元件ADD、运算元件MUL、运算元件SUB、输出元件var1、运算元件GE、输出元件out。
(31)遍历目标执行元件输入端连线。下面详述第一次执行该步骤时的情况:此时取出的目标执行元件为运算元件GE,随后通过调用闭环处理程序处理以目标执行元件左侧的连线作为目标起始连线的所有访问路径。如果存在闭合回路,则找到该闭合回路中的唯一的一条闭环反馈连线。在图5(1)所示的图形元件连接关系中不存在闭合回路,闭环处理程序的处理流程将在实施例2中进行详细描述。此处,仅将闭环处理程序的结果进行展示,以运算元件GE输入端的连线为首的路径共5条,分别为Path1{line8}、Path2{line1,line2,line4,line6}、Path3{line1,line2,lin4,line7}、Path4{line1,line2,line5}、Path5{line1,line3},上述路径中涉及的所有连线均不是闭环反馈连线。由于当前目标执行元件GE的输入连线line1和line8均为非闭环反馈连线,且运算元件SUB未经排序,因此需要将运算元件SUB置于辅助队列头部,重复步骤(31)。
(32)已知输入源的目标执行元件完成排序。下面详述第一次执行该步骤时的情况:经过反复执行步骤(31),此时辅助队列Q中的所包含的可执行元件分别为运算元件ADD,此时目标执行元件即为运算元件ADD,由于其输入端连线的起始端图形元件为起始元件,因此认为运算元件ADD的所有输入源有已知,那么将运算元件ADD置于辅助列表L中,至此运算元件ADD完成排序。
(33)遍历目标执行元件输出端连线。下面详述第一次执行该步骤时的情况:目前,辅助队列Q为空,将辅助队列Q中的元件依次取出备用的步骤可略过。此时,目标执行元件为运算元件ADD,其唯一的输出端连线line4是非闭环反馈连线,且line4另一端的运算元件SUB尚未经过排序,那么则将其放入辅助队列Q中,重复步骤(31)。
(4)遍历其它图形元件组:图5(1)中无孤立的可执行元件为输出元件var2,它自身构成一个图形元件组。
(5)确定各分组之间排序:首先,获取各个图形元件组的特征坐标点。在图5(1)中所示的图形元件组有两个:一个为包含运算元件GE的图形元件组,其内部所有图形元件经过拓扑排序后,排在最靠前的为运算元件GE,则该图形元件组的特征坐标点即为运算元件GE的拓扑位置坐标;另一个为仅包含输出元件var2的图形元件组,那么该图形元件组的特征坐标点即为输出元件var2的拓扑位置坐标。显而易见,图形元件组间排序的结果为包含运算元件GE的图形元件组在前,仅包含输出元件var2的图形元件组在后。
(6)确定页面中可执行元件最终排序:首先,依次遍历包含运算元件GE的图形元件组内的可执行元件的,再遍历包含输出元件var2的图形元件组内的可执行元件。该页面中可执行元件的最终排序为:
运算元件ADD、运算元件MUL、运算元件SUB、输出元件var1、运算元件GE、输出元件out、输出元件var2。
实施例2:
图4说明了若干连线构成的网络图举例,并将图形元件抽象为圆点,以突出路径中连线之间的彼此关系。其中,图中加粗的连线即为起始连线。图4(1)描述了仅存在一条路径且无闭合回路的情况;图4(2)描述了仅存在一条路径且无分支的完整的闭环的情况;图4(3)描述了仅存在一条路径且闭环发生在起始连线之外的存在情况;图4(4)则描述了存在多条路径的综合情况。无论哪一种情况,均可使用闭环处理程序进行判定。
图3描述了闭环处理程序的流程图,下面将结合以图5(2)所示的图形元件分布以及连接关系为例,说明如何智能处理和识别闭合回路中的闭环反馈连线。
以图5(2)中的运算元件GE作为当前目标执行元件,其输入端连线所构成的所有访问路径有5条,包括:Path1:{line8}、Path2:{line1,line3}、Path3:{line1,line2,line4,line6}、Path4:{line1,line2,line5}以及Path5{line1,line2,line4,line7}。其中,line5的起始端运算元件为SUB,终止端运算元件为MUL;line7的起始端运算元件为SUB,终止端运算元件为ADD。访问路径Path1、Path2以及Path3的末端均为输入元件,符合终止以深度优先原则依次向输入端方向递归地遍历图形元件的条件,且未构成闭合回路,其路径上的连线网络符合图4(1)所示的连线网络模型;访问路径Path4和Path5已经形成了闭合回路,其路径上的连线网络符合图4(3)所示的连线网络模型。
以Path4为例进行详细说明,当遍历line5之前,该路径的连线向量表中有line1和line2两条连线,且这两条连线不构成闭合回路。将line5插入到该路径的连线向量表后,依次遍历连线向量表中原有存在的连线,查看line5的起始端运算元件SUB是否与其中的某条连线的终止端运算元件为同一个运算元件,从而可以判定这两条连线之间所有连线形成了闭合回路。显而易见,line2和line5构成了闭合回路。接下来,则在闭合回路中寻找到闭环反馈连线。对比line2的起始端运算元件MUL和终止端运算元件SUB的拓扑位置可知,起始端运算元件MUL拓扑位置靠前,因此line2不是闭环反馈连线;继续对比line5的起始端运算元件SUB和终止端运算元件ADD的拓扑位置可知,其终止端运算元件ADD拓扑位置靠前,此时可以确定line5是闭环反馈连线,那么Path4路径上其它连线均为非闭环反馈连线。同样地,Path5路径上唯一的闭环反馈连线为line7,其它连线均为非闭环反馈连线。
进一步的,图5(3)展示了闭合回路中所包含的图形元件的拓扑位置变化对排序的影响。由于确定一个闭合回路中唯一的闭环反馈连线是以连线两端运算元件的拓扑位置关系为依据的,那么如果连线一端的运算元件拓扑位置发现了改变,那么闭合回路中的闭环反馈连线则有可能变为其它连线。与图5(2)相比,图5(3)中运算元件SUB的拓扑位置在垂直方向上发生了改变。那么在由line2和line5组成的闭合回路中,对比line2的起始端运算元件MUL和终止端运算元件SUB的拓扑位置可知,终止端运算元件SUB拓扑位置靠前,因此line2则成为闭环反馈连线。因此,尽管图形元件个数不变,仅仅因为运算元件SUB的拓扑位置发生了改变,最终导致图5(2)和图5(3)中可执行元件的顺序发生了改变。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明实施例的精神或范围的情况下,在其它实施例中实现。因此,本发明实施例将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (7)
1.一种自动处理闭环回路的图形元件分组排序方法,其特征在于,所述方法包括以下步骤:
(1)在逻辑组态页面中,将所有图形元件分组初始化,收集起始元件所连接的可执行元件,并按照可执行元件的二维坐标点进行排序;(2)依次遍历收集到的可执行元件,如果当前遍历的可执行元件已经完成分组排序即确定了执行顺序,并且已经被包含在其它图形元件组中,则继续遍历其它可执行元件;否则将当前遍历的可执行元件带入到步骤(3)进行处理;
(3)根据该可执行元件的输入引脚以及输出引脚的连线的连接关系,得到该可执行元件所属的一个图形元件组中若干可执行元件的执行顺序即分组排序;
(4)遍历孤立的无连接关系的图形元件,将孤立的无连接关系的图形元件作为独立的图形元件组;
(5)图形元件组之间通过各自的特征坐标点进行组间排序;
(6)遍历已排序的图形元件组,在组内依次遍历已排序的图形元件,同时设置依次递增的执行序号。
2.根据权利要求1所述的图形元件分组排序方法,其特征在于:
在步骤(1)中,将所有可执行元件中所包含的是否完成分组排序标志位清零;
将每一图形元件最左上角在所述逻辑组态页面中的拓扑位置作为该图形元件的在所述直角坐标系中的二维坐标点,根据起始元件所连接的可执行元件的二维坐标点进行排序,排序规则为先上后下、从左至右,即先按照y轴坐标对图形元件进行升序排列,y轴坐标相同的再按照x轴坐标进行升序排序。
3.根据权利要求1所述的图形元件分组排序方法,其特征在于:
在步骤(2)中,遍历某一可执行元件的时候需要判断其是否已经被其它图形元件组所包含,如果该可执行元件所属的分组排序标志位已经被置为真,则认为该可执行元件已经完成分组排序,并且已经被包含在其它图形元件组中了。
4.根据权利要求1所述的图形元件分组排序方法,其特征在于:
在步骤(3)中,定义并使用列表数据结构作为存储所述分组排序的执行元件的容器;定义并使用先进先出的队列数据结构作为辅助结构存储尚未经过分组排序的可执行元件。
5.根据权利要求4所述的图形元件分组排序方法,其特征在于:
确定单一图形元件组内图形元件执行顺序的具体步骤包括:
(31)从队列数据结构的队列头中取出当前操作的可执行元件,按照引脚从上到下的顺序依次遍历其输入引脚端连线,并判断该连线是否为闭环反馈连线,如果确定某条连线为非闭环反馈连线,同时连线另一端的图形元件为可执行元件且分组排序标志位尚未被置为真,则将该连线另一端的可执行元件加入到队列头部,重复步骤(31);
(32)如果可执行元件的某一输入引脚对应的连线为闭环反馈连线或输入引脚对应的连线为非闭环反馈连线且连线另一端的图形元件为输入元件,则认为可执行元件的该输入引脚所对应的数据源为已知,如果当前操作的可执行元件所有输入引脚所对应的数据源均已知,则将该可执行元件的分组排序标志位置为真,并将该可执行元件附加到列表数据结构尾部;
(33)将队列数据结构的队列中原有元素即尚未经过分组排序的可执行元件依次取出,查看当前操作的可执行元件的输出端连线,将非闭环反馈连线对应的分组排序标志位尚未被置为真的可执行元件进行排序:首先将上述可执行元件按照终结元件和运算元件进行分类,并对两种类型图形元件分别进行排序,将排序后的终结元件和运算元件依次添加到队列尾部后,再将队列中原有元素按照原有顺序依次添加到队列尾部,重复步骤(31)。
6.根据权利要求5所述的图形元件分组排序方法,其特征在于:
在步骤(31)中,判断某连线是否为闭环反馈连线的方法为:
以正在操作的可执行元件的某一条输入引脚对应的连线作为初始连线,以深度优先的原则依次向图形元件输入引脚指向的数据源方向递归地遍历图形元件;
将上述按照深度优先原则遍历图形元件过程中遍历到的若干连线统称为“访问路径”,在上述遍历过程中每遍历到一条连线就将其记录到该访问路径对应的连线向量表中;
当遍历到图形元件为起始元件时,则意味着该条访问路径的终结,同时访问路径上对应的连线向量表中的连线均被置为非闭环反馈连线;
当某条访问路径上新遍历并加入到该路径对应的连线向量表中连线的终止端对应的图形元件与连线向量表中已经存在的某一连线起始端对应的图形元件是同一个图形元件时,意味着这两条连线及其中间的若干连线构成了闭合回路,按照上述闭合回路所包含的连线在连线向量表中的顺序依次对上述连线进行遍历:对于每条连线,将其起始端和终止端对应的可执行元件排序,如果连线终止端对应的图形元件靠前,则认为该连线为闭合回路中唯一的闭环反馈线,其余连线均为非闭环反馈连线。
7.根据权利要求1所述的图形元件分组排序方法,其特征在于:
在步骤(5)中,所述图形元件组内部除了包含可执行元件外,还包含若干输入元件,将一个图形元件组中最靠前的图形元件的二维坐标点即为作为该图形元件组的特征坐标点,所有图形元件组根据各自的特征坐标点的拓扑位置进行组间排序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410746628.6A CN104408263B (zh) | 2014-12-09 | 2014-12-09 | 一种自动处理闭环回路的图形元件分组排序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410746628.6A CN104408263B (zh) | 2014-12-09 | 2014-12-09 | 一种自动处理闭环回路的图形元件分组排序方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104408263A true CN104408263A (zh) | 2015-03-11 |
CN104408263B CN104408263B (zh) | 2017-04-19 |
Family
ID=52645894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410746628.6A Active CN104408263B (zh) | 2014-12-09 | 2014-12-09 | 一种自动处理闭环回路的图形元件分组排序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104408263B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829952A (zh) * | 2018-05-31 | 2018-11-16 | 福州芝麻智能科技有限公司 | 一种逻辑拓扑运算顺序的控制方法和系统 |
WO2018210007A1 (zh) * | 2017-05-18 | 2018-11-22 | 南京南瑞继保电气有限公司 | 一种虚拟控制器的组态调试器实现方法 |
CN109460911A (zh) * | 2018-10-30 | 2019-03-12 | 云南电网有限责任公司昆明供电局 | 一种电力设备的路径图绘制方法及装置 |
CN113050932A (zh) * | 2021-03-15 | 2021-06-29 | 西安热工研究院有限公司 | 一种存在多级反馈环图形化程序的自动排序改进方法 |
CN114265378A (zh) * | 2021-12-22 | 2022-04-01 | 中国核动力研究设计院 | Dcs逻辑算法图中算法页的元素布局及连线的处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004099908A2 (en) * | 2003-04-28 | 2004-11-18 | Ultimate Risk Solutions, Inc. | Sequential-correlational method of evaluation of probabilistic characteristics of a hierarchical functional structure |
JP2008003641A (ja) * | 2004-09-17 | 2008-01-10 | Catena Corp | ソフトウェア生成方法 |
CN103135975A (zh) * | 2011-11-30 | 2013-06-05 | 福州福大自动化科技有限公司 | 控制策略组态的元件时序自动排列方法及其逻辑链接方法 |
-
2014
- 2014-12-09 CN CN201410746628.6A patent/CN104408263B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004099908A2 (en) * | 2003-04-28 | 2004-11-18 | Ultimate Risk Solutions, Inc. | Sequential-correlational method of evaluation of probabilistic characteristics of a hierarchical functional structure |
JP2008003641A (ja) * | 2004-09-17 | 2008-01-10 | Catena Corp | ソフトウェア生成方法 |
CN103135975A (zh) * | 2011-11-30 | 2013-06-05 | 福州福大自动化科技有限公司 | 控制策略组态的元件时序自动排列方法及其逻辑链接方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018210007A1 (zh) * | 2017-05-18 | 2018-11-22 | 南京南瑞继保电气有限公司 | 一种虚拟控制器的组态调试器实现方法 |
CN108829952A (zh) * | 2018-05-31 | 2018-11-16 | 福州芝麻智能科技有限公司 | 一种逻辑拓扑运算顺序的控制方法和系统 |
CN109460911A (zh) * | 2018-10-30 | 2019-03-12 | 云南电网有限责任公司昆明供电局 | 一种电力设备的路径图绘制方法及装置 |
CN113050932A (zh) * | 2021-03-15 | 2021-06-29 | 西安热工研究院有限公司 | 一种存在多级反馈环图形化程序的自动排序改进方法 |
CN114265378A (zh) * | 2021-12-22 | 2022-04-01 | 中国核动力研究设计院 | Dcs逻辑算法图中算法页的元素布局及连线的处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104408263B (zh) | 2017-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104408263A (zh) | 一种自动处理闭环回路的图形元件分组排序方法 | |
CN103207903B (zh) | 一种可视化图形程序拓扑排序方法 | |
CN103761276B (zh) | 一种树形结构数据比较的展示方法和装置 | |
CN109146163A (zh) | 自动分拣系统分拣距离的优化方法、设备及存储介质 | |
CN105205205B (zh) | 基于网表位置信息最优划分的fpga粗粒度并行布线方法 | |
CN106022568A (zh) | 一种工作流的处理方法和装置 | |
CN108228409A (zh) | 一种基于信号流的算法执行顺序生成方法 | |
CN105095607B (zh) | 一种针对asic设计中网表逻辑冗余的优化方法及系统 | |
CN105740521B (zh) | 油藏数值模拟系统求解过程中的小网格剔除方法和装置 | |
CN105808438A (zh) | 一种基于函数调用路径的测试用例复用方法 | |
CN107315834A (zh) | 一种基于广度优先搜索算法的etl作业流程分析方法 | |
Rezaeipanah et al. | Modeling the scheduling problem in cellular manufacturing systems using genetic algorithm as an efficient meta-heuristic approach | |
CN106407304A (zh) | 一种基于互信息的数据离散化与特征选择集成方法及装置 | |
Lourie | Topology and computation of the generalized transportation problem | |
US6970165B2 (en) | Method and system for optimizing a finite element mesh | |
CN106209614A (zh) | 一种网包分类方法和装置 | |
JPH08106380A (ja) | プログラム作成装置及び方法並びにプログラムを取り扱う制御装置 | |
CN104462726B (zh) | 用于反熔丝的现场可编程门阵列的布线方法 | |
CN110347570A (zh) | 一种ide环境下代码自动生成工具分析方法 | |
CN104572029A (zh) | 一种状态机可拼接性和拼接规则判定方法和装置 | |
CN104461861B (zh) | 基于efsm模型的路径测试数据生成方法 | |
CN106096117A (zh) | 基于流量和可靠性的不确定图关键边评估方法 | |
CN102063333A (zh) | 一种递归结构工作流模型及其调度方法 | |
CN111860885B (zh) | 一种工艺路线异常的识别方法 | |
CN108595208A (zh) | 一种可处理函数顶点的梯形图转换成指令序列的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190321 Address after: 100085 9, four street, Shang Di information industry base, Haidian District, Beijing. Co-patentee after: Beijing Sifang Jibao Engineering Technology Co., Ltd. Patentee after: Beijing Sifang Jibao Automation Co., Ltd. Address before: 100085 9, four street, Shang Di information industry base, Haidian District, Beijing. Patentee before: Beijing Sifang Jibao Automation Co., Ltd. |