一种配置算法执行顺序号的方法及装置的制作方法

文档序号:6604698阅读:192来源:国知局
专利名称:一种配置算法执行顺序号的方法及装置的制作方法
技术领域
本发明设计工业控制领域,尤其涉及一种配置算法执行顺序号的方法及装置。
背景技术
算法执行顺序号智能排序是EDPF NT+系统的控制组态工具中页面配置模块的一项重要功能。算法执行顺序号是算法的属性之一,保存在算法记录中,用于记录某个算法在 SAMA图中第几个被运算。一张SAMA图(控制逻辑图)中算法的算法执行顺序号从1开始顺序分配,每个算法都必须有连续、唯一的算法执行顺序号,当该SAMA图在DPU(分散处理单元)中运行时,将根据算法执行顺序号依次进行算法运算。算法执行顺序号是在页面配置操作中指定;页面配置模块所要做的操作包括1、 给SAMA图分配域号、站号、页号;2、指定SAMA图在控制区中的执行顺序;3、指定SAMA图可被哪些设备操作;4、给算法分配算法名;5、为算法分配算法执行顺序号。目前,算法执行顺序号默认的是以算法被增加到SAMA图上的顺序号,即算法是第几个被增加到SAMA图中的,算法执行顺序号就是多少,但通常这个顺序号并不准确,需要人工指定,即在页面配置属性对话框中,通过在算法排序对话框中上下移动算法来指定算法的执行顺序号。这种模式并不方便,也增加了页面配置操作的耗时。

发明内容
本发明要解决的技术问题是提供一种配置算法执行顺序号的方法及装置,可以在页面配置的过程中自动为算法配置执行顺序号,提高了页面配置操作的效率。为了解决上述问题,本发明提供了一种配置算法执行顺序号的方法,包括a、提取并保存控制逻辑图中算法的基本信息,包括算法的索引、各算法的输入/ 输出个数、输入/输出算法的索引、输入/输出连线是否为跟踪线;b、按照索引遍历算法,找到所有第一、第二算法;按照索引顺序依次为各所述第一算法配置从最小索引开始递增的执行顺序号;按反向索引顺序依次为各所述第二算法配置从最大索引开始递减的执行顺序号;所述第一算法为没有输出,或者输出连线为跟踪线的算法;所述第二算法为没有输入,或者输入连线为跟踪线的算法;C、从最小索引开始按索引遍历前一半算法的每个输出,遍历到各算法的每个输出时都执行一次步骤d ;遍历完成后执行步骤e ;d、如果该输出的输出算法没有执行顺序号,则为该输出算法配置从所述当前最小值加1开始的执行顺序号,配置后将所述当前最小值加1 ;判断是否该输出的输出连线不为跟踪线、且该输出不处于连接循环中,不是则遍历下一个输出;如果是则判断是否该输出算法的执行顺序号大于本算法,且在大于本算法的输出算法中是最小的,是则将该输出算法和本算法的执行顺序号互换后遍历下一个输出,否则直接遍历下一个输出;e、根据所述索引遍历各算法的每个输入,遍历到各算法的每个输入时都执行一次步骤f ;遍历完成后结束;f、当该输入的输入连线不为跟踪线时,如果本算法的执行顺序号大于该输入的输入算法的执行顺序号,并且该输入算法的执行顺序号在所有执行顺序号小于本算法的输入算法中是最大的,则将该输入算法的执行顺序号与本算法的互换;然后遍历下一个输入。进一步地,所述步骤d中,将该输出算法和本算法的执行顺序号互换后,遍历下一个输出前还包括步骤从该输出算法开始,按照执行顺序号由后往前遍历已经分配执行顺序号的算法的各输入,遍历到各算法的每个输入时都执行一次步骤f ;遍历完成后按索引遍历下一个输
出ο进一步地,所述步骤c中,遍历完成后,在执行步骤e前还包括步骤g、如果所述第二算法的个数大于0,则从索引为所述最大执行顺序号减去所述当前最小值的算法开始,按索引遍历该算法及其后各算法的每个输出,遍历到各算法的每个输出时都执行一次步骤d ;遍历完成后执行步骤e。进一步地,所述步骤a包括al、按照画图顺序遍历控制逻辑图内所有算法,在内存中保存各算法的索引、初始值为0的输入/输出个数,暂时为空的输入/输出算法的索引,默认为非跟踪的每个输入/ 输出的跟踪标记;a2、分离出跟踪线和连接了不需要算法执行顺序号的图元,整理出算法执行流程主干图;a3、在所述算法执行流程主干图中,遍历所有连接线;如果连接线两端是普通算法,则对于该连接线的输入端算法,在内存中将该算法的基本信息的输出个数加1,增加该连接线输出端算法的索引,如果连接线是跟踪线,将该输出的跟踪标记置为是跟踪;对于该连接线的输出端算法,在内存中将该算法的基本信息的输入个数加1,增加该连接线输入端算法的索引,如果连接线是跟踪线,将该输入的跟踪标记置为是跟踪。进一步地,所述步骤b包括bl、将所述最小索引作为当前最小值,按所述索引遍历内存中的所有算法,找到第一算法时,将所找到的第一算法的执行顺序号配置为当前最小值,然后将当前最小值加1 后继续遍历,直到遍历完成;b2、将所述最大索引作为当前最大值,按所述索引遍历内存中的所有算法,找到第二算法时,将所找到的第二算法的执行顺序号配置为当前最大值,然后将当前最大值减1 后继续遍历,直到遍历完成。本发明还提供了一种配置算法执行顺序号的装置,包括第一、第二配置模块、第一、第二遍历模块、存储模块、初配置模块;提取模块,用于提取存控制逻辑图中算法的基本信息,包括算法的索引、各算法的输入/输出个数、输入/输出算法的索引、输入/输出连线是否为跟踪线,并保存在所述存储模块中;完成后启动所述初配置模块;所述初配置模块用于按照索引遍历所述存储模块中的算法,找到所有第一、第二算法,按照索引顺序依次为各所述第一算法配置从最小索引开始递增的执行顺序号,按反向索引顺序依次为各所述第二算法配置从最大索引开始递减的执行顺序号,完成后启动所述第一遍历模块;所述第一算法为没有输出,或者输出连线为跟踪线的算法;所述第二算法为没有输入,或者输入连线为跟踪线的算法;所述第一遍历模块用于从最小索引开始按索引遍历所述存储模块中前一半算法的每个输出,遍历到各算法的每个输出时都调用一次所述第一配置模块;遍历完成后启动所述第二遍历模块;所述第一配置模块用于当该输出的输出算法没有执行顺序号时,为该输出算法配置从所述当前最小值加1开始的执行顺序号,配置后将所述当前最小值加1 ;判断是否该输出的输出连线不为跟踪线、且该输出不处于连接循环中,不是则通知调用本模块的模块遍历下一个输出;如果是则判断是否该输出算法的执行顺序号大于本算法,且在大于本算法的输出算法中是最小的,是则将所述存储模块中该输出算法和本算法的执行顺序号互换, 然后通知调用本模块的模块遍历下一个输出,否则直接通知调用本模块的模块遍历下一个输出;所述第二遍历模块用于根据所述索引遍历所述存储模块中各算法的每个输入,遍历到各算法的每个输入时都调用一次所述第二配置模块;所述第二配置模块用于当该输入的输入连线不为跟踪线时,如果本算法的执行顺序号大于该输入的输入算法的执行顺序号,并且该输入算法的执行顺序号在所有执行顺序号小于本算法的输入算法中是最大的,则将所述存储模块中该输入算法的执行顺序号与本算法的互换,通知调用本模块的模块遍历下一个输入。进一步地,所述第一配置模块还用于在将输出算法和本算法的执行顺序号互换后,通知调用本模块的模块遍历下一个输出前,从该输出算法开始,按照执行顺序号由后往前遍历已经分配执行顺序号的算法的各输入,遍历到各算法的每个输入时都调用一次所述第二配置模块;遍历完成后再通知调用本模块的模块遍历下一个输出。进一步地,所述的装置还包括第三遍历模块;所述第一遍历模块还用于在遍历完成后,启动第二遍历模块前,如果所述第二算法的个数大于0,则调用所述第三遍历模块;在收到所述第三遍历模块遍历完成的通知后再启动所述第二遍历模块;所述第三遍历模块用于从索引为所述最大执行顺序号减去所述当前最小值的算法开始,按索引遍历所述存储模块中该算法及其后各算法的每个输出,遍历到各算法的每个输出时都调用一次所述第一配置模块;遍历完成后通知所述第一遍历模块。进一步地,所述提取模块包括初始化单元,用于按照画图顺序遍历控制逻辑图内所有算法,在所述存储模块中保存各算法的索引、初始值为0的输入/输出个数,暂时为空的输入/输出算法的索引,默认为非跟踪的每个输入/输出的跟踪标记;分离单元,用于分离出跟踪线和连接了不需要算法执行顺序号的图元,整理出算法执行流程主干图;更新单元,用于在所述算法执行流程主干图中,遍历所有连接线;如果连接线两端是普通算法,则对于该连接线的输入端算法,在所述存储模块中将该算法的基本信息的输出个数加1,增加该连接线输出端算法的索引,如果连接线是跟踪线,将该输出的跟踪标记置为是跟踪;对于该连接线的输出端算法,在所述存储模块中将该算法的基本信息的输入个数加1,增加该连接线输入端算法的索引,如果连接线是跟踪线,将该输入的跟踪标记置力;^:足艮S宗。进一步地,所述初配置模块包括第一、第二算法配置单元;所述第一算法配置单元用于将所述最小索引作为当前最小值,按所述索引遍历所述存储模块中的所有算法,找到第一算法时,将所找到的第一算法的执行顺序号配置为当前最小值,然后将当前最小值加1后继续遍历,遍历完成后启动第二算法配置单元;所述第二算法配置单元用于将所述最大索引作为当前最大值,按所述索引遍历所述存储模块中的所有算法,找到第二算法时,将所找到的第二算法的执行顺序号配置为当前最大值,然后将当前最大值减1后继续遍历,完成后启动所述第一遍历模块。本发明的技术方案能够方便快捷地自动进行页面配置操作中的算法执行顺序号配置,节约了组态流程的时间,提高了配置速度,还在一定程度上保证了算法执行顺序的准确性。


图1为实施例一中步骤A的具体流程示意图;图2为实施例一中步骤Bl的具体流程示意图;图3为实施例一中步骤B2的具体流程示意图;图4为实施例一中步骤D的具体流程示意图;图5为实施例一中步骤E的具体流程示意图;图6为实施例一中配置算法执行顺序号的装置的示意框图。
具体实施例方式下面将结合附图及实施例对本发明的技术方案进行更详细的说明。需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。实施例一,一种配置算法执行顺序号的方法,包括A、提取并保存SAMA图中普通算法的基本信息,包括算法的索引、各算法的输入和 /或输出信息;所述普通算法为需要算法执行顺序号的算法;所述输入/输出信息包括该算法的输入/输出个数、输入/输出算法的索引、输入/输出连线是否为跟踪线;本实施例中,所述步骤A如图1所示,具体可以包括Al、按照画图顺序遍历SAMA图内所有算法,在内存中保存各算法的基本信息;所述算法的索引可以是表示遍历顺序的整数,比如遍历的第一个算法的索引为1,第二个为2......以此类推;此时,所述算法的输入/输出个数取初始值为0,输入/输出算法的索引
暂时为空,每个输入/输出的跟踪标记默认为非跟踪;A2、分离出跟踪线和连接了不需要算法执行顺序号的图元,整理出整张图的算法执行流程主干图;A3、在所述算法执行流程主干图中,遍历所有连接线,更新各算法的输入和/或输出信息,包括如果连接线两端是普通算法,则对于该连接线的输入端算法,在内存中将该算法的基本信息的输出个数加1,在输出信息中增加该连接线输出端算法在内存中保存的索引, 如果连接线是跟踪线,将该输出的跟踪标记置为是跟踪;对于该连接线的输出端算法,在内存中将该算法的基本信息的输入个数加1,在输入信息中增加该连接线输入端算法在内存中保存的索引,如果连接线是跟踪线,将该输入的跟踪标记置为是跟踪;连线两端有一端是无需分配算法执行顺序的图元的,连线的普通算法端不做处理。实际应用时,不排除用跟踪标记以外的方式来表示连接线是否为跟踪线。B、按照索引遍历所保存的算法,找到所有所述SAMA图中的第一、第二算法;所述第一算法为上游没有连接输出(即输出个数为0),或者上游有一或多个输出,但是该输出连线为跟踪线(跟踪标记为跟踪)的算法;所述第二算法为下游没有连接输入(即输入个数为0),或者下游连接有一或多个输入,但是该输入连线为跟踪线(跟踪标记为跟踪)的算法;按照索引顺序依次为各所述第一算法配置从最小索引开始递增的执行顺序号;按反向索引顺序依次为各所述第二算法配置从最大索引(即所述SAMA图内普通算法个数η 减去最小索引后加1)开始递减的执行顺序号。本实施例中所述最小索引可以但不限于为1,此时所述最大索引为η。本实施例中,所述步骤B具体可以包括Bi、将所述最小索引作为当前最小值,按所述索引遍历内存中的所有算法,找到第一算法时,将所找到的第一算法的执行顺序号配置为当前最小值,然后将当前最小值加1 后继续遍历,直到遍历完成,如图2所示;此时,所述当前最小值即为第一算法的个数;当最小索引为1时,即按照所述索引遍历所有算法,对于找到的所述第一算法, 为第一个配置的执行顺序号为1,为第二个配置的顺序执行号为2,为第三个配置的顺序执行号为3……以此类推;Β2、将所述最大索引作为当前最大值,按所述索引遍历内存中的所有算法,找到第二算法时,将所找到的第二算法的执行顺序号配置为当前最大值,然后将当前最大值减1 后继续遍历,直到遍历完成,如图3所示;此时,所述当前最大值即为最大索引减去第二算法的个数;当最大索引为η时,8卩由后往前遍历(反向遍历)所有找到的所述第二算法,为第一个配置的执行顺序号为η (普通算法个数),为第二个配置的顺序执行号为η-1,为第三个配置的顺序执行号为η-2......以此类推;分配完毕后,实际应用时,步骤Bi、Β2的执行顺序可以互换,也可以并行。C、从最小索引开始按索引遍历内存中前一半算法(比如共有20个算法,则遍历前10个;如果有21个,则遍历前10个或前11个均可)的每个输出,遍历到各算法的每个输出时都执行一次步骤D ;遍历完成后执行步骤F。D、如图4所示,如果该输出的输出算法没有执行顺序号,则为该输出算法配置从所述当前最小值加1开始的执行顺序号,配置后将所述当前最小值加1 ;这样就保证了在后继步骤中,该输出的输出算法必然是已经分配了执行顺序号的;判断是否该输出的输出连线不为跟踪线(跟踪标记不是跟踪)、并且该输出不处于连接循环中,不是则遍历下一个输出;是则继续判断是否该输出算法的执行顺序号大于本算法(即所遍历到的算法), 且在大于本算法的输出算法(仅限于本算法的输出算法)中是最小的,不是则直接遍历下一个输出,是则将该输出算法和本算法的执行顺序号互换,在互换后从该输出算法开始,按照执行顺序号由后往前遍历已经分配执行顺序号的算法的各输入,遍历到各算法的每个输入时都执行一次步骤E ;遍历完成后返回步骤C,遍历下一个输出。本实施例中,如果该输出的输出连线是跟踪线,或该输出处于连接循环中,则遍历下一个输出,也就是遍历本算法的下一个输出,如果本算法的输出都已遍历,则是遍历下一个算法的第一个输出。本实施例中,检查该输出是否处于连接循环中是指如果顺着连线的方向最终连线又回到了该输出本身,则判断该输出处于连接循环中。E、当该输入的输入连线不为跟踪线(跟踪标记不是跟踪)时,如果本算法(即所遍历到的算法)的执行顺序号大于该输入的输入算法的执行顺序号,并且该输入算法的执行顺序号在所有执行顺序号小于本算法的输入算法(仅限于本算法的输入算法)中是最大的,则将该输入算法的执行顺序号与本算法的互换;然后遍历下一个输入,也就是遍历本算法的下一个输入,如果本算法的输入都已遍历,则是遍历下一个算法(如果是在步骤D中执行该步骤,则下一个算法是执行顺序号为本算法减1的算法;如果是在步骤G中执行该步骤,则下一个算法是索引为本算法加1的下一个算法)的第一个输入,如图5所示。F、如果所述第二算法的个数大于0,则从索引为所述最大执行顺序号减去所述当前最小值的算法开始,按索引遍历该算法及其后各算法的每个输出,遍历到各算法的每个输出时都执行一次步骤D ;遍历完成后执行步骤G。这一步骤针对图内存在分散的连接单元,能防止漏排。如果没有第二算法,则不进行步骤F,直接进行步骤G。G、根据所述索引遍历内存中各算法的每个输入,遍历到各算法的每个输入时都执行一次步骤E ;遍历完成后结束。实施例二,一种配置算法执行顺序号的装置,如图6所示,包括第一、第二配置模块、第一、第二遍历模块、存储模块、初配置模块;提取模块,用于提取控制逻辑图中算法的基本信息,包括算法的索引、各算法的输入/输出个数、输入/输出算法的索引、输入/输出连线是否为跟踪线,并保存在所述存储模块中;完成后启动所述初配置模块;所述初配置模块用于按照索引遍历所述存储模块中的算法,找到所有第一、第二算法,按照索引顺序依次为各所述第一算法配置从最小索引开始递增的执行顺序号,按反向索引顺序依次为各所述第二算法配置从最大索引开始递减的执行顺序号,完成后启动所述第一遍历模块;所述第一算法为没有输出,或者输出连线为跟踪线的算法;所述第二算法为没有输入,或者输入连线为跟踪线的算法;所述第一遍历模块用于从最小索引开始按索引遍历所述存储模块中前一半算法的每个输出,遍历到各算法的每个输出时都调用一次所述第一配置模块;遍历完成后启动所述第二遍历模块;所述第一配置模块用于当该输出的输出算法没有执行顺序号时,为该输出算法配置从所述当前最小值加1开始的执行顺序号,配置后将所述当前最小值加1 ;判断是否该输出的输出连线不为跟踪线、且该输出不处于连接循环中,不是则通知调用本模块的模块遍历下一个输出;是则继续判断是否该输出算法的执行顺序号大于本算法,且在大于本算法的输出算法中是最小的,不是则通知调用本模块的模块遍历下一个输出,是则将所述存储模块中该输出算法和本算法的执行顺序号互换,在互换后通知调用本模块的模块遍历下一个输出;还可以用于在将输出算法和本算法的执行顺序号互换后,通知调用本模块的模块遍历下一个输出前,从该输出算法开始,按照执行顺序号由后往前遍历已经分配执行顺序号的算法的各输入,遍历到各算法的每个输入时都调用一次所述第二配置模块,遍历完成后再通知调用本模块的模块遍历下一个输出。所述第二遍历模块用于根据所述索引遍历所述存储模块中各算法的每个输入,遍历到各算法的每个输入时都调用一次所述第二配置模块;遍历完成则配置结束;所述第二配置模块用于当该输入的输入连线不为跟踪线时,如果本算法的执行顺序号大于该输入的输入算法的执行顺序号,并且该输入算法的执行顺序号在所有执行顺序号小于本算法的输入算法中是最大的,则将所述存储模块中该输入算法的执行顺序号与本算法的互换;通知调用本模块的模块遍历下一个输入。本实施例中,所述的装置还可以包括第三遍历模块;所述第一遍历模块还用于在遍历完成后,启动第二遍历模块前,如果所述第二算法的个数大于0,则调用所述第三遍历模块;在收到所述第三遍历模块遍历完成的通知后再启动所述第二遍历模块;所述第三遍历模块用于从索引为所述最大执行顺序号减去所述当前最小值的算法开始,按索引遍历所述存储模块中该算法及其后各算法的每个输出,遍历到各算法的每个输出时都调用一次所述第一配置模块;遍历完成后通知所述第一遍历模块。本实施例中,所述提取模块具体可以包括初始化单元,用于按照画图顺序遍历控制逻辑图内所有算法,在所述存储模块中保存各算法的索引、初始值为0的输入/输出个数,暂时为空的输入/输出算法的索引,默认为非跟踪的每个输入/输出的跟踪标记;分离单元,用于分离出跟踪线和连接了不需要算法执行顺序号的图元,整理出算法执行流程主干图;更新单元,用于在所述算法执行流程主干图中,遍历所有连接线;如果连接线两端是普通算法,则对于该连接线的输入端算法,在所述存储模块中将该算法的基本信息的输出个数加1,增加该连接线输出端算法的索引,如果连接线是跟踪线,将该输出的跟踪标记置为是跟踪;对于该连接线的输出端算法,在所述存储模块中将该算法的基本信息的输入个数加1,增加该连接线输入端算法的索引,如果连接线是跟踪线,将该输入的跟踪标记置为是跟踪。本实施例中,所述初配置模块具体可以包括第一、第二算法配置单元;所述第一算法配置单元用于将所述最小索引作为当前最小值,按所述索引遍历所述存储模块中的所有算法,找到第一算法时,将所找到的第一算法的执行顺序号配置为当前最小值,然后将当前最小值加1后继续遍历,遍历完成启动所述第二算法配置单元;所述第二算法配置单元用于将所述最大索引作为当前最大值,按所述索引遍历所述存储模块中的所有算法,找到第二算法时,将所找到的第二算法的执行顺序号配置为当前最大值,然后将当前最大值减1后继续遍历,遍历完成启动所述第一遍历模块。实际应用时,也可以先第二算法配置单元工作,完成后启动第一算法配置单元,第一算法配置单元完成后启动所述第一遍历模块;或是第一、第二算法配置单元并行工作,完成后启动所述第一遍历模块。其它实现细节可以同实施例一所述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
权利要求
1.一种配置算法执行顺序号的方法,包括a、提取并保存控制逻辑图中算法的基本信息,包括算法的索引、各算法的输入/输出个数、输入/输出算法的索引、输入/输出连线是否为跟踪线;b、按照索引遍历算法,找到所有第一、第二算法;按照索引顺序依次为各所述第一算法配置从最小索引开始递增的执行顺序号;按反向索引顺序依次为各所述第二算法配置从最大索引开始递减的执行顺序号;所述第一算法为没有输出,或者输出连线为跟踪线的算法;所述第二算法为没有输入, 或者输入连线为跟踪线的算法;C、从最小索引开始按索引遍历前一半算法的每个输出,遍历到各算法的每个输出时都执行一次步骤d ;遍历完成后执行步骤e ;d、如果该输出的输出算法没有执行顺序号,则为该输出算法配置从所述当前最小值加 1开始的执行顺序号,配置后将所述当前最小值加1 ;判断是否该输出的输出连线不为跟踪线、且该输出不处于连接循环中,不是则遍历下一个输出;如果是则判断是否该输出算法的执行顺序号大于本算法,且在大于本算法的输出算法中是最小的,是则将该输出算法和本算法的执行顺序号互换后遍历下一个输出,否则直接遍历下一个输出;e、根据所述索引遍历各算法的每个输入,遍历到各算法的每个输入时都执行一次步骤 f ;遍历完成后结束;f、当该输入的输入连线不为跟踪线时,如果本算法的执行顺序号大于该输入的输入算法的执行顺序号,并且该输入算法的执行顺序号在所有执行顺序号小于本算法的输入算法中是最大的,则将该输入算法的执行顺序号与本算法的互换;然后遍历下一个输入。
2.如权利要求1所述的方法,其特征在于,所述步骤d中,将该输出算法和本算法的执行顺序号互换后,遍历下一个输出前还包括步骤从该输出算法开始,按照执行顺序号由后往前遍历已经分配执行顺序号的算法的各输入,遍历到各算法的每个输入时都执行一次步骤f ;遍历完成后按索引遍历下一个输出。
3.如权利要求1所述的方法,其特征在于,所述步骤c中,遍历完成后,在执行步骤e前还包括步骤g、如果所述第二算法的个数大于0,则从索引为所述最大执行顺序号减去所述当前最小值的算法开始,按索引遍历该算法及其后各算法的每个输出,遍历到各算法的每个输出时都执行一次步骤d ;遍历完成后执行步骤e。
4.如权利要求1到3中任一项所述的方法,其特征在于,所述步骤a包括al、按照画图顺序遍历控制逻辑图内所有算法,在内存中保存各算法的索引、初始值为 0的输入/输出个数,暂时为空的输入/输出算法的索引,默认为非跟踪的每个输入/输出的跟踪标记;a2、分离出跟踪线和连接了不需要算法执行顺序号的图元,整理出算法执行流程主干图;a3、在所述算法执行流程主干图中,遍历所有连接线;如果连接线两端是普通算法,则对于该连接线的输入端算法,在内存中将该算法的基本信息的输出个数加1,增加该连接线输出端算法的索引,如果连接线是跟踪线,将该输出的跟踪标记置为是跟踪;对于该连接线的输出端算法,在内存中将该算法的基本信息的输入个数加1,增加该连接线输入端算法的索引,如果连接线是跟踪线,将该输入的跟踪标记1 ; 足艮S宗。
5.如权利要求1到3中任一项所述的方法,其特征在于,所述步骤b包括bl、将所述最小索引作为当前最小值,按所述索引遍历内存中的所有算法,找到第一算法时,将所找到的第一算法的执行顺序号配置为当前最小值,然后将当前最小值加1后继续遍历,直到遍历完成;b2、将所述最大索引作为当前最大值,按所述索引遍历内存中的所有算法,找到第二算法时,将所找到的第二算法的执行顺序号配置为当前最大值,然后将当前最大值减1后继续遍历,直到遍历完成。
6.一种配置算法执行顺序号的装置,其特征在于,包括第一、第二配置模块、第一、第二遍历模块、存储模块、初配置模块;提取模块,用于提取存控制逻辑图中算法的基本信息,包括算法的索引、各算法的输入 /输出个数、输入/输出算法的索引、输入/输出连线是否为跟踪线,并保存在所述存储模块中;完成后启动所述初配置模块;所述初配置模块用于按照索引遍历所述存储模块中的算法,找到所有第一、第二算法, 按照索引顺序依次为各所述第一算法配置从最小索引开始递增的执行顺序号,按反向索引顺序依次为各所述第二算法配置从最大索引开始递减的执行顺序号,完成后启动所述第一遍历模块;所述第一算法为没有输出,或者输出连线为跟踪线的算法;所述第二算法为没有输入,或者输入连线为跟踪线的算法;所述第一遍历模块用于从最小索引开始按索引遍历所述存储模块中前一半算法的每个输出,遍历到各算法的每个输出时都调用一次所述第一配置模块;遍历完成后启动所述第二遍历模块;所述第一配置模块用于当该输出的输出算法没有执行顺序号时,为该输出算法配置从所述当前最小值加1开始的执行顺序号,配置后将所述当前最小值加1 ;判断是否该输出的输出连线不为跟踪线、且该输出不处于连接循环中,不是则通知调用本模块的模块遍历下一个输出;如果是则判断是否该输出算法的执行顺序号大于本算法,且在大于本算法的输出算法中是最小的,是则将所述存储模块中该输出算法和本算法的执行顺序号互换,然后通知调用本模块的模块遍历下一个输出,否则直接通知调用本模块的模块遍历下一个输出;所述第二遍历模块用于根据所述索引遍历所述存储模块中各算法的每个输入,遍历到各算法的每个输入时都调用一次所述第二配置模块;所述第二配置模块用于当该输入的输入连线不为跟踪线时,如果本算法的执行顺序号大于该输入的输入算法的执行顺序号,并且该输入算法的执行顺序号在所有执行顺序号小于本算法的输入算法中是最大的,则将所述存储模块中该输入算法的执行顺序号与本算法的互换,通知调用本模块的模块遍历下一个输入。
7.如权利要求6所述的装置,其特征在于所述第一配置模块还用于在将输出算法和本算法的执行顺序号互换后,通知调用本模块的模块遍历下一个输出前,从该输出算法开始,按照执行顺序号由后往前遍历已经分配执行顺序号的算法的各输入,遍历到各算法的每个输入时都调用一次所述第二配置模块; 遍历完成后再通知调用本模块的模块遍历下一个输出。
8.如权利要求6所述的装置,其特征在于,还包括第三遍历模块;所述第一遍历模块还用于在遍历完成后,启动第二遍历模块前,如果所述第二算法的个数大于0,则调用所述第三遍历模块;在收到所述第三遍历模块遍历完成的通知后再启动所述第二遍历模块;所述第三遍历模块用于从索引为所述最大执行顺序号减去所述当前最小值的算法开始,按索引遍历所述存储模块中该算法及其后各算法的每个输出,遍历到各算法的每个输出时都调用一次所述第一配置模块;遍历完成后通知所述第一遍历模块。
9.如权利要求6到8中任一项所述的装置,其特征在于,所述提取模块包括初始化单元,用于按照画图顺序遍历控制逻辑图内所有算法,在所述存储模块中保存各算法的索引、初始值为0的输入/输出个数,暂时为空的输入/输出算法的索引,默认为非跟踪的每个输入/输出的跟踪标记;分离单元,用于分离出跟踪线和连接了不需要算法执行顺序号的图元,整理出算法执行流程主干图;更新单元,用于在所述算法执行流程主干图中,遍历所有连接线;如果连接线两端是普通算法,则对于该连接线的输入端算法,在所述存储模块中将该算法的基本信息的输出个数加1,增加该连接线输出端算法的索引,如果连接线是跟踪线,将该输出的跟踪标记置为是跟踪;对于该连接线的输出端算法,在所述存储模块中将该算法的基本信息的输入个数加1,增加该连接线输入端算法的索引,如果连接线是跟踪线,将该输入的跟踪标记置为是足艮S宗。
10.如权利要求6到8中任一项所述的装置,其特征在于,所述初配置模块包括第一、第二算法配置单元;所述第一算法配置单元用于将所述最小索引作为当前最小值,按所述索引遍历所述存储模块中的所有算法,找到第一算法时,将所找到的第一算法的执行顺序号配置为当前最小值,然后将当前最小值加1后继续遍历,遍历完成后启动第二算法配置单元;所述第二算法配置单元用于将所述最大索引作为当前最大值,按所述索引遍历所述存储模块中的所有算法,找到第二算法时,将所找到的第二算法的执行顺序号配置为当前最大值,然后将当前最大值减1后继续遍历,完成后启动所述第一遍历模块。
全文摘要
一种配置算法执行顺序号的方法及装置;方法包括a、提取并保存基本信息;b、找到所有第一、第二算法,配置执行顺序号;c、遍历前一半算法的每个输出并执行d,完成后执行e;d、对于输出连线不为跟踪线且不处于连接循环中的输出,如该输出算法的执行顺序号大于本算法,且在大于本算法的输出算法中最小,是则将该输出算法和本算法的执行顺序号互换;e、遍历各算法的每个输入并执行f;完成后结束;f、对于输入连线不为跟踪线的输入,如果本算法的执行顺序号大于该输入的输入算法,并且该输入算法的执行顺序号在所有执行顺序号小于本算法的输入算法中最大,则将该输入算法的执行顺序号与本算法的互换。
文档编号G06F17/50GK102298653SQ20101020973
公开日2011年12月28日 申请日期2010年6月25日 优先权日2010年6月25日
发明者吕大军, 周海东, 夏明 , 孙瑜, 张智, 彭琪, 李文, 王中胜, 王朝辉, 王疆, 黄焕袍 申请人:北京国电智深控制技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1