■ 華陸工程科技有限責(zé)任公司 孫東鋒
Intergraph Smart P&ID軟件是海克斯康SmartPlant Enterprise體系軟件之一,是一款以數(shù)據(jù)庫(kù)為核心、以規(guī)則為驅(qū)動(dòng)的智能工藝及儀表流程圖設(shè)計(jì)軟件。其智能性主要體現(xiàn)在對(duì)PID圖形文件中的數(shù)據(jù)進(jìn)行存儲(chǔ)管理,從而實(shí)現(xiàn)數(shù)據(jù)的檢索、傳遞、比較和復(fù)用,以提高項(xiàng)目的整體設(shè)計(jì)效率,實(shí)現(xiàn)圖形和數(shù)據(jù)在設(shè)計(jì)中的結(jié)合。Smart P&ID提供了豐富的接口,支持Oracle、SQL Server數(shù)據(jù)庫(kù),支持VisulBasic、C#等高級(jí)語言,結(jié)合各種編程技術(shù)靈活應(yīng)用,可以最大限度地?cái)U(kuò)展Smart P&ID功能。
結(jié)構(gòu)化查詢語言(Structured Query Language,簡(jiǎn)稱SQL),是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。SQL語言具有四類操作數(shù)據(jù)庫(kù)的能力,包括操作數(shù)據(jù)庫(kù)和表結(jié)構(gòu)、查詢數(shù)據(jù)、修改數(shù)據(jù)和授權(quán),本文主要使用數(shù)據(jù)查詢功能,這也是最常用的數(shù)據(jù)庫(kù)日常操作。SQL語句在Oracel和SQL Server數(shù)據(jù)庫(kù)中的語法基本相同,但是有個(gè)別語法存在差別,需要判斷Smart P&ID數(shù)據(jù)庫(kù)類型后再調(diào)整SQL語句。
本文通過SQL查詢?cè)赟mart P&ID數(shù)據(jù)庫(kù)中的應(yīng)用,基于Smart P&ID的模型數(shù)據(jù)和圖形數(shù)據(jù)結(jié)構(gòu),生成滿足項(xiàng)目要求的閥門選用條件表和材料等級(jí)分界匯總表兩種不同類型的復(fù)雜報(bào)表。該二次開發(fā)旨在實(shí)現(xiàn)軟件默認(rèn)報(bào)表模塊無法實(shí)現(xiàn)的功能,發(fā)揮智能PID的結(jié)構(gòu)化數(shù)據(jù)優(yōu)勢(shì)。
Smart P&ID有一個(gè)龐大且嚴(yán)謹(jǐn)?shù)暮笈_(tái)數(shù)據(jù)模型架構(gòu)在運(yùn)行,此數(shù)據(jù)模型定義了眾多數(shù)據(jù)對(duì)象類別和它們之間的關(guān)系,這可以用UML(統(tǒng)一建模語言)通過類圖表示出來。這些數(shù)據(jù)對(duì)象可概括為所有與工藝管道儀表流程圖和工程設(shè)計(jì)相關(guān)的工程數(shù)據(jù)(模型數(shù)據(jù))以及所有與圖形信息相關(guān)的數(shù)據(jù)(圖形數(shù)據(jù))兩大方面。數(shù)據(jù)模型包含多種類別的對(duì)象,這些對(duì)象擁有各自的屬性和相關(guān)操作,每個(gè)數(shù)據(jù)對(duì)象類別與其他類別之間存在繼承、共存、從屬或者相關(guān)等不同形式關(guān)系,包括一對(duì)一、一對(duì)多、多對(duì)多等多種關(guān)系。比如,管嘴與設(shè)備之間存在從屬關(guān)系且一個(gè)設(shè)備可以有多個(gè)管嘴,屬于一對(duì)多;閥門與管線之間存在相關(guān)的關(guān)系,它們相互獨(dú)立存在,但是通過管線可以查找到閥門。
在所有模型數(shù)據(jù)對(duì)象中,ModleItem是最高級(jí)別的,它的子類包括ItemNote(注釋)、Piping Point(管道連接點(diǎn))、PlantItem(工廠對(duì)象)、Signal Point(信號(hào)線連接點(diǎn))、OPC(圖紙連接符號(hào))等。PlantItem又包括Equipment(設(shè)備)、Nozzle(管口)、 PipingComp(管件)、Instrument(儀表)、PipeRun(管道)、SignalRun(信號(hào)線)、PlantitemGroup(工廠對(duì)象分組)。Equipment分為Mechanical、Exchanger、Vessel、GeneralEquipment、 Equipment Component等幾大類,而每一大類設(shè)備又分為若干小類(Subclass), 每一小類又分為不同的具體類型(Type)。這是一種繼承關(guān)系,子類可以繼承上一級(jí)別的所有屬性。而Drawing Data主 要 由Drawing和Representation組成,Drawing包 含History、Status、Note等信息,Representation可以理解為放置圖紙上各個(gè)對(duì)象時(shí)所存在的關(guān)聯(lián)關(guān)系。這個(gè)嚴(yán)謹(jǐn)龐大的數(shù)據(jù)模型在日常的軟件運(yùn)行中無法看到,然而正因?yàn)樗拇嬖冢瑪?shù)據(jù)架構(gòu)支撐起了軟件的核心數(shù)據(jù)庫(kù),使軟件中的數(shù)據(jù)管理有條不紊地進(jìn)行。這也是我們進(jìn)行Smart P&ID自動(dòng)化開發(fā)的核心所在。
Smart P&ID默認(rèn)具有報(bào)表功能,可以利用該功能以及EXCEL報(bào)表實(shí)現(xiàn)項(xiàng)目運(yùn)行中的多種需要,軟件默認(rèn)的API具有封裝完整、運(yùn)行穩(wěn)定等優(yōu)勢(shì),但是對(duì)于較為復(fù)雜的報(bào)表要求,其難以實(shí)現(xiàn),需要利用SQL語句在數(shù)據(jù)庫(kù)中查詢,將查詢結(jié)果以EXCEL報(bào)表形式導(dǎo)出。
本文以閥門選用條件表和材料等級(jí)分界匯總表為例,就Smart P&ID默認(rèn)報(bào)表功能無法滿足項(xiàng)目需求時(shí),如何利用SQL語句在Smart P&ID數(shù)據(jù)庫(kù)中按照項(xiàng)目要求進(jìn)行查詢并生成EXCEL報(bào)表的二次開發(fā)進(jìn)行探討。
此次開發(fā)參考了Smart P&ID默認(rèn)報(bào)表功能的做法,如圖1所示,在項(xiàng)目共享服務(wù)器的Report Files文件夾目錄下定制報(bào)表模板,以便將SQL查詢結(jié)果輸入到該模板中,保存至用戶指定位置。模板定制不僅有利于保證項(xiàng)目文件格式的統(tǒng)一,而且也便于管理員利用外部程序操作EXCEL。

圖1 定制報(bào)表模板
通過構(gòu)造Smart P&ID的SQL查詢功能函數(shù),其他開發(fā)人員新增查詢時(shí)只需要專注工藝邏輯的梳理和構(gòu)造SQL語句,而不需要再考慮SQL語句如何連接激活項(xiàng)目并在Smart P&ID數(shù)據(jù)庫(kù)中運(yùn)行。該函數(shù)的主要功能為連接到當(dāng)前激活項(xiàng)目,判斷數(shù)據(jù)庫(kù)類型后運(yùn)行SQL語句。
閥門選用條件表的工藝需求主要包括四個(gè)方面:一是匯總選定主項(xiàng)下所有管道的材料等級(jí);二是匯總該主項(xiàng)某個(gè)管道材料等級(jí)下包含的所有介質(zhì)代號(hào);三是匯總該主項(xiàng)某個(gè)管道材料等級(jí)下包含的所有閥門類型及閥門管件范圍;四是匯總該主項(xiàng)某個(gè)材料等級(jí)的管道直徑范圍。
Smart P&ID默認(rèn)報(bào)表功能只能以管道為過濾器導(dǎo)出管道的相關(guān)屬性,或以閥門為過濾器導(dǎo)出閥門的相關(guān)屬性及所在管道相關(guān)屬性。該功能要求在某些狀況下以管道為中心,其他狀況下以閥門為中心。因此,Smart P&ID默認(rèn)報(bào)表功能無法實(shí)現(xiàn)該功能。基于以上要求,本文根據(jù)Smart P&ID數(shù)據(jù)結(jié)構(gòu)梳理出程序邏輯圖(圖2),利用SQL查詢搜索相關(guān)內(nèi)容并生成報(bào)表。

圖2 閥門選用條件表程序邏輯圖
程序運(yùn)行結(jié)果如圖3所示,文件格式和數(shù)據(jù)結(jié)果均滿足項(xiàng)目要求。該二次開發(fā)主要利用了Smart P&ID的模型數(shù)據(jù),通過遍歷選定主項(xiàng)下的所有管道,重匯總管道的所有材料等級(jí),然后依次以某個(gè)材料等級(jí)為過濾條件,匯總滿足該材料等級(jí)下所有管道介質(zhì)代號(hào)以及管道管徑,取管道最大和最小直徑作為該材料等級(jí)下的管道直徑范圍,同時(shí)以該材料等級(jí)為過濾條件,匯總該材料等級(jí)下管道上的閥門,重匯總閥門類型及閥門尺寸,將最終查詢結(jié)果輸入EXCEL報(bào)表模板,保存至用戶指定位置。

圖3 閥門選用條件表效果圖
材料等級(jí)分界匯總表的工藝要求如圖4所示。該P(yáng)ID圖中,繪制了3種類型的材料等級(jí)分界:類型1為管道和閥門連接處發(fā)生了材料等級(jí)變化;類型2為管件和管件連接處發(fā)生了材料等級(jí)變化;類型3為管道和設(shè)備管口連接點(diǎn)發(fā)生了材料等級(jí)變化。這3種類型為工藝流程圖上最常見的材料分界,此次開發(fā)以此為輸入條件,運(yùn)用SQL查詢,生成工藝條件。

圖4 材料等級(jí)分界工藝示例圖
如圖5所示,SQL查詢以材料等級(jí)打斷符類型的symbol為程序邏輯起點(diǎn),雖然不同項(xiàng)目打斷符的文件名稱未必一樣,但是同一項(xiàng)目的打斷符文件名稱一般較為固定。為此,該功能在不同項(xiàng)目應(yīng)用時(shí),需要用戶指定所用打斷符symbol。通過打斷符symbol找到等級(jí)分界點(diǎn),根據(jù)分界點(diǎn)兩端的工廠對(duì)象類型調(diào)用軟件API讀取其工藝屬性,如材料等級(jí)、管徑等,將最終結(jié)果寫入報(bào)表模板,保存至用戶指定位置。

圖5 材料等級(jí)分界匯總表程序邏輯圖
程序運(yùn)行結(jié)果如圖6所示,文件格式和數(shù)據(jù)結(jié)果均滿足項(xiàng)目要求。該二次開發(fā)主要利用了Smart P&ID的圖形數(shù)據(jù),Smart P&ID上的打斷符symbol是從工藝數(shù)據(jù)結(jié)構(gòu)上阻斷了兩端工廠對(duì)象的材料等級(jí)屬性傳遞,而不同于非智能PID上的打斷符僅僅只是圖面顯示。另外,Smart P&ID數(shù)據(jù)庫(kù)中直接查詢出來的某些屬性值只是代號(hào),需要和其他表進(jìn)行耦合才能得到最終工藝數(shù)據(jù),這時(shí)使用Smart P&ID默認(rèn)的API,通過SP_ID獲取工廠對(duì)象,讀取其屬性更方便。在實(shí)際的開發(fā)過程中,需要靈活使用SQL查詢和軟件API,減少代碼量。值得說明的是,工藝邏輯的嚴(yán)密性至關(guān)重要,如本開發(fā)中未考慮到的材料等級(jí)分界情形將會(huì)影響查詢結(jié)果的準(zhǔn)確性和完整性。

圖6 材料等級(jí)分界匯總表效果圖
上述SQL查詢?cè)诜侵悄躊ID上是無法實(shí)現(xiàn)的,只有通過智能PID的繪制,所有的模型數(shù)據(jù)和圖形數(shù)據(jù)才能以結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,同時(shí)還需要熟悉Smart P&ID數(shù)據(jù)結(jié)構(gòu),具備豐富的工藝設(shè)計(jì)知識(shí),利用SQL查詢和軟件API就能得到滿足項(xiàng)目需求的工藝數(shù)據(jù)。
作為Smart P&ID管理員,不僅要能夠管理和定制Smart P&ID系統(tǒng),滿足項(xiàng)目的基本需求,同時(shí)還應(yīng)具備扎實(shí)的工藝知識(shí),熟悉數(shù)據(jù)庫(kù)結(jié)構(gòu)和SQL語句,掌握軟件API,靈活運(yùn)用多種軟件工具進(jìn)行二次開發(fā),滿足項(xiàng)目運(yùn)行需求,充分發(fā)揮智能PID結(jié)構(gòu)化數(shù)據(jù)優(yōu)勢(shì)。