一種功能塊圖數(shù)據(jù)流的排序系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及自動(dòng)化控制技術(shù)領(lǐng)域,具體涉及一種功能塊圖數(shù)據(jù)流的排序系統(tǒng)及方法。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)中,功能塊圖是廣泛應(yīng)用于工業(yè)控制系統(tǒng)中的圖形化編程語(yǔ)言,對(duì)于控制的邏輯進(jìn)行編輯,有效對(duì)控制系統(tǒng)進(jìn)行更有效、更直觀的邏輯編輯方式。功能塊圖的廣泛應(yīng)用也對(duì)工業(yè)控制系統(tǒng)有巨大的貢獻(xiàn),現(xiàn)代很多龐大控制工程中均使用功能圖進(jìn)行邏輯的編輯,并且能有效的實(shí)現(xiàn)控制功能。
[0003]通過(guò)功能塊圖實(shí)現(xiàn)了模塊的順序控制,但是由于龐大的功能塊圖編輯過(guò)程中無(wú)法對(duì)每個(gè)模塊進(jìn)行邏輯分析并且賦予運(yùn)算順序號(hào)的方式。因此,在龐大的控制邏輯中,缺少一種有效的排序方式對(duì)功能塊圖進(jìn)行合理有效的運(yùn)算順序的賦值,導(dǎo)致在功能塊圖中運(yùn)算先后順序有誤,產(chǎn)生數(shù)據(jù)運(yùn)行有誤,影響邏輯運(yùn)算的正常運(yùn)行。
[0004]中國(guó)發(fā)明CN1851649公開(kāi)了一種實(shí)現(xiàn)多引擎并行處理器中數(shù)據(jù)包排序的方法,關(guān)鍵是,在數(shù)據(jù)流的分發(fā)過(guò)程中產(chǎn)生標(biāo)記的編碼,并保存為一個(gè)序列,在數(shù)據(jù)流的收集過(guò)程中對(duì)保存在序列中的標(biāo)記依次解碼,選中與該標(biāo)記相對(duì)應(yīng)的引擎通道或負(fù)載通道,依次輸出對(duì)應(yīng)的一個(gè)完整的數(shù)據(jù)包,且只允許一個(gè)數(shù)據(jù)包輸出。雖然解決了對(duì)輸出數(shù)據(jù)包的排序,但是存在不能合理智能賦予運(yùn)算順序號(hào)的問(wèn)題。
【發(fā)明內(nèi)容】
[0005]為了克服現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供了一種功能塊圖數(shù)據(jù)流排序系統(tǒng)及方法,解決了傳統(tǒng)功能塊圖中,各模塊的運(yùn)行順序號(hào)無(wú)序運(yùn)行,在龐大的功能塊圖中無(wú)法合理智能的賦予運(yùn)算順序號(hào)的問(wèn)題。本發(fā)明的功能塊圖功能圖的智能排序方法針對(duì)功能塊圖中包含多種模塊類(lèi)型進(jìn)行運(yùn)算排序。
[0006]本發(fā)明是通過(guò)如下技術(shù)方案實(shí)現(xiàn)的:一種功能塊圖數(shù)據(jù)流的排序系統(tǒng),包括至少一個(gè)賦予了以運(yùn)算順序號(hào)為賦值的源節(jié)點(diǎn)模塊,所述源節(jié)點(diǎn)模塊為中間節(jié)點(diǎn)模塊提供數(shù)據(jù)流,所述中間節(jié)點(diǎn)模塊為終節(jié)點(diǎn)模塊提供經(jīng)過(guò)順序結(jié)構(gòu)運(yùn)算的數(shù)據(jù)流信息,所述源節(jié)點(diǎn)模塊至少包括一個(gè)輸出模塊引腳,所述中間節(jié)點(diǎn)模塊包括若干個(gè)運(yùn)算模塊,所述每個(gè)運(yùn)算模塊包括輸入模塊引腳和輸出模塊引腳,所述輸入模塊引腳與源節(jié)點(diǎn)模塊至少連接一個(gè),所述終節(jié)點(diǎn)模塊至少包括一個(gè)輸入模塊引腳。
[0007]進(jìn)一步地,所述運(yùn)算模塊包括數(shù)學(xué)運(yùn)算功能模塊、邏輯運(yùn)算模塊、選擇功能模塊、控制功能模塊和時(shí)間功能模塊。
[0008]進(jìn)一步地,所述源節(jié)點(diǎn)模塊為多個(gè)。
[0009]進(jìn)一步地,所述終節(jié)點(diǎn)模塊為多個(gè)。
[0010]進(jìn)一步地,本發(fā)明還提供了一種功能塊圖數(shù)據(jù)流的排序方法,所述方法包括以下步驟:
[0011]步驟1:遍歷整理檢測(cè)功能塊圖的連接關(guān)系,確保連接的關(guān)系正確;
[0012]步驟2:用遍歷方式統(tǒng)計(jì)功能塊圖中的源節(jié)點(diǎn)和終節(jié)點(diǎn),并且對(duì)源節(jié)點(diǎn)的模塊賦予運(yùn)算順序號(hào)賦值;
[0013]步驟3:由獲得的終節(jié)點(diǎn)模塊,根據(jù)樹(shù)型結(jié)構(gòu)從左至右的對(duì)終結(jié)點(diǎn)模塊排序,排序過(guò)程通過(guò)遞歸算法,從終節(jié)點(diǎn)模塊根據(jù)連接關(guān)系尋找下一模塊,并且檢測(cè)是否進(jìn)行了運(yùn)算順序號(hào)的賦值,若沒(méi)有賦值則依此類(lèi)推尋找下一個(gè)連接的模塊,若已經(jīng)被賦予運(yùn)算順序號(hào)則返回上一個(gè)模塊進(jìn)行運(yùn)算順序號(hào)的賦值,依此類(lèi)推進(jìn)行排序直到所有模塊排序完成;
[0014]步驟4:通過(guò)對(duì)經(jīng)過(guò)整體連接的模塊進(jìn)行運(yùn)算順序號(hào)的賦值,檢測(cè)運(yùn)算所述模塊順序號(hào)的最大值是否等于所有模塊的總數(shù),等于則直接輸出排序結(jié)果,不等于則返回到所述步驟2再次進(jìn)行排序。
[0015]本發(fā)明所述功能塊圖數(shù)據(jù)流的排序系統(tǒng)及方法與現(xiàn)有技術(shù)相比,優(yōu)越效果在于:本發(fā)明對(duì)功能圖的樹(shù)型結(jié)構(gòu)從左至右按照順控的邏輯流程進(jìn)行排序,基于模塊中的反饋信號(hào)等于上一節(jié)點(diǎn)模塊的信號(hào),利用遞歸算法更好的整理整個(gè)邏輯結(jié)構(gòu),從而得到每個(gè)模塊的合理的運(yùn)算順序號(hào),經(jīng)過(guò)本發(fā)明的排序方式和邏輯運(yùn)算,獲得的運(yùn)算輸出結(jié)果正確、合理、有效。
【附圖說(shuō)明】
[0016]圖1為本發(fā)明所述功能塊圖數(shù)據(jù)流的排序系統(tǒng)流程圖無(wú)反饋信號(hào)的結(jié)構(gòu)示意圖;
[0017]圖2為本發(fā)明所述功能塊圖數(shù)據(jù)流的排序系統(tǒng)中存在反饋信號(hào)的結(jié)構(gòu)示意圖;
[0018]圖3為本發(fā)明所述功能塊圖數(shù)據(jù)流的排序系統(tǒng)的整體結(jié)構(gòu)示意圖。
[0019]附圖標(biāo)記如下:
[0020]卜源節(jié)點(diǎn)模塊,2-中間節(jié)點(diǎn)模塊,3-終節(jié)點(diǎn)模塊。
[0021]圖中箭頭方向?yàn)閿?shù)據(jù)傳輸方向;m、n和i為正的自然數(shù)。
【具體實(shí)施方式】
[0022]下面結(jié)合附圖對(duì)本發(fā)明【具體實(shí)施方式】作進(jìn)一步詳細(xì)說(shuō)明。
[0023]如圖1-3所示,具體說(shuō)明本發(fā)明,本發(fā)明提供的一種功能塊圖數(shù)據(jù)流的排序系統(tǒng),所述排序系統(tǒng)包括至少一個(gè)賦予了以運(yùn)算順序號(hào)為賦值的源節(jié)點(diǎn)模塊1,所述源節(jié)點(diǎn)模塊I為中間節(jié)點(diǎn)模塊2提供數(shù)據(jù)流,所述中間節(jié)點(diǎn)模塊2為終節(jié)點(diǎn)模塊3提供經(jīng)過(guò)順序結(jié)構(gòu)運(yùn)算的數(shù)據(jù)流信息,所述源節(jié)點(diǎn)模塊I至少包括一個(gè)輸出模塊引腳,所述中間節(jié)點(diǎn)模塊2包括若干個(gè)運(yùn)算模塊,所述每個(gè)運(yùn)算模塊包括輸入模塊引腳和輸出模塊引腳,所述輸入模塊引腳與源節(jié)點(diǎn)模塊I至少連接一個(gè),所述終節(jié)點(diǎn)模塊3至少包括一個(gè)輸入模塊引腳,所述運(yùn)算模塊包括數(shù)學(xué)運(yùn)算功能模塊、邏輯運(yùn)算模塊、選擇功能模塊、控制功能模塊和時(shí)間功能模塊。所述源節(jié)點(diǎn)模塊I為一個(gè)或多個(gè)。所述終節(jié)點(diǎn)模塊3為一個(gè)或多個(gè)。
[0024]本發(fā)明具體如圖1所示,所述功能塊圖結(jié)構(gòu)包括:功能圖中的源節(jié)點(diǎn)模塊1、中間節(jié)點(diǎn)模塊2和終節(jié)點(diǎn)模塊3,所述的源節(jié)點(diǎn)模塊I和終結(jié)點(diǎn)模塊3屬于輸入輸出功能模塊,所述中間節(jié)點(diǎn)模塊2包括所有的運(yùn)算模塊,如數(shù)學(xué)運(yùn)算功能模塊、邏輯運(yùn)算模塊、選擇功能模塊、控制功能模塊、時(shí)間功能模塊等。所述源節(jié)點(diǎn)模塊I是對(duì)于功能塊圖的數(shù)據(jù)流中開(kāi)始輸入的模塊,在整體的功能塊圖邏輯功能圖中,可以存在一個(gè)或者多個(gè)源節(jié)點(diǎn),功能上是使用了輸入功能模塊。整體的邏輯結(jié)構(gòu)中,由其模塊進(jìn)行數(shù)據(jù)輸入,進(jìn)行邏輯運(yùn)算,模塊引腳只存在一個(gè)引腳輸出下一個(gè)模塊時(shí),并沒(méi)有數(shù)據(jù)對(duì)此模塊進(jìn)行輸入,實(shí)現(xiàn)數(shù)據(jù)流向邏輯圖傳入功能。在智能排序的方法中,首先對(duì)該源節(jié)點(diǎn)模塊進(jìn)行運(yùn)算順序號(hào)的賦值,這樣就能進(jìn)行下一步的中間節(jié)點(diǎn)模塊2的排序。
[0025]所述中間節(jié)點(diǎn)模塊2是對(duì)于功能塊圖的數(shù)據(jù)流中運(yùn)算過(guò)程的模塊,對(duì)于整體的邏輯結(jié)構(gòu)運(yùn)算過(guò)程的中間點(diǎn)反應(yīng)出其運(yùn)算的順序結(jié)構(gòu),模塊引腳存在輸入和輸出,實(shí)現(xiàn)數(shù)據(jù)流的輸入、模塊運(yùn)算和輸出功能,中間節(jié)點(diǎn)模塊2包括所有的運(yùn)算模塊,如數(shù)學(xué)運(yùn)算功能模塊、邏輯運(yùn)算模塊、選擇功能模塊、控制功能模塊、時(shí)間功能模塊等,在這些模塊中均是存在輸入輸出引腳,但是不要求每個(gè)引腳均連接使用,多個(gè)輸入引腳中至少連接一個(gè),輸出引腳可以不進(jìn)行