專利名稱:一種可視化圖形程序拓?fù)渑判蚍椒?br>
技術(shù)領(lǐng)域:
本發(fā)明涉及可視化編程領(lǐng)域圖形化程序的拓?fù)渑判颉?br>
背景技術(shù):
首先介紹拓?fù)渑判蛑械膸讉€基本概念,可同時結(jié)合圖1a和圖1b所示:拓?fù)渑判?由某個集合上的一個偏序得到該集合上的一個全序,這個操作稱之為拓?fù)渑判颉T诖a生成中指根據(jù)符號的連接關(guān)系,決定符號的調(diào)用順序。偏序:若集合X上的關(guān)系R是自反的、反對稱的和傳遞的,則稱R是集合X上的偏序關(guān)系。全序:設(shè)R是集合X上的偏序,如果對每個x,y G X必有xR y或者yRx,則稱R是集合X上的全序關(guān)系。直觀地看,偏序指集合中僅有部分成員之間可比較,而全序指集合中全體成員可比較。AOV-網(wǎng):圖中頂點表不程序符號塊(活動),有向邊(弧)表不先決條件,如符號a是b的先決條件,則圖中有弧〈a, b>。這種用頂點表示活動,用弧表示活動間優(yōu)先關(guān)系的有向圖稱為頂點表示活動的網(wǎng)(Activity On Vertex NetWork),簡稱AOV-網(wǎng)。在網(wǎng)中,若從頂點a到頂點b有一條有向路徑,則a是b的前驅(qū),b是a的后繼。若<a,b>是網(wǎng)中一條弧,則a是b的直接前驅(qū),b是a的直接后繼。可視化編程是一種面向?qū)ο蟮膱D形化軟件開發(fā)方法,為了實現(xiàn)應(yīng)用功能,用各種的編程符號搭建程序模型和配置數(shù)據(jù)流,用原理圖表示程序語言。圖形化程序的符號執(zhí)行順序是代碼生成的關(guān)鍵技術(shù),已經(jīng)公開的排序算法有:全部人工指定順序、或者完全根據(jù)位置坐標(biāo)來排序。人工指定順序存在的問題是當(dāng)可視化頁面數(shù)量很多時,設(shè)置維護的工作量很大,例如在編程中間插入一個符號時,需要手工調(diào)整后續(xù)符號的排序值。按照位置坐標(biāo)的方法,是把可視化頁面X坐標(biāo)劃分成幾個區(qū)間,在單個區(qū)間內(nèi)按照從上到下的順序輸出,這種方法的問題是沒有考慮到兩個區(qū)間內(nèi)符號的數(shù)據(jù)流依賴關(guān)系,而且同一個區(qū)間內(nèi)只能畫一排垂直符號,不能繪制平行符號,單頁程序的符號數(shù)量有限,單個功能往往需要拆分為多個頁面實現(xiàn)。在AOV網(wǎng)中,不應(yīng)該出現(xiàn)有向環(huán),這意味著某項活動應(yīng)以自己為先決條件,而對程序的數(shù)據(jù)流圖來說,則表明存在一個死循環(huán)。目前還缺乏針對可視化閉環(huán)圖形程序的有效合理的智能解決方法,為此設(shè)計了一個破環(huán)符號,由程序編輯人員指定破環(huán)點?;谏鲜龇治?,本發(fā)明人針對現(xiàn)有圖形程序的拓?fù)渑判蚍椒ǖ牟蛔阒庍M行深入研究,本案由此產(chǎn)生。
發(fā)明內(nèi)容
本發(fā)明的目的,在于提供一種可視化圖形程序拓?fù)渑判蚍椒?,其可減少人工干預(yù)過程,解決閉環(huán)死鎖依賴,以數(shù)據(jù)流依賴關(guān)系形成執(zhí)行分支,提高程序運行效率。
為了達成上述目的,本發(fā)明的解決方案是:一種可視化圖形程序拓?fù)渑判蚍椒?,包括如下三部?第一部分,先將符號按照先橫向X坐標(biāo)進行升序排列,X坐標(biāo)相同的按縱向I坐標(biāo)升序排列,即按照從上到下、從左到右的Z字型掃描順序,形成初步順序,按照坐標(biāo)排序符合可視化頁面程序的機器視覺;按照位置坐標(biāo)進行初次排序,可以解決當(dāng)兩個符號都同時滿足出棧條件時(0輸入點或所有輸入點都已知),那個符號優(yōu)先自動出棧的問題。由于可視化圖形程序的符號存儲是按照先繪制先存儲的原則,按照位置坐標(biāo)的排序可以解決符號先繪制、后刪除、再繪制時存儲順序變化導(dǎo)致排序結(jié)果不同的問題;第二部分,設(shè)計閉環(huán)圖形網(wǎng)絡(luò)中的破環(huán)符號BreakLoop,把與閉環(huán)符號輸出點相連接的后繼符號的輸入點置為已知,可去除死鎖依賴;針對存在反饋閉環(huán)的圖形程序,設(shè)計了破環(huán)符號,該符號為單輸入單輸出,變量類型可設(shè)置,輸出值等于上一個周期的輸入點值,把與破環(huán)符號輸出點相連接的后繼符號的輸入點自動置為已知狀態(tài),從而去除死鎖依賴,所有的破環(huán)符號的代碼執(zhí)行放在最后,提供了一種簡單直觀的圖形化設(shè)置破環(huán)的方法,提高了靈活性;第三部分,按照深度優(yōu)先和數(shù)據(jù)流依賴關(guān)系進行拓?fù)渑判?,定義拓?fù)渑判虺鰲5囊?guī)則,當(dāng)一個符號沒有輸入點或者所有輸入點都處于已知狀態(tài)時,該符號可以置為已知狀態(tài)優(yōu)先出棧,并置和該符號輸出點相連接的后繼符號的輸入點已知;并且根據(jù)輸入輸出點相連接的數(shù)據(jù)流依賴關(guān)系,優(yōu)先判斷緊隨該符號的后繼符號狀態(tài)是否已知,把有數(shù)據(jù)流依賴關(guān)系的符號按分支遍歷排序,這樣形成的運行代碼效率高,提高了 CPU的扇入扇出命中率;根據(jù)輸入輸出相連接的數(shù)據(jù)流依賴關(guān)系,形成有向無環(huán)圖,根據(jù)依賴關(guān)系形成符號的前驅(qū)后繼分支,然后按照深度優(yōu)先的遍歷原則,形成符號的執(zhí)行順序。采用上述方案后,本發(fā)明先以位置視覺進行初步排序,然后針對閉環(huán)進行檢測和破環(huán)處理,最后按照數(shù)據(jù)流依賴關(guān)系形成運行效率高的符號執(zhí)行調(diào)用順序,減少了人工設(shè)置的工作量,在多個特高壓直流保護控制的可視化程序中進行了應(yīng)用,取得較好的應(yīng)用效果。
圖1a是拓?fù)渑判虻钠蜿P(guān)系不意圖;圖1b是拓?fù)渑判虻娜蜿P(guān)系不意圖;圖2是本發(fā)明的流程圖;圖3是破壞符號Breakloop的示意圖;圖4是存在閉環(huán)的排序前圖形程序示意圖;圖5是排序后執(zhí)行順序不意圖。
具體實施例方式以下將結(jié)合附圖,對本發(fā)明的技術(shù)方案進行詳細(xì)說明。如圖2所示,本發(fā)明提供一種可視化圖形程序拓?fù)渑判蚍椒?,包括如下四個部分:第一部分,基于位置的初步排序過程,導(dǎo)入讀取可視化頁面文件,形成符號列表,記錄符號的頂點坐標(biāo),包括輸入塊、常量塊、輸出塊和功能塊,其中,輸入塊和常量塊是0輸A I輸出的圖形符號,在排序中該符號已經(jīng)滿足狀態(tài)已知的條件,可優(yōu)先出棧??梢暬撁娴淖鴺?biāo)起點設(shè)置為左上角,X坐標(biāo)從左到右遞增,y坐標(biāo)從上到下遞增,按照插入排序算法,先將符號按照X坐標(biāo)進行升序排序,當(dāng)符號的X坐標(biāo)相同時,按照符號的I坐標(biāo)升序排列,實現(xiàn)圖形符號的按照從上到下、從左到右的快速初步排序,符合可視化圖形程序的機器視覺和圖形程序開發(fā)人員的主觀意愿。第二部分,可視化頁面程序的閉環(huán)檢測和破壞處理。利用符號間輸入輸出點的連接線信息形成符號的前驅(qū)鏈表和后繼鏈表,通過某符號的后續(xù)鏈表遞歸遍歷,如果可回溯到源符號,則存在閉環(huán),如圖3所示,若閉環(huán)網(wǎng)絡(luò)中沒有BreakLoop符號,則提示報錯,退出排序過程。如果存在BreakLoop符號,定義如下處理原則:I)和破環(huán)符號輸出點相連接的后繼符號的輸入點自動置為已知狀態(tài),解除輸入點和破環(huán)符號輸出的邏輯依賴;2)從排序符號鏈表中刪除破環(huán)符號,把破環(huán)符號的執(zhí)行順序放在最后;3)符號為單輸入單輸出,變量類型可設(shè)置,輸出值等于上一個周期的輸入點值,符合自動控制的反饋離散化計算原理。按照數(shù)據(jù)流依賴關(guān)系,形成符號的輸入輸出依賴鏈表。符號之間的輸入輸出通過連接線連接,連接線記錄了連接起始符號的ID和起始輸出點名字、連接終端符號的ID和終端輸入點名字,每個符號有前驅(qū)鏈表和后繼鏈表。前驅(qū)鏈表記錄的是每個輸入點的相連接的源輸出符號,后繼鏈表記錄的是和輸出點相連接的終端符號。鏈表記錄符號指針?biāo)饕?,形成了基于?shù)據(jù)流的拓?fù)鋱D,可以通過后繼鏈表,遍歷數(shù)據(jù)流分支,可以通過前驅(qū)鏈表,回溯到源端頂點。如果某符號的輸入點未連接,則該符號不可排序,退出排序過程。第三部分,基于數(shù)據(jù)流的二次排序處理,將破環(huán)處理后的符號列表形成AOV網(wǎng),按照數(shù)據(jù)流依賴關(guān)系形成前驅(qū)鏈表和后繼鏈表,如果符號的輸入點未連接,則給出錯誤提示,退出排序過程。拓?fù)渑判蛞?guī)則:1)在AOV圖中以深度優(yōu)先的法則選一個沒有前驅(qū)的頂點并輸出;2)從圖中刪除該頂點和所有以它為尾的弧。檢測并處理閉環(huán),將拓?fù)鋱D轉(zhuǎn)換為有向無環(huán)AOV網(wǎng)。通過符號的后繼鏈表遞歸遍歷,如果可回溯到源符號,則表明圖形程序存在閉環(huán),當(dāng)存在閉環(huán)并且沒有BreakLoop時,給出錯誤提示,退出排序過程。如果閉環(huán)存在BreakLoop時,貝U先把BreakLoop放到鏈表尾部,然后遍歷BreakLoop的后繼鏈表,把后繼符號相連接的輸入點直為已知,如圖4所不,和BreakLoop.0ut相連接的OR.1n2、N0T.1n、MAX3.1nl、MAX2.1ni共4個輸入點可置為狀態(tài)已知。第四部分,依次遍歷判斷符號列表,一個符號能否執(zhí)行計算功能即狀態(tài)已知的判決條件:這個符號所有輸入變量的來源(其它符號的輸出)已經(jīng)有計算結(jié)果,即所有輸入變量已知或者沒有輸入變量(例如常量塊)。當(dāng)符號狀態(tài)已知時,依次遞歸遍歷每個輸出點的后繼,判斷緊密相連的后繼符號是否狀態(tài)已知,如果狀態(tài)已知,繼續(xù)遍歷后繼,如果狀態(tài)未知,則返回遍歷前驅(qū)符號。按照上述原則循環(huán)遍歷,直至所有符號的執(zhí)行順序都設(shè)置。按照深度優(yōu)先遍歷順序,判斷符號的輸入點狀態(tài),將滿足條件的符號放到可執(zhí)行順序鏈表中。如果符號沒有輸入點或者所有輸入點都已知,則該符號狀態(tài)置為已知,優(yōu)先出棧。如圖5所示,符號的執(zhí)行順序如下:OR、NOT、MAX3、MAX2、ABS、BreakLoop。以上實施例僅為說明本發(fā)明的技術(shù)思想,不能以此限定本發(fā)明的保護范圍,凡是按照本發(fā)明提出的技術(shù)思想,在技術(shù)方案基礎(chǔ)上所做的任何改動,均落入本發(fā)明保護范圍之內(nèi)。
權(quán)利要求
1.一種可視化圖形程序拓?fù)渑判蚍椒?,其特征在于包括如下三部? 第一部分,先將符號按照先橫向X坐標(biāo)進行升序排列,X坐標(biāo)相同的按縱向I坐標(biāo)升序排列,形成初步順序; 第二部分,設(shè)計閉環(huán)圖形網(wǎng)絡(luò)中的破環(huán)符號BreakLoop,把與閉環(huán)符號輸出點相連接的后繼符號的輸入點置為已知; 第三部分,按照深度優(yōu)先和數(shù)據(jù)流依賴關(guān)系進行拓?fù)渑判?,定義拓?fù)渑判虺鰲5囊?guī)則,當(dāng)一個符號沒有輸入點或者所有輸入點都處于已知狀態(tài)時,該符號置為已知狀態(tài)優(yōu)先出棧,并置和該符號輸出點相連接的后繼符號的輸入點已知;并且根據(jù)輸入輸出點相連接的數(shù)據(jù)流依賴關(guān)系,優(yōu)先判斷緊隨該符號的后繼符號狀態(tài)是否已知,把有數(shù)據(jù)流依賴關(guān)系的符號按分支遍歷排序。
2.如權(quán)利要求1所述的一種可視化圖形程序拓?fù)渑判蚍椒?,其特征在?所述第三部分中,根據(jù)輸入輸出相連接的數(shù)據(jù)流依賴關(guān)系,形成有向無環(huán)圖,根據(jù)依賴關(guān)系形成符號的前驅(qū)后繼分支,然后按照深度優(yōu)先的遍歷原則,形成符號的執(zhí)行順序。
全文摘要
本發(fā)明公開一種可視化圖形程序拓?fù)渑判蚍椒?,先將符號按照先橫向x坐標(biāo)進行升序排列,x坐標(biāo)相同的按縱向y坐標(biāo)升序排列,形成初步順序;設(shè)計閉環(huán)圖形網(wǎng)絡(luò)中的破環(huán)符號,把與閉環(huán)符號輸出點相連接的后繼符號的輸入點置為已知;按照深度優(yōu)先和數(shù)據(jù)流依賴關(guān)系進行拓?fù)渑判?,定義拓?fù)渑判虺鰲5囊?guī)則;并且根據(jù)輸入輸出點相連接的數(shù)據(jù)流依賴關(guān)系,優(yōu)先判斷緊隨該符號的后繼符號狀態(tài)是否已知,把有數(shù)據(jù)流依賴關(guān)系的符號按分支遍歷排序。此方法可減少人工干預(yù)過程,解決閉環(huán)死鎖依賴,以數(shù)據(jù)流依賴關(guān)系形成執(zhí)行分支,提高程序運行效率。
文檔編號G06F17/30GK103207903SQ20131010132
公開日2013年7月17日 申請日期2013年3月26日 優(yōu)先權(quán)日2013年3月26日
發(fā)明者馮亞東, 陳宏君, 劉克金, 曹冬明, 王國棟, 周強, 邱大為 申請人:南京南瑞繼保電氣有限公司, 南京南瑞繼保工程技術(shù)有限公司