李福林,宋元斌,吳 冰,嚴(yán) 偉
(1.上海交通大學(xué) 船舶海洋與建筑工程學(xué)院,上海 200240;2.國(guó)家電網(wǎng)浙江省電力有限公司經(jīng)濟(jì)技術(shù)研究院,杭州 310008;3.浙江華云清潔能源有限公司,杭州 310008)
設(shè)計(jì)階段的合規(guī)性審核將影響變電站建成后的安全與可靠運(yùn)行,可以從設(shè)計(jì)源頭消除事故隱患。變電站布置設(shè)計(jì)的合規(guī)性審核包括檢查各電氣設(shè)備及建(構(gòu))筑物的空間布局等是否符合相關(guān)設(shè)計(jì)規(guī)范的要求。目前,變電站布置的合規(guī)性審核主要依賴人工完成,工作量大、耗時(shí)長(zhǎng)、且易產(chǎn)生錯(cuò)漏[1]。實(shí)現(xiàn)變電站布置的合規(guī)性自動(dòng)化審核是解決上述問(wèn)題的一條重要途徑。
近年,工程設(shè)計(jì)的自動(dòng)審核在施工隱患識(shí)別[2]、防火[3]等領(lǐng)域取得積極進(jìn)展。相關(guān)研究表明,設(shè)計(jì)合規(guī)性自動(dòng)審核的關(guān)鍵模塊是將設(shè)計(jì)規(guī)范轉(zhuǎn)譯為機(jī)器可執(zhí)行的程序[4]。目前常見(jiàn)的規(guī)則編碼方法有2種:硬編碼法[5]和語(yǔ)義網(wǎng)[6,7]。前者將規(guī)范直接編寫為命令式程序語(yǔ)言檢查信息模型,如新加坡CORENET項(xiàng)目[8]聘請(qǐng)專業(yè)軟件公司開(kāi)發(fā)規(guī)則對(duì)象庫(kù)FORNAX并使用C++語(yǔ)言編寫審核規(guī)則。這類方法對(duì)領(lǐng)域?qū)<业木幊棠芰σ蟾咔覍徍讼到y(tǒng)不透明、可維護(hù)性差。而部分學(xué)者提出的基于語(yǔ)義網(wǎng)的編碼方法,借助語(yǔ)義網(wǎng)與本體建模將規(guī)范轉(zhuǎn)換為描述式邏輯語(yǔ)言,與命令式程序語(yǔ)言相比編碼難度有所降低。例如Lu等[9]通過(guò)簡(jiǎn)單的“IF…ELSE…”模板將屋頂開(kāi)口尺寸設(shè)計(jì)規(guī)范編寫為SWRL規(guī)則并利用Jess引擎推理評(píng)判設(shè)計(jì)的合規(guī)性。為了審核變電站布置的合規(guī)性,除了需要邏輯語(yǔ)言描述的設(shè)計(jì)規(guī)則外,還涉及大量的圖形幾何和空間分析算法,此類過(guò)程用邏輯語(yǔ)言表述極其復(fù)雜[10]。更加困難的是,一般工程技術(shù)人員難以在短時(shí)間內(nèi)掌握上述編碼方法,而且編碼成果的可讀性差,工程技術(shù)專家難以審核和維護(hù)編碼成果,而計(jì)算機(jī)專家對(duì)規(guī)則的理解又存在局限性。
近年來(lái),可視化編程得到廣泛應(yīng)用,它主要是讓用戶以繪制流程圖的形式編寫程序[11,12]。在梳理變電站布置規(guī)則構(gòu)成的共性要素基礎(chǔ)上,筆者提出面向變電站布置自動(dòng)審核的設(shè)計(jì)規(guī)范可視化編程方法,主要包括一個(gè)三層結(jié)構(gòu)的可視化編程框架和編程步驟,并詳細(xì)定義了節(jié)點(diǎn)、端子與流的類型,以期降低設(shè)計(jì)規(guī)則的編碼難度,同時(shí)提高自動(dòng)審核工具的可維護(hù)性和透明性,從而更好地輔助變電站布置設(shè)計(jì)的自動(dòng)審核。
在設(shè)計(jì)規(guī)范中,變電站布置的設(shè)計(jì)規(guī)則可以歸納為五個(gè)方面:
1)工作環(huán)境:電氣設(shè)備應(yīng)布置在合理場(chǎng)地且周邊自然環(huán)境滿足裝置安全運(yùn)行的要求。
2)電氣安全空間:帶電體之間以及與其他設(shè)施之間應(yīng)保持足夠距離以避免強(qiáng)電場(chǎng)擊穿介質(zhì)閃絡(luò)放電而引起各種短路、火災(zāi)和爆炸事故。
3)圍擋防護(hù):在部分電氣設(shè)備周圍需布置圍擋防護(hù)以防止人和物過(guò)分觸及或接近。
4)防火消防:電氣設(shè)備的布置應(yīng)考慮防火要求,并設(shè)置必要的消防設(shè)施。
5)可維修性:電氣設(shè)備之間,以及電氣設(shè)備與建(構(gòu))筑物之間,應(yīng)預(yù)留足夠的空間以滿足檢修的要求。
上述五類布置設(shè)計(jì)規(guī)則的審核推理與運(yùn)算主要需要以下三類計(jì)算功能的支持:
1)基本代數(shù)運(yùn)算:算術(shù)運(yùn)算、邏輯運(yùn)算及關(guān)系運(yùn)算功能等。
2)空間分析:主要負(fù)責(zé)計(jì)算對(duì)象之間的空間關(guān)系等信息,如“在變壓器、配電裝置和裸導(dǎo)線的正上方不應(yīng)布置燈具”[13](《20KV及以下變電所設(shè)計(jì)規(guī)范》6.4.3條)。
3)幾何模型計(jì)算:主要負(fù)責(zé)計(jì)算對(duì)象的幾何模型等信息,如“配電裝置中電氣設(shè)備的柵狀遮攔高度不應(yīng)小于1.2m?!盵14](《3~110KV高壓配電裝置設(shè)計(jì)規(guī)范》5.3.7條)。
以《3~110KV高壓配電裝置設(shè)計(jì)規(guī)范》為例,各類布置規(guī)則涉及的基本計(jì)算功能需求如表1所示。
表1 基本計(jì)算功能需求統(tǒng)計(jì)
總體上,空間分析和幾何模型計(jì)算是規(guī)則編碼的重點(diǎn),它們都涉及較為復(fù)雜的幾何(形體)計(jì)算或空間分析算法,此類算法不易采用邏輯語(yǔ)言描述;盡管也可采用硬編碼法轉(zhuǎn)譯,但對(duì)設(shè)計(jì)專家的編程能力要求高,編碼難度大。
可視化編程的核心思想是將各類基本計(jì)算功能封裝于節(jié)點(diǎn)內(nèi)部,各個(gè)節(jié)點(diǎn)用數(shù)據(jù)流和控制流加以連接形成程序?;谏鲜鼍幊趟枷耄こ碳夹g(shù)專家可專注于布置設(shè)計(jì)規(guī)則表述本身而不需要考慮具體的編程細(xì)節(jié)。為了實(shí)現(xiàn)上述可視化編程思想,需要提出一個(gè)框架,從可視化編程的要素與層次方面規(guī)定設(shè)計(jì)規(guī)則的程序。
圖1展示了布置設(shè)計(jì)規(guī)范可視化編程的三層框架,自底向上為別為基礎(chǔ)層、復(fù)用層和規(guī)則層。
圖1 設(shè)計(jì)規(guī)范的可視化編程框架
最底層為基礎(chǔ)層,包含預(yù)定義的各類節(jié)點(diǎn)、端子、流。節(jié)點(diǎn)不僅封裝了前述的3類基本計(jì)算功能,還封裝了設(shè)計(jì)模型訪問(wèn)等功能。端子是節(jié)點(diǎn)的數(shù)據(jù)輸入和輸出接口,流是實(shí)現(xiàn)數(shù)據(jù)傳遞和流程控制的方式,包括數(shù)據(jù)流和控制流2類。以空間拓?fù)浞治龉?jié)點(diǎn)為例,圖2展示了其各個(gè)要素。
圖2 節(jié)點(diǎn)示例
另外,節(jié)點(diǎn)的設(shè)計(jì)還需考慮其泛用性和合適的顆粒度,以保證節(jié)點(diǎn)的復(fù)用性強(qiáng),且易于專家理解和使用。以圖2中的空間拓?fù)浞治龉?jié)點(diǎn)為例,其泛用性表現(xiàn)在能夠判斷兩個(gè)任意對(duì)象的拓?fù)潢P(guān)系而不局限于特定對(duì)象;而合適顆粒度則表現(xiàn)為領(lǐng)域?qū)<覂H需要關(guān)心節(jié)點(diǎn)的輸入和輸出,而無(wú)需了解節(jié)點(diǎn)內(nèi)部封裝的3DR27等復(fù)雜計(jì)算模型[15]。
中間的復(fù)用層包含專家利用基本功能節(jié)點(diǎn)編寫設(shè)計(jì)規(guī)則的一些中間結(jié)果,它們由專家二次封裝形成復(fù)用節(jié)點(diǎn)以便于在其他規(guī)則的編程中重復(fù)使用,例如“外墻”、“帶電構(gòu)件”等概念。復(fù)用節(jié)點(diǎn)之間也可相互引用并進(jìn)一步封裝。
最頂層為規(guī)則層,專家基于復(fù)用層和基礎(chǔ)層,通過(guò)獲取審核對(duì)象、規(guī)范編碼、合規(guī)性評(píng)價(jià)三步構(gòu)建最終的數(shù)字化審核規(guī)則。復(fù)用層與規(guī)則層的節(jié)點(diǎn)組合和連接信息均可采用XML格式記錄。
布置設(shè)計(jì)規(guī)則的詳細(xì)節(jié)點(diǎn)類型如表2所示。
表2 節(jié)點(diǎn)類型
節(jié)點(diǎn)的端子是數(shù)據(jù)的入口和出口,主要數(shù)據(jù)類型及其標(biāo)識(shí)如表3所示。
表3 節(jié)點(diǎn)端子數(shù)據(jù)類型
為了保證節(jié)點(diǎn)的泛用性,本文基于國(guó)家電網(wǎng)有限公司針對(duì)變電站三維設(shè)計(jì)提出的電網(wǎng)信息模型(Grid Information Modeling,GIM)[16],定義了由圖形數(shù)據(jù)段和非圖形數(shù)據(jù)段組成的內(nèi)部類GIMObject,從而統(tǒng)一設(shè)計(jì)對(duì)象的數(shù)據(jù)類型。此外,數(shù)據(jù)格式之間應(yīng)具備一定的兼容性,例如浮點(diǎn)型兼容整型、GIM對(duì)象型兼容三維模型對(duì)象型等。
1)數(shù)據(jù)流:運(yùn)行過(guò)程中節(jié)點(diǎn)間的數(shù)據(jù)流轉(zhuǎn),包括基本的數(shù)據(jù)類型,例如整型、浮點(diǎn)型、布爾型等。
2)控制流:控制程序執(zhí)行的邏輯順序,一般包括分支和循環(huán)控制。
首先在必要的功能節(jié)點(diǎn)輸入端子上額外增加布爾控制型輸入端子以定義該節(jié)點(diǎn)是否執(zhí)行。其次,將循環(huán)結(jié)構(gòu)嵌入節(jié)點(diǎn)內(nèi)部實(shí)現(xiàn)循環(huán)控制,其中內(nèi)部循環(huán)分為2類:全循環(huán)與分組循環(huán)。全循環(huán)是指遍歷輸入數(shù)組中的每一個(gè)元素進(jìn)行運(yùn)算;分組循環(huán)是指在處理多個(gè)數(shù)組輸入時(shí),以相同數(shù)組索引的元素為一組進(jìn)行遍歷計(jì)算。以空間拓?fù)浞治龉?jié)點(diǎn)為例,假設(shè)分析類型為判斷分析對(duì)象(bj,j=1,2)是否在參考對(duì)象(ai,i=1,2)內(nèi)部,那么全循環(huán)和分組循環(huán)的計(jì)算過(guò)程分別如圖3(a)~圖3(b)所示。
圖3 帶有循環(huán)的節(jié)點(diǎn)計(jì)算過(guò)程
如圖3(a)所示,全循環(huán)控制遍歷數(shù)組A,B中的每一個(gè)元素,共進(jìn)行4次運(yùn)算,最終輸出滿足拓?fù)潢P(guān)系的元素?cái)?shù)組,并使用統(tǒng)一的數(shù)組索引指示對(duì)象間的關(guān)系(即對(duì)象b1,b2在a1內(nèi)部,b2在a2內(nèi)部);而如圖3(b)所示,分組循環(huán)控制以相同數(shù)組索引的元素為組遍歷,共進(jìn)行2次運(yùn)算,最終輸出滿足拓?fù)潢P(guān)系的元素?cái)?shù)組(即對(duì)象b1在a1內(nèi)部,b2在a2內(nèi)部)。全循環(huán)與分組循環(huán)的本質(zhì)區(qū)別在于是否考慮多個(gè)輸入數(shù)組對(duì)應(yīng)元素間的關(guān)系。
當(dāng)審核的設(shè)計(jì)對(duì)象在模型中已經(jīng)明確定義時(shí),可直接使用模型數(shù)據(jù)訪問(wèn)節(jié)點(diǎn)查詢。查詢的約束條件通常包括對(duì)象的類型(如變壓器,裸導(dǎo)線)、屬性(如額定電壓、安裝場(chǎng)所)、關(guān)系(如對(duì)象所屬的上級(jí)系統(tǒng))等,而對(duì)象圖形方面的約束則通過(guò)幾何模型計(jì)算中的相關(guān)節(jié)點(diǎn)實(shí)現(xiàn)。當(dāng)審核對(duì)象未在模型中明確定義時(shí)(如外墻),需要通過(guò)計(jì)算獲取審核對(duì)象。
獲取審核對(duì)象后,按照規(guī)范內(nèi)容進(jìn)行編程,若待審核信息已經(jīng)在模型中顯式定義,則可直接從審核對(duì)象中抽取,例如變壓器的額定電壓、安裝位置等;若待審核信息未在模型中顯式定義,如變壓器與裸導(dǎo)線的空間拓?fù)潢P(guān)系,則需要利用相關(guān)基礎(chǔ)節(jié)點(diǎn)或復(fù)用節(jié)點(diǎn)進(jìn)一步計(jì)算獲取。
獲取待審核的信息后,與設(shè)計(jì)規(guī)范中的標(biāo)準(zhǔn)進(jìn)行比較并評(píng)價(jià)審核信息的合規(guī)性。
本文基于Grasshopper平臺(tái)開(kāi)發(fā)了變電站布置設(shè)計(jì)規(guī)則的可視化編程原型系統(tǒng),以復(fù)雜的布置設(shè)計(jì)規(guī)則的編碼為例,實(shí)現(xiàn)某變電站GIM模型的合規(guī)性自動(dòng)審核,驗(yàn)證所提出方法的有效性和實(shí)用性,其他布置規(guī)則的編碼過(guò)程類似。案例數(shù)據(jù)來(lái)源如下:
GIM模型數(shù)據(jù):某變電站工程設(shè)計(jì)GIM模型實(shí)例。為支持對(duì)GIM模型數(shù)據(jù)訪問(wèn),本文提前解析GIM模型并將其導(dǎo)入MySQL數(shù)據(jù)庫(kù),每類構(gòu)件的信息借助屬性子表和模型子表分別記錄并通過(guò)構(gòu)件ID關(guān)聯(lián),構(gòu)件間的關(guān)系通過(guò)關(guān)系表記錄。屬性子表每一列記錄構(gòu)件的一個(gè)屬性字段,模型子表記錄三維模型OBJ對(duì)象序列化后的二進(jìn)制文件。此外,基于GIM模型信息分類代碼表建立規(guī)范表述與GIM模型之間的映射關(guān)系。
審核規(guī)則:《3~110KV高壓配電裝置設(shè)計(jì)規(guī)范》第5.4.8條[14]:“當(dāng)火災(zāi)危險(xiǎn)類別為丙、丁、戊類的生產(chǎn)建筑物外墻距屋外油浸變壓器外廓5m以內(nèi)時(shí),在變壓器高度以上3m的水平線以下及外廓兩側(cè)各加3m的外墻范圍內(nèi),不應(yīng)有門、窗或通風(fēng)孔。”
專家根據(jù)該條規(guī)則審圖的思路如下:首先查找距離屋外油浸變壓器5m以內(nèi)的相關(guān)建筑物外墻,之后將變壓器外廓向距離最近的外墻面投影(圖4中A區(qū)域),最后審核投影面輪廓外加3m的外墻范圍內(nèi)(圖4中立方體B)是否有門、窗和通風(fēng)孔存在。
圖4 設(shè)計(jì)規(guī)則5.4.8的空間關(guān)系
顯然該規(guī)則涉及過(guò)程性的知識(shí)表示(在變壓器高度以上…及外廓兩側(cè)…外墻范圍內(nèi)),因此難以基于語(yǔ)義網(wǎng)轉(zhuǎn)譯;另一方面,盡管采用硬編碼可以完成該規(guī)則編碼,但對(duì)于一般工程技術(shù)人員編碼難度很高,而且編碼成果十分復(fù)雜,難以在后續(xù)進(jìn)行審核和維護(hù)?;诒疚奶岢龅脑O(shè)計(jì)規(guī)范可視化編程框架完成該條規(guī)則的編碼:
1)審核對(duì)象獲取:圖5(a)~圖5(b)分別展示了待審核對(duì)象“屋外油浸變壓器”以及“門、窗、通風(fēng)孔”的可視化編程過(guò)程。
圖5 搜索構(gòu)件對(duì)象的可視化程序
GIM對(duì)象選擇節(jié)點(diǎn)根據(jù)約束條件自動(dòng)生成查詢語(yǔ)句并向模型數(shù)據(jù)庫(kù)發(fā)送數(shù)據(jù)請(qǐng)求,例如圖5(a)生成的查詢語(yǔ)句如下:
其中,Transformer_ATT、Transformer_MOD分別為變壓器的屬性子表和模型子表。之后,GIM對(duì)象選擇節(jié)點(diǎn)將返回的數(shù)據(jù)反序列化,并進(jìn)一步轉(zhuǎn)化為GIMObject數(shù)據(jù)格式輸出,從而供下游節(jié)點(diǎn)使用。
圖6 搜索外墻的的可視化程序
圖7 設(shè)計(jì)規(guī)則5.4.8的可視化程序
圖6展示了待審核對(duì)象“火災(zāi)危險(xiǎn)類別為丙、丁、戊類的生產(chǎn)建筑物外墻”的編碼過(guò)程,由于“外墻”對(duì)象未在設(shè)計(jì)模型中明確定義,通過(guò)判斷墻與其所在的建筑物是否內(nèi)切以確定是否為外墻。由于需要找到所有外墻,因此空間拓?fù)浞治龉?jié)點(diǎn)采用全循環(huán)。封裝上述規(guī)則的中間表示(例如“外墻”),并作為復(fù)用層成果,以便在轉(zhuǎn)譯其他規(guī)則時(shí)使用。
2)規(guī)范編碼:封裝所有審核對(duì)象獲取過(guò)程后,規(guī)則最終編碼結(jié)果如圖7所示。首先,通過(guò)軟碰撞檢測(cè)節(jié)點(diǎn)獲得所有屋外變壓器外廓5m以內(nèi)的外墻,構(gòu)成軟碰撞對(duì)象序列對(duì)(節(jié)點(diǎn)1全循環(huán));之后取變壓器和外墻的OBB包圍盒,計(jì)算外墻包圍盒中距離相應(yīng)變壓器最近的面模型,即距離最近的外墻面(節(jié)點(diǎn)2分組循環(huán));接著,將變壓器包圍盒向其對(duì)應(yīng)的最近面模型做三維投影計(jì)算(節(jié)點(diǎn)3分組循環(huán)),并將投影面向兩側(cè)及上方緩沖3m形成二維緩沖區(qū);最后,以該二維緩沖區(qū)域?yàn)槔烀妫蜃罱鼔γ娣ㄏ蛄康姆捶较蚶?,拉伸距離為外墻墻體厚度,形成的三維拉伸體即為禁止門、窗、通風(fēng)孔對(duì)象存在的三維空間區(qū)域(節(jié)點(diǎn)4分組循環(huán))。
3)合規(guī)性評(píng)價(jià):通過(guò)空間拓?fù)浞治龉?jié)點(diǎn),判斷審核對(duì)象門、窗、通風(fēng)孔是否在拉伸體內(nèi)存在(節(jié)點(diǎn)5全循環(huán)),形成該條規(guī)則最終的可視化程序。
利用該規(guī)則審核某變電站GIM模型實(shí)例,執(zhí)行規(guī)則后節(jié)點(diǎn)5的輸出端子均為空值,表示拉伸體內(nèi)不存在門、窗、通風(fēng)孔。通過(guò)進(jìn)一步查看中間結(jié)果,可發(fā)現(xiàn)不存在外墻與屋外油浸變壓器發(fā)生軟碰撞(如圖8所示),即說(shuō)明屋外油浸變壓器外廓5m的范圍內(nèi)不存在外墻,該設(shè)計(jì)模型能夠滿足圖4所示的設(shè)計(jì)規(guī)則的要求。
圖8 規(guī)則5.4.8的合規(guī)性自動(dòng)審核結(jié)果
從上述布置設(shè)計(jì)規(guī)則編碼過(guò)程可以看出,可視化編程過(guò)程直觀,工程技術(shù)專家采用可視化編程方法可以自行對(duì)復(fù)雜的布置規(guī)則進(jìn)行編碼;編碼成果透明度高、可讀性強(qiáng),有利于后續(xù)專家對(duì)規(guī)則編碼成果進(jìn)行審核和維護(hù)。若后續(xù)規(guī)范發(fā)生修訂變更,專家可在原有可視化程序的基礎(chǔ)上繼續(xù)修改,從而避免軟件工程師維護(hù)代碼所帶來(lái)的高昂成本和潛在錯(cuò)誤。
本文在歸納變電站設(shè)計(jì)規(guī)范中布置規(guī)則編碼所需功能基礎(chǔ)上,提出設(shè)計(jì)規(guī)范的可視化編程的三層框架,并著重規(guī)范了其中的節(jié)點(diǎn)、端子、流的類型;案例研究表明,一般設(shè)計(jì)人員采用可視化編程的方式可以直觀地對(duì)變電站布置的設(shè)計(jì)規(guī)則進(jìn)行編碼,編碼成果更加易于理解、審核和維護(hù)。
雖然目前該方法只是針對(duì)變電站設(shè)計(jì)的布置規(guī)則編碼進(jìn)行了初步嘗試,但由于該方法的框架普遍適用性,在對(duì)節(jié)點(diǎn)功能進(jìn)行拓展后也可用于其他類型的設(shè)計(jì)合規(guī)性審核,這是筆者目前正在進(jìn)行的研究。