專利名稱:一種配置算法執(zhí)行順序號的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明設(shè)計(jì)工業(yè)控制領(lǐng)域,尤其涉及一種配置算法執(zhí)行順序號的方法及裝置。
背景技術(shù):
算法執(zhí)行順序號智能排序是EDPF NT+系統(tǒng)的控制組態(tài)工具中頁面配置模塊的一項(xiàng)重要功能。算法執(zhí)行順序號是算法的屬性之一,保存在算法記錄中,用于記錄某個(gè)算法在 SAMA圖中第幾個(gè)被運(yùn)算。一張SAMA圖(控制邏輯圖)中算法的算法執(zhí)行順序號從1開始順序分配,每個(gè)算法都必須有連續(xù)、唯一的算法執(zhí)行順序號,當(dāng)該SAMA圖在DPU(分散處理單元)中運(yùn)行時(shí),將根據(jù)算法執(zhí)行順序號依次進(jìn)行算法運(yùn)算。算法執(zhí)行順序號是在頁面配置操作中指定;頁面配置模塊所要做的操作包括1、 給SAMA圖分配域號、站號、頁號;2、指定SAMA圖在控制區(qū)中的執(zhí)行順序;3、指定SAMA圖可被哪些設(shè)備操作;4、給算法分配算法名;5、為算法分配算法執(zhí)行順序號。目前,算法執(zhí)行順序號默認(rèn)的是以算法被增加到SAMA圖上的順序號,即算法是第幾個(gè)被增加到SAMA圖中的,算法執(zhí)行順序號就是多少,但通常這個(gè)順序號并不準(zhǔn)確,需要人工指定,即在頁面配置屬性對話框中,通過在算法排序?qū)υ捒蛑猩舷乱苿?dòng)算法來指定算法的執(zhí)行順序號。這種模式并不方便,也增加了頁面配置操作的耗時(shí)。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種配置算法執(zhí)行順序號的方法及裝置,可以在頁面配置的過程中自動(dòng)為算法配置執(zhí)行順序號,提高了頁面配置操作的效率。為了解決上述問題,本發(fā)明提供了一種配置算法執(zhí)行順序號的方法,包括a、提取并保存控制邏輯圖中算法的基本信息,包括算法的索引、各算法的輸入/ 輸出個(gè)數(shù)、輸入/輸出算法的索引、輸入/輸出連線是否為跟蹤線;b、按照索引遍歷算法,找到所有第一、第二算法;按照索引順序依次為各所述第一算法配置從最小索引開始遞增的執(zhí)行順序號;按反向索引順序依次為各所述第二算法配置從最大索引開始遞減的執(zhí)行順序號;所述第一算法為沒有輸出,或者輸出連線為跟蹤線的算法;所述第二算法為沒有輸入,或者輸入連線為跟蹤線的算法;C、從最小索引開始按索引遍歷前一半算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都執(zhí)行一次步驟d ;遍歷完成后執(zhí)行步驟e ;d、如果該輸出的輸出算法沒有執(zhí)行順序號,則為該輸出算法配置從所述當(dāng)前最小值加1開始的執(zhí)行順序號,配置后將所述當(dāng)前最小值加1 ;判斷是否該輸出的輸出連線不為跟蹤線、且該輸出不處于連接循環(huán)中,不是則遍歷下一個(gè)輸出;如果是則判斷是否該輸出算法的執(zhí)行順序號大于本算法,且在大于本算法的輸出算法中是最小的,是則將該輸出算法和本算法的執(zhí)行順序號互換后遍歷下一個(gè)輸出,否則直接遍歷下一個(gè)輸出;e、根據(jù)所述索引遍歷各算法的每個(gè)輸入,遍歷到各算法的每個(gè)輸入時(shí)都執(zhí)行一次步驟f ;遍歷完成后結(jié)束;f、當(dāng)該輸入的輸入連線不為跟蹤線時(shí),如果本算法的執(zhí)行順序號大于該輸入的輸入算法的執(zhí)行順序號,并且該輸入算法的執(zhí)行順序號在所有執(zhí)行順序號小于本算法的輸入算法中是最大的,則將該輸入算法的執(zhí)行順序號與本算法的互換;然后遍歷下一個(gè)輸入。進(jìn)一步地,所述步驟d中,將該輸出算法和本算法的執(zhí)行順序號互換后,遍歷下一個(gè)輸出前還包括步驟從該輸出算法開始,按照執(zhí)行順序號由后往前遍歷已經(jīng)分配執(zhí)行順序號的算法的各輸入,遍歷到各算法的每個(gè)輸入時(shí)都執(zhí)行一次步驟f ;遍歷完成后按索引遍歷下一個(gè)輸
出ο進(jìn)一步地,所述步驟c中,遍歷完成后,在執(zhí)行步驟e前還包括步驟g、如果所述第二算法的個(gè)數(shù)大于0,則從索引為所述最大執(zhí)行順序號減去所述當(dāng)前最小值的算法開始,按索引遍歷該算法及其后各算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都執(zhí)行一次步驟d ;遍歷完成后執(zhí)行步驟e。進(jìn)一步地,所述步驟a包括al、按照畫圖順序遍歷控制邏輯圖內(nèi)所有算法,在內(nèi)存中保存各算法的索引、初始值為0的輸入/輸出個(gè)數(shù),暫時(shí)為空的輸入/輸出算法的索引,默認(rèn)為非跟蹤的每個(gè)輸入/ 輸出的跟蹤標(biāo)記;a2、分離出跟蹤線和連接了不需要算法執(zhí)行順序號的圖元,整理出算法執(zhí)行流程主干圖;a3、在所述算法執(zhí)行流程主干圖中,遍歷所有連接線;如果連接線兩端是普通算法,則對于該連接線的輸入端算法,在內(nèi)存中將該算法的基本信息的輸出個(gè)數(shù)加1,增加該連接線輸出端算法的索引,如果連接線是跟蹤線,將該輸出的跟蹤標(biāo)記置為是跟蹤;對于該連接線的輸出端算法,在內(nèi)存中將該算法的基本信息的輸入個(gè)數(shù)加1,增加該連接線輸入端算法的索引,如果連接線是跟蹤線,將該輸入的跟蹤標(biāo)記置為是跟蹤。進(jìn)一步地,所述步驟b包括bl、將所述最小索引作為當(dāng)前最小值,按所述索引遍歷內(nèi)存中的所有算法,找到第一算法時(shí),將所找到的第一算法的執(zhí)行順序號配置為當(dāng)前最小值,然后將當(dāng)前最小值加1 后繼續(xù)遍歷,直到遍歷完成;b2、將所述最大索引作為當(dāng)前最大值,按所述索引遍歷內(nèi)存中的所有算法,找到第二算法時(shí),將所找到的第二算法的執(zhí)行順序號配置為當(dāng)前最大值,然后將當(dāng)前最大值減1 后繼續(xù)遍歷,直到遍歷完成。本發(fā)明還提供了一種配置算法執(zhí)行順序號的裝置,包括第一、第二配置模塊、第一、第二遍歷模塊、存儲模塊、初配置模塊;提取模塊,用于提取存控制邏輯圖中算法的基本信息,包括算法的索引、各算法的輸入/輸出個(gè)數(shù)、輸入/輸出算法的索引、輸入/輸出連線是否為跟蹤線,并保存在所述存儲模塊中;完成后啟動(dòng)所述初配置模塊;所述初配置模塊用于按照索引遍歷所述存儲模塊中的算法,找到所有第一、第二算法,按照索引順序依次為各所述第一算法配置從最小索引開始遞增的執(zhí)行順序號,按反向索引順序依次為各所述第二算法配置從最大索引開始遞減的執(zhí)行順序號,完成后啟動(dòng)所述第一遍歷模塊;所述第一算法為沒有輸出,或者輸出連線為跟蹤線的算法;所述第二算法為沒有輸入,或者輸入連線為跟蹤線的算法;所述第一遍歷模塊用于從最小索引開始按索引遍歷所述存儲模塊中前一半算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都調(diào)用一次所述第一配置模塊;遍歷完成后啟動(dòng)所述第二遍歷模塊;所述第一配置模塊用于當(dāng)該輸出的輸出算法沒有執(zhí)行順序號時(shí),為該輸出算法配置從所述當(dāng)前最小值加1開始的執(zhí)行順序號,配置后將所述當(dāng)前最小值加1 ;判斷是否該輸出的輸出連線不為跟蹤線、且該輸出不處于連接循環(huán)中,不是則通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出;如果是則判斷是否該輸出算法的執(zhí)行順序號大于本算法,且在大于本算法的輸出算法中是最小的,是則將所述存儲模塊中該輸出算法和本算法的執(zhí)行順序號互換, 然后通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出,否則直接通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出;所述第二遍歷模塊用于根據(jù)所述索引遍歷所述存儲模塊中各算法的每個(gè)輸入,遍歷到各算法的每個(gè)輸入時(shí)都調(diào)用一次所述第二配置模塊;所述第二配置模塊用于當(dāng)該輸入的輸入連線不為跟蹤線時(shí),如果本算法的執(zhí)行順序號大于該輸入的輸入算法的執(zhí)行順序號,并且該輸入算法的執(zhí)行順序號在所有執(zhí)行順序號小于本算法的輸入算法中是最大的,則將所述存儲模塊中該輸入算法的執(zhí)行順序號與本算法的互換,通知調(diào)用本模塊的模塊遍歷下一個(gè)輸入。進(jìn)一步地,所述第一配置模塊還用于在將輸出算法和本算法的執(zhí)行順序號互換后,通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出前,從該輸出算法開始,按照執(zhí)行順序號由后往前遍歷已經(jīng)分配執(zhí)行順序號的算法的各輸入,遍歷到各算法的每個(gè)輸入時(shí)都調(diào)用一次所述第二配置模塊;遍歷完成后再通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出。進(jìn)一步地,所述的裝置還包括第三遍歷模塊;所述第一遍歷模塊還用于在遍歷完成后,啟動(dòng)第二遍歷模塊前,如果所述第二算法的個(gè)數(shù)大于0,則調(diào)用所述第三遍歷模塊;在收到所述第三遍歷模塊遍歷完成的通知后再啟動(dòng)所述第二遍歷模塊;所述第三遍歷模塊用于從索引為所述最大執(zhí)行順序號減去所述當(dāng)前最小值的算法開始,按索引遍歷所述存儲模塊中該算法及其后各算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都調(diào)用一次所述第一配置模塊;遍歷完成后通知所述第一遍歷模塊。進(jìn)一步地,所述提取模塊包括初始化單元,用于按照畫圖順序遍歷控制邏輯圖內(nèi)所有算法,在所述存儲模塊中保存各算法的索引、初始值為0的輸入/輸出個(gè)數(shù),暫時(shí)為空的輸入/輸出算法的索引,默認(rèn)為非跟蹤的每個(gè)輸入/輸出的跟蹤標(biāo)記;分離單元,用于分離出跟蹤線和連接了不需要算法執(zhí)行順序號的圖元,整理出算法執(zhí)行流程主干圖;更新單元,用于在所述算法執(zhí)行流程主干圖中,遍歷所有連接線;如果連接線兩端是普通算法,則對于該連接線的輸入端算法,在所述存儲模塊中將該算法的基本信息的輸出個(gè)數(shù)加1,增加該連接線輸出端算法的索引,如果連接線是跟蹤線,將該輸出的跟蹤標(biāo)記置為是跟蹤;對于該連接線的輸出端算法,在所述存儲模塊中將該算法的基本信息的輸入個(gè)數(shù)加1,增加該連接線輸入端算法的索引,如果連接線是跟蹤線,將該輸入的跟蹤標(biāo)記置力;^:足艮S宗。進(jìn)一步地,所述初配置模塊包括第一、第二算法配置單元;所述第一算法配置單元用于將所述最小索引作為當(dāng)前最小值,按所述索引遍歷所述存儲模塊中的所有算法,找到第一算法時(shí),將所找到的第一算法的執(zhí)行順序號配置為當(dāng)前最小值,然后將當(dāng)前最小值加1后繼續(xù)遍歷,遍歷完成后啟動(dòng)第二算法配置單元;所述第二算法配置單元用于將所述最大索引作為當(dāng)前最大值,按所述索引遍歷所述存儲模塊中的所有算法,找到第二算法時(shí),將所找到的第二算法的執(zhí)行順序號配置為當(dāng)前最大值,然后將當(dāng)前最大值減1后繼續(xù)遍歷,完成后啟動(dòng)所述第一遍歷模塊。本發(fā)明的技術(shù)方案能夠方便快捷地自動(dòng)進(jìn)行頁面配置操作中的算法執(zhí)行順序號配置,節(jié)約了組態(tài)流程的時(shí)間,提高了配置速度,還在一定程度上保證了算法執(zhí)行順序的準(zhǔn)確性。
圖1為實(shí)施例一中步驟A的具體流程示意圖;圖2為實(shí)施例一中步驟Bl的具體流程示意圖;圖3為實(shí)施例一中步驟B2的具體流程示意圖;圖4為實(shí)施例一中步驟D的具體流程示意圖;圖5為實(shí)施例一中步驟E的具體流程示意圖;圖6為實(shí)施例一中配置算法執(zhí)行順序號的裝置的示意框圖。
具體實(shí)施例方式下面將結(jié)合附圖及實(shí)施例對本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說明。需要說明的是,如果不沖突,本發(fā)明實(shí)施例以及實(shí)施例中的各個(gè)特征可以相互結(jié)合,均在本發(fā)明的保護(hù)范圍之內(nèi)。另外,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。實(shí)施例一,一種配置算法執(zhí)行順序號的方法,包括A、提取并保存SAMA圖中普通算法的基本信息,包括算法的索引、各算法的輸入和 /或輸出信息;所述普通算法為需要算法執(zhí)行順序號的算法;所述輸入/輸出信息包括該算法的輸入/輸出個(gè)數(shù)、輸入/輸出算法的索引、輸入/輸出連線是否為跟蹤線;本實(shí)施例中,所述步驟A如圖1所示,具體可以包括Al、按照畫圖順序遍歷SAMA圖內(nèi)所有算法,在內(nèi)存中保存各算法的基本信息;所述算法的索引可以是表示遍歷順序的整數(shù),比如遍歷的第一個(gè)算法的索引為1,第二個(gè)為2......以此類推;此時(shí),所述算法的輸入/輸出個(gè)數(shù)取初始值為0,輸入/輸出算法的索引
暫時(shí)為空,每個(gè)輸入/輸出的跟蹤標(biāo)記默認(rèn)為非跟蹤;A2、分離出跟蹤線和連接了不需要算法執(zhí)行順序號的圖元,整理出整張圖的算法執(zhí)行流程主干圖;A3、在所述算法執(zhí)行流程主干圖中,遍歷所有連接線,更新各算法的輸入和/或輸出信息,包括如果連接線兩端是普通算法,則對于該連接線的輸入端算法,在內(nèi)存中將該算法的基本信息的輸出個(gè)數(shù)加1,在輸出信息中增加該連接線輸出端算法在內(nèi)存中保存的索引, 如果連接線是跟蹤線,將該輸出的跟蹤標(biāo)記置為是跟蹤;對于該連接線的輸出端算法,在內(nèi)存中將該算法的基本信息的輸入個(gè)數(shù)加1,在輸入信息中增加該連接線輸入端算法在內(nèi)存中保存的索引,如果連接線是跟蹤線,將該輸入的跟蹤標(biāo)記置為是跟蹤;連線兩端有一端是無需分配算法執(zhí)行順序的圖元的,連線的普通算法端不做處理。實(shí)際應(yīng)用時(shí),不排除用跟蹤標(biāo)記以外的方式來表示連接線是否為跟蹤線。B、按照索引遍歷所保存的算法,找到所有所述SAMA圖中的第一、第二算法;所述第一算法為上游沒有連接輸出(即輸出個(gè)數(shù)為0),或者上游有一或多個(gè)輸出,但是該輸出連線為跟蹤線(跟蹤標(biāo)記為跟蹤)的算法;所述第二算法為下游沒有連接輸入(即輸入個(gè)數(shù)為0),或者下游連接有一或多個(gè)輸入,但是該輸入連線為跟蹤線(跟蹤標(biāo)記為跟蹤)的算法;按照索引順序依次為各所述第一算法配置從最小索引開始遞增的執(zhí)行順序號;按反向索引順序依次為各所述第二算法配置從最大索引(即所述SAMA圖內(nèi)普通算法個(gè)數(shù)η 減去最小索引后加1)開始遞減的執(zhí)行順序號。本實(shí)施例中所述最小索引可以但不限于為1,此時(shí)所述最大索引為η。本實(shí)施例中,所述步驟B具體可以包括Bi、將所述最小索引作為當(dāng)前最小值,按所述索引遍歷內(nèi)存中的所有算法,找到第一算法時(shí),將所找到的第一算法的執(zhí)行順序號配置為當(dāng)前最小值,然后將當(dāng)前最小值加1 后繼續(xù)遍歷,直到遍歷完成,如圖2所示;此時(shí),所述當(dāng)前最小值即為第一算法的個(gè)數(shù);當(dāng)最小索引為1時(shí),即按照所述索引遍歷所有算法,對于找到的所述第一算法, 為第一個(gè)配置的執(zhí)行順序號為1,為第二個(gè)配置的順序執(zhí)行號為2,為第三個(gè)配置的順序執(zhí)行號為3……以此類推;Β2、將所述最大索引作為當(dāng)前最大值,按所述索引遍歷內(nèi)存中的所有算法,找到第二算法時(shí),將所找到的第二算法的執(zhí)行順序號配置為當(dāng)前最大值,然后將當(dāng)前最大值減1 后繼續(xù)遍歷,直到遍歷完成,如圖3所示;此時(shí),所述當(dāng)前最大值即為最大索引減去第二算法的個(gè)數(shù);當(dāng)最大索引為η時(shí),8卩由后往前遍歷(反向遍歷)所有找到的所述第二算法,為第一個(gè)配置的執(zhí)行順序號為η (普通算法個(gè)數(shù)),為第二個(gè)配置的順序執(zhí)行號為η-1,為第三個(gè)配置的順序執(zhí)行號為η-2......以此類推;分配完畢后,實(shí)際應(yīng)用時(shí),步驟Bi、Β2的執(zhí)行順序可以互換,也可以并行。C、從最小索引開始按索引遍歷內(nèi)存中前一半算法(比如共有20個(gè)算法,則遍歷前10個(gè);如果有21個(gè),則遍歷前10個(gè)或前11個(gè)均可)的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都執(zhí)行一次步驟D ;遍歷完成后執(zhí)行步驟F。D、如圖4所示,如果該輸出的輸出算法沒有執(zhí)行順序號,則為該輸出算法配置從所述當(dāng)前最小值加1開始的執(zhí)行順序號,配置后將所述當(dāng)前最小值加1 ;這樣就保證了在后繼步驟中,該輸出的輸出算法必然是已經(jīng)分配了執(zhí)行順序號的;判斷是否該輸出的輸出連線不為跟蹤線(跟蹤標(biāo)記不是跟蹤)、并且該輸出不處于連接循環(huán)中,不是則遍歷下一個(gè)輸出;是則繼續(xù)判斷是否該輸出算法的執(zhí)行順序號大于本算法(即所遍歷到的算法), 且在大于本算法的輸出算法(僅限于本算法的輸出算法)中是最小的,不是則直接遍歷下一個(gè)輸出,是則將該輸出算法和本算法的執(zhí)行順序號互換,在互換后從該輸出算法開始,按照執(zhí)行順序號由后往前遍歷已經(jīng)分配執(zhí)行順序號的算法的各輸入,遍歷到各算法的每個(gè)輸入時(shí)都執(zhí)行一次步驟E ;遍歷完成后返回步驟C,遍歷下一個(gè)輸出。本實(shí)施例中,如果該輸出的輸出連線是跟蹤線,或該輸出處于連接循環(huán)中,則遍歷下一個(gè)輸出,也就是遍歷本算法的下一個(gè)輸出,如果本算法的輸出都已遍歷,則是遍歷下一個(gè)算法的第一個(gè)輸出。本實(shí)施例中,檢查該輸出是否處于連接循環(huán)中是指如果順著連線的方向最終連線又回到了該輸出本身,則判斷該輸出處于連接循環(huán)中。E、當(dāng)該輸入的輸入連線不為跟蹤線(跟蹤標(biāo)記不是跟蹤)時(shí),如果本算法(即所遍歷到的算法)的執(zhí)行順序號大于該輸入的輸入算法的執(zhí)行順序號,并且該輸入算法的執(zhí)行順序號在所有執(zhí)行順序號小于本算法的輸入算法(僅限于本算法的輸入算法)中是最大的,則將該輸入算法的執(zhí)行順序號與本算法的互換;然后遍歷下一個(gè)輸入,也就是遍歷本算法的下一個(gè)輸入,如果本算法的輸入都已遍歷,則是遍歷下一個(gè)算法(如果是在步驟D中執(zhí)行該步驟,則下一個(gè)算法是執(zhí)行順序號為本算法減1的算法;如果是在步驟G中執(zhí)行該步驟,則下一個(gè)算法是索引為本算法加1的下一個(gè)算法)的第一個(gè)輸入,如圖5所示。F、如果所述第二算法的個(gè)數(shù)大于0,則從索引為所述最大執(zhí)行順序號減去所述當(dāng)前最小值的算法開始,按索引遍歷該算法及其后各算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都執(zhí)行一次步驟D ;遍歷完成后執(zhí)行步驟G。這一步驟針對圖內(nèi)存在分散的連接單元,能防止漏排。如果沒有第二算法,則不進(jìn)行步驟F,直接進(jìn)行步驟G。G、根據(jù)所述索引遍歷內(nèi)存中各算法的每個(gè)輸入,遍歷到各算法的每個(gè)輸入時(shí)都執(zhí)行一次步驟E ;遍歷完成后結(jié)束。實(shí)施例二,一種配置算法執(zhí)行順序號的裝置,如圖6所示,包括第一、第二配置模塊、第一、第二遍歷模塊、存儲模塊、初配置模塊;提取模塊,用于提取控制邏輯圖中算法的基本信息,包括算法的索引、各算法的輸入/輸出個(gè)數(shù)、輸入/輸出算法的索引、輸入/輸出連線是否為跟蹤線,并保存在所述存儲模塊中;完成后啟動(dòng)所述初配置模塊;所述初配置模塊用于按照索引遍歷所述存儲模塊中的算法,找到所有第一、第二算法,按照索引順序依次為各所述第一算法配置從最小索引開始遞增的執(zhí)行順序號,按反向索引順序依次為各所述第二算法配置從最大索引開始遞減的執(zhí)行順序號,完成后啟動(dòng)所述第一遍歷模塊;所述第一算法為沒有輸出,或者輸出連線為跟蹤線的算法;所述第二算法為沒有輸入,或者輸入連線為跟蹤線的算法;所述第一遍歷模塊用于從最小索引開始按索引遍歷所述存儲模塊中前一半算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都調(diào)用一次所述第一配置模塊;遍歷完成后啟動(dòng)所述第二遍歷模塊;所述第一配置模塊用于當(dāng)該輸出的輸出算法沒有執(zhí)行順序號時(shí),為該輸出算法配置從所述當(dāng)前最小值加1開始的執(zhí)行順序號,配置后將所述當(dāng)前最小值加1 ;判斷是否該輸出的輸出連線不為跟蹤線、且該輸出不處于連接循環(huán)中,不是則通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出;是則繼續(xù)判斷是否該輸出算法的執(zhí)行順序號大于本算法,且在大于本算法的輸出算法中是最小的,不是則通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出,是則將所述存儲模塊中該輸出算法和本算法的執(zhí)行順序號互換,在互換后通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出;還可以用于在將輸出算法和本算法的執(zhí)行順序號互換后,通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出前,從該輸出算法開始,按照執(zhí)行順序號由后往前遍歷已經(jīng)分配執(zhí)行順序號的算法的各輸入,遍歷到各算法的每個(gè)輸入時(shí)都調(diào)用一次所述第二配置模塊,遍歷完成后再通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出。所述第二遍歷模塊用于根據(jù)所述索引遍歷所述存儲模塊中各算法的每個(gè)輸入,遍歷到各算法的每個(gè)輸入時(shí)都調(diào)用一次所述第二配置模塊;遍歷完成則配置結(jié)束;所述第二配置模塊用于當(dāng)該輸入的輸入連線不為跟蹤線時(shí),如果本算法的執(zhí)行順序號大于該輸入的輸入算法的執(zhí)行順序號,并且該輸入算法的執(zhí)行順序號在所有執(zhí)行順序號小于本算法的輸入算法中是最大的,則將所述存儲模塊中該輸入算法的執(zhí)行順序號與本算法的互換;通知調(diào)用本模塊的模塊遍歷下一個(gè)輸入。本實(shí)施例中,所述的裝置還可以包括第三遍歷模塊;所述第一遍歷模塊還用于在遍歷完成后,啟動(dòng)第二遍歷模塊前,如果所述第二算法的個(gè)數(shù)大于0,則調(diào)用所述第三遍歷模塊;在收到所述第三遍歷模塊遍歷完成的通知后再啟動(dòng)所述第二遍歷模塊;所述第三遍歷模塊用于從索引為所述最大執(zhí)行順序號減去所述當(dāng)前最小值的算法開始,按索引遍歷所述存儲模塊中該算法及其后各算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都調(diào)用一次所述第一配置模塊;遍歷完成后通知所述第一遍歷模塊。本實(shí)施例中,所述提取模塊具體可以包括初始化單元,用于按照畫圖順序遍歷控制邏輯圖內(nèi)所有算法,在所述存儲模塊中保存各算法的索引、初始值為0的輸入/輸出個(gè)數(shù),暫時(shí)為空的輸入/輸出算法的索引,默認(rèn)為非跟蹤的每個(gè)輸入/輸出的跟蹤標(biāo)記;分離單元,用于分離出跟蹤線和連接了不需要算法執(zhí)行順序號的圖元,整理出算法執(zhí)行流程主干圖;更新單元,用于在所述算法執(zhí)行流程主干圖中,遍歷所有連接線;如果連接線兩端是普通算法,則對于該連接線的輸入端算法,在所述存儲模塊中將該算法的基本信息的輸出個(gè)數(shù)加1,增加該連接線輸出端算法的索引,如果連接線是跟蹤線,將該輸出的跟蹤標(biāo)記置為是跟蹤;對于該連接線的輸出端算法,在所述存儲模塊中將該算法的基本信息的輸入個(gè)數(shù)加1,增加該連接線輸入端算法的索引,如果連接線是跟蹤線,將該輸入的跟蹤標(biāo)記置為是跟蹤。本實(shí)施例中,所述初配置模塊具體可以包括第一、第二算法配置單元;所述第一算法配置單元用于將所述最小索引作為當(dāng)前最小值,按所述索引遍歷所述存儲模塊中的所有算法,找到第一算法時(shí),將所找到的第一算法的執(zhí)行順序號配置為當(dāng)前最小值,然后將當(dāng)前最小值加1后繼續(xù)遍歷,遍歷完成啟動(dòng)所述第二算法配置單元;所述第二算法配置單元用于將所述最大索引作為當(dāng)前最大值,按所述索引遍歷所述存儲模塊中的所有算法,找到第二算法時(shí),將所找到的第二算法的執(zhí)行順序號配置為當(dāng)前最大值,然后將當(dāng)前最大值減1后繼續(xù)遍歷,遍歷完成啟動(dòng)所述第一遍歷模塊。實(shí)際應(yīng)用時(shí),也可以先第二算法配置單元工作,完成后啟動(dòng)第一算法配置單元,第一算法配置單元完成后啟動(dòng)所述第一遍歷模塊;或是第一、第二算法配置單元并行工作,完成后啟動(dòng)所述第一遍歷模塊。其它實(shí)現(xiàn)細(xì)節(jié)可以同實(shí)施例一所述。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在存儲裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種配置算法執(zhí)行順序號的方法,包括a、提取并保存控制邏輯圖中算法的基本信息,包括算法的索引、各算法的輸入/輸出個(gè)數(shù)、輸入/輸出算法的索引、輸入/輸出連線是否為跟蹤線;b、按照索引遍歷算法,找到所有第一、第二算法;按照索引順序依次為各所述第一算法配置從最小索引開始遞增的執(zhí)行順序號;按反向索引順序依次為各所述第二算法配置從最大索引開始遞減的執(zhí)行順序號;所述第一算法為沒有輸出,或者輸出連線為跟蹤線的算法;所述第二算法為沒有輸入, 或者輸入連線為跟蹤線的算法;C、從最小索引開始按索引遍歷前一半算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都執(zhí)行一次步驟d ;遍歷完成后執(zhí)行步驟e ;d、如果該輸出的輸出算法沒有執(zhí)行順序號,則為該輸出算法配置從所述當(dāng)前最小值加 1開始的執(zhí)行順序號,配置后將所述當(dāng)前最小值加1 ;判斷是否該輸出的輸出連線不為跟蹤線、且該輸出不處于連接循環(huán)中,不是則遍歷下一個(gè)輸出;如果是則判斷是否該輸出算法的執(zhí)行順序號大于本算法,且在大于本算法的輸出算法中是最小的,是則將該輸出算法和本算法的執(zhí)行順序號互換后遍歷下一個(gè)輸出,否則直接遍歷下一個(gè)輸出;e、根據(jù)所述索引遍歷各算法的每個(gè)輸入,遍歷到各算法的每個(gè)輸入時(shí)都執(zhí)行一次步驟 f ;遍歷完成后結(jié)束;f、當(dāng)該輸入的輸入連線不為跟蹤線時(shí),如果本算法的執(zhí)行順序號大于該輸入的輸入算法的執(zhí)行順序號,并且該輸入算法的執(zhí)行順序號在所有執(zhí)行順序號小于本算法的輸入算法中是最大的,則將該輸入算法的執(zhí)行順序號與本算法的互換;然后遍歷下一個(gè)輸入。
2.如權(quán)利要求1所述的方法,其特征在于,所述步驟d中,將該輸出算法和本算法的執(zhí)行順序號互換后,遍歷下一個(gè)輸出前還包括步驟從該輸出算法開始,按照執(zhí)行順序號由后往前遍歷已經(jīng)分配執(zhí)行順序號的算法的各輸入,遍歷到各算法的每個(gè)輸入時(shí)都執(zhí)行一次步驟f ;遍歷完成后按索引遍歷下一個(gè)輸出。
3.如權(quán)利要求1所述的方法,其特征在于,所述步驟c中,遍歷完成后,在執(zhí)行步驟e前還包括步驟g、如果所述第二算法的個(gè)數(shù)大于0,則從索引為所述最大執(zhí)行順序號減去所述當(dāng)前最小值的算法開始,按索引遍歷該算法及其后各算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都執(zhí)行一次步驟d ;遍歷完成后執(zhí)行步驟e。
4.如權(quán)利要求1到3中任一項(xiàng)所述的方法,其特征在于,所述步驟a包括al、按照畫圖順序遍歷控制邏輯圖內(nèi)所有算法,在內(nèi)存中保存各算法的索引、初始值為 0的輸入/輸出個(gè)數(shù),暫時(shí)為空的輸入/輸出算法的索引,默認(rèn)為非跟蹤的每個(gè)輸入/輸出的跟蹤標(biāo)記;a2、分離出跟蹤線和連接了不需要算法執(zhí)行順序號的圖元,整理出算法執(zhí)行流程主干圖;a3、在所述算法執(zhí)行流程主干圖中,遍歷所有連接線;如果連接線兩端是普通算法,則對于該連接線的輸入端算法,在內(nèi)存中將該算法的基本信息的輸出個(gè)數(shù)加1,增加該連接線輸出端算法的索引,如果連接線是跟蹤線,將該輸出的跟蹤標(biāo)記置為是跟蹤;對于該連接線的輸出端算法,在內(nèi)存中將該算法的基本信息的輸入個(gè)數(shù)加1,增加該連接線輸入端算法的索引,如果連接線是跟蹤線,將該輸入的跟蹤標(biāo)記1 ; 足艮S宗。
5.如權(quán)利要求1到3中任一項(xiàng)所述的方法,其特征在于,所述步驟b包括bl、將所述最小索引作為當(dāng)前最小值,按所述索引遍歷內(nèi)存中的所有算法,找到第一算法時(shí),將所找到的第一算法的執(zhí)行順序號配置為當(dāng)前最小值,然后將當(dāng)前最小值加1后繼續(xù)遍歷,直到遍歷完成;b2、將所述最大索引作為當(dāng)前最大值,按所述索引遍歷內(nèi)存中的所有算法,找到第二算法時(shí),將所找到的第二算法的執(zhí)行順序號配置為當(dāng)前最大值,然后將當(dāng)前最大值減1后繼續(xù)遍歷,直到遍歷完成。
6.一種配置算法執(zhí)行順序號的裝置,其特征在于,包括第一、第二配置模塊、第一、第二遍歷模塊、存儲模塊、初配置模塊;提取模塊,用于提取存控制邏輯圖中算法的基本信息,包括算法的索引、各算法的輸入 /輸出個(gè)數(shù)、輸入/輸出算法的索引、輸入/輸出連線是否為跟蹤線,并保存在所述存儲模塊中;完成后啟動(dòng)所述初配置模塊;所述初配置模塊用于按照索引遍歷所述存儲模塊中的算法,找到所有第一、第二算法, 按照索引順序依次為各所述第一算法配置從最小索引開始遞增的執(zhí)行順序號,按反向索引順序依次為各所述第二算法配置從最大索引開始遞減的執(zhí)行順序號,完成后啟動(dòng)所述第一遍歷模塊;所述第一算法為沒有輸出,或者輸出連線為跟蹤線的算法;所述第二算法為沒有輸入,或者輸入連線為跟蹤線的算法;所述第一遍歷模塊用于從最小索引開始按索引遍歷所述存儲模塊中前一半算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都調(diào)用一次所述第一配置模塊;遍歷完成后啟動(dòng)所述第二遍歷模塊;所述第一配置模塊用于當(dāng)該輸出的輸出算法沒有執(zhí)行順序號時(shí),為該輸出算法配置從所述當(dāng)前最小值加1開始的執(zhí)行順序號,配置后將所述當(dāng)前最小值加1 ;判斷是否該輸出的輸出連線不為跟蹤線、且該輸出不處于連接循環(huán)中,不是則通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出;如果是則判斷是否該輸出算法的執(zhí)行順序號大于本算法,且在大于本算法的輸出算法中是最小的,是則將所述存儲模塊中該輸出算法和本算法的執(zhí)行順序號互換,然后通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出,否則直接通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出;所述第二遍歷模塊用于根據(jù)所述索引遍歷所述存儲模塊中各算法的每個(gè)輸入,遍歷到各算法的每個(gè)輸入時(shí)都調(diào)用一次所述第二配置模塊;所述第二配置模塊用于當(dāng)該輸入的輸入連線不為跟蹤線時(shí),如果本算法的執(zhí)行順序號大于該輸入的輸入算法的執(zhí)行順序號,并且該輸入算法的執(zhí)行順序號在所有執(zhí)行順序號小于本算法的輸入算法中是最大的,則將所述存儲模塊中該輸入算法的執(zhí)行順序號與本算法的互換,通知調(diào)用本模塊的模塊遍歷下一個(gè)輸入。
7.如權(quán)利要求6所述的裝置,其特征在于所述第一配置模塊還用于在將輸出算法和本算法的執(zhí)行順序號互換后,通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出前,從該輸出算法開始,按照執(zhí)行順序號由后往前遍歷已經(jīng)分配執(zhí)行順序號的算法的各輸入,遍歷到各算法的每個(gè)輸入時(shí)都調(diào)用一次所述第二配置模塊; 遍歷完成后再通知調(diào)用本模塊的模塊遍歷下一個(gè)輸出。
8.如權(quán)利要求6所述的裝置,其特征在于,還包括第三遍歷模塊;所述第一遍歷模塊還用于在遍歷完成后,啟動(dòng)第二遍歷模塊前,如果所述第二算法的個(gè)數(shù)大于0,則調(diào)用所述第三遍歷模塊;在收到所述第三遍歷模塊遍歷完成的通知后再啟動(dòng)所述第二遍歷模塊;所述第三遍歷模塊用于從索引為所述最大執(zhí)行順序號減去所述當(dāng)前最小值的算法開始,按索引遍歷所述存儲模塊中該算法及其后各算法的每個(gè)輸出,遍歷到各算法的每個(gè)輸出時(shí)都調(diào)用一次所述第一配置模塊;遍歷完成后通知所述第一遍歷模塊。
9.如權(quán)利要求6到8中任一項(xiàng)所述的裝置,其特征在于,所述提取模塊包括初始化單元,用于按照畫圖順序遍歷控制邏輯圖內(nèi)所有算法,在所述存儲模塊中保存各算法的索引、初始值為0的輸入/輸出個(gè)數(shù),暫時(shí)為空的輸入/輸出算法的索引,默認(rèn)為非跟蹤的每個(gè)輸入/輸出的跟蹤標(biāo)記;分離單元,用于分離出跟蹤線和連接了不需要算法執(zhí)行順序號的圖元,整理出算法執(zhí)行流程主干圖;更新單元,用于在所述算法執(zhí)行流程主干圖中,遍歷所有連接線;如果連接線兩端是普通算法,則對于該連接線的輸入端算法,在所述存儲模塊中將該算法的基本信息的輸出個(gè)數(shù)加1,增加該連接線輸出端算法的索引,如果連接線是跟蹤線,將該輸出的跟蹤標(biāo)記置為是跟蹤;對于該連接線的輸出端算法,在所述存儲模塊中將該算法的基本信息的輸入個(gè)數(shù)加1,增加該連接線輸入端算法的索引,如果連接線是跟蹤線,將該輸入的跟蹤標(biāo)記置為是足艮S宗。
10.如權(quán)利要求6到8中任一項(xiàng)所述的裝置,其特征在于,所述初配置模塊包括第一、第二算法配置單元;所述第一算法配置單元用于將所述最小索引作為當(dāng)前最小值,按所述索引遍歷所述存儲模塊中的所有算法,找到第一算法時(shí),將所找到的第一算法的執(zhí)行順序號配置為當(dāng)前最小值,然后將當(dāng)前最小值加1后繼續(xù)遍歷,遍歷完成后啟動(dòng)第二算法配置單元;所述第二算法配置單元用于將所述最大索引作為當(dāng)前最大值,按所述索引遍歷所述存儲模塊中的所有算法,找到第二算法時(shí),將所找到的第二算法的執(zhí)行順序號配置為當(dāng)前最大值,然后將當(dāng)前最大值減1后繼續(xù)遍歷,完成后啟動(dòng)所述第一遍歷模塊。
全文摘要
一種配置算法執(zhí)行順序號的方法及裝置;方法包括a、提取并保存基本信息;b、找到所有第一、第二算法,配置執(zhí)行順序號;c、遍歷前一半算法的每個(gè)輸出并執(zhí)行d,完成后執(zhí)行e;d、對于輸出連線不為跟蹤線且不處于連接循環(huán)中的輸出,如該輸出算法的執(zhí)行順序號大于本算法,且在大于本算法的輸出算法中最小,是則將該輸出算法和本算法的執(zhí)行順序號互換;e、遍歷各算法的每個(gè)輸入并執(zhí)行f;完成后結(jié)束;f、對于輸入連線不為跟蹤線的輸入,如果本算法的執(zhí)行順序號大于該輸入的輸入算法,并且該輸入算法的執(zhí)行順序號在所有執(zhí)行順序號小于本算法的輸入算法中最大,則將該輸入算法的執(zhí)行順序號與本算法的互換。
文檔編號G06F17/50GK102298653SQ20101020973
公開日2011年12月28日 申請日期2010年6月25日 優(yōu)先權(quán)日2010年6月25日
發(fā)明者呂大軍, 周海東, 夏明 , 孫瑜, 張智, 彭琪, 李文, 王中勝, 王朝輝, 王疆, 黃煥袍 申請人:北京國電智深控制技術(shù)有限公司