■ 華陸工程科技有限責(zé)任公司 孫東鋒
Intergraph Smart P&ID軟件是??怂箍礢martPlant Enterprise體系軟件之一,是一款以數(shù)據(jù)庫為核心、以規(guī)則為驅(qū)動的智能工藝及儀表流程圖設(shè)計軟件。其智能性主要體現(xiàn)在對PID圖形文件中的數(shù)據(jù)進行存儲管理,從而實現(xiàn)數(shù)據(jù)的檢索、傳遞、比較和復(fù)用,以提高項目的整體設(shè)計效率,實現(xiàn)圖形和數(shù)據(jù)在設(shè)計中的結(jié)合。Smart P&ID提供了豐富的接口,支持Oracle、SQL Server數(shù)據(jù)庫,支持VisulBasic、C#等高級語言,結(jié)合各種編程技術(shù)靈活應(yīng)用,可以最大限度地擴展Smart P&ID功能。
結(jié)構(gòu)化查詢語言(Structured Query Language,簡稱SQL),是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。SQL語言具有四類操作數(shù)據(jù)庫的能力,包括操作數(shù)據(jù)庫和表結(jié)構(gòu)、查詢數(shù)據(jù)、修改數(shù)據(jù)和授權(quán),本文主要使用數(shù)據(jù)查詢功能,這也是最常用的數(shù)據(jù)庫日常操作。SQL語句在Oracel和SQL Server數(shù)據(jù)庫中的語法基本相同,但是有個別語法存在差別,需要判斷Smart P&ID數(shù)據(jù)庫類型后再調(diào)整SQL語句。
本文通過SQL查詢在Smart P&ID數(shù)據(jù)庫中的應(yīng)用,基于Smart P&ID的模型數(shù)據(jù)和圖形數(shù)據(jù)結(jié)構(gòu),生成滿足項目要求的閥門選用條件表和材料等級分界匯總表兩種不同類型的復(fù)雜報表。該二次開發(fā)旨在實現(xiàn)軟件默認報表模塊無法實現(xiàn)的功能,發(fā)揮智能PID的結(jié)構(gòu)化數(shù)據(jù)優(yōu)勢。
Smart P&ID有一個龐大且嚴謹?shù)暮笈_數(shù)據(jù)模型架構(gòu)在運行,此數(shù)據(jù)模型定義了眾多數(shù)據(jù)對象類別和它們之間的關(guān)系,這可以用UML(統(tǒng)一建模語言)通過類圖表示出來。這些數(shù)據(jù)對象可概括為所有與工藝管道儀表流程圖和工程設(shè)計相關(guān)的工程數(shù)據(jù)(模型數(shù)據(jù))以及所有與圖形信息相關(guān)的數(shù)據(jù)(圖形數(shù)據(jù))兩大方面。數(shù)據(jù)模型包含多種類別的對象,這些對象擁有各自的屬性和相關(guān)操作,每個數(shù)據(jù)對象類別與其他類別之間存在繼承、共存、從屬或者相關(guān)等不同形式關(guān)系,包括一對一、一對多、多對多等多種關(guān)系。比如,管嘴與設(shè)備之間存在從屬關(guān)系且一個設(shè)備可以有多個管嘴,屬于一對多;閥門與管線之間存在相關(guān)的關(guān)系,它們相互獨立存在,但是通過管線可以查找到閥門。
在所有模型數(shù)據(jù)對象中,ModleItem是最高級別的,它的子類包括ItemNote(注釋)、Piping Point(管道連接點)、PlantItem(工廠對象)、Signal Point(信號線連接點)、OPC(圖紙連接符號)等。PlantItem又包括Equipment(設(shè)備)、Nozzle(管口)、 PipingComp(管件)、Instrument(儀表)、PipeRun(管道)、SignalRun(信號線)、PlantitemGroup(工廠對象分組)。Equipment分為Mechanical、Exchanger、Vessel、GeneralEquipment、 Equipment Component等幾大類,而每一大類設(shè)備又分為若干小類(Subclass), 每一小類又分為不同的具體類型(Type)。這是一種繼承關(guān)系,子類可以繼承上一級別的所有屬性。而Drawing Data主 要 由Drawing和Representation組成,Drawing包 含History、Status、Note等信息,Representation可以理解為放置圖紙上各個對象時所存在的關(guān)聯(lián)關(guān)系。這個嚴謹龐大的數(shù)據(jù)模型在日常的軟件運行中無法看到,然而正因為它的存在,數(shù)據(jù)架構(gòu)支撐起了軟件的核心數(shù)據(jù)庫,使軟件中的數(shù)據(jù)管理有條不紊地進行。這也是我們進行Smart P&ID自動化開發(fā)的核心所在。
Smart P&ID默認具有報表功能,可以利用該功能以及EXCEL報表實現(xiàn)項目運行中的多種需要,軟件默認的API具有封裝完整、運行穩(wěn)定等優(yōu)勢,但是對于較為復(fù)雜的報表要求,其難以實現(xiàn),需要利用SQL語句在數(shù)據(jù)庫中查詢,將查詢結(jié)果以EXCEL報表形式導(dǎo)出。
本文以閥門選用條件表和材料等級分界匯總表為例,就Smart P&ID默認報表功能無法滿足項目需求時,如何利用SQL語句在Smart P&ID數(shù)據(jù)庫中按照項目要求進行查詢并生成EXCEL報表的二次開發(fā)進行探討。
此次開發(fā)參考了Smart P&ID默認報表功能的做法,如圖1所示,在項目共享服務(wù)器的Report Files文件夾目錄下定制報表模板,以便將SQL查詢結(jié)果輸入到該模板中,保存至用戶指定位置。模板定制不僅有利于保證項目文件格式的統(tǒng)一,而且也便于管理員利用外部程序操作EXCEL。
圖1 定制報表模板
通過構(gòu)造Smart P&ID的SQL查詢功能函數(shù),其他開發(fā)人員新增查詢時只需要專注工藝邏輯的梳理和構(gòu)造SQL語句,而不需要再考慮SQL語句如何連接激活項目并在Smart P&ID數(shù)據(jù)庫中運行。該函數(shù)的主要功能為連接到當(dāng)前激活項目,判斷數(shù)據(jù)庫類型后運行SQL語句。
閥門選用條件表的工藝需求主要包括四個方面:一是匯總選定主項下所有管道的材料等級;二是匯總該主項某個管道材料等級下包含的所有介質(zhì)代號;三是匯總該主項某個管道材料等級下包含的所有閥門類型及閥門管件范圍;四是匯總該主項某個材料等級的管道直徑范圍。
Smart P&ID默認報表功能只能以管道為過濾器導(dǎo)出管道的相關(guān)屬性,或以閥門為過濾器導(dǎo)出閥門的相關(guān)屬性及所在管道相關(guān)屬性。該功能要求在某些狀況下以管道為中心,其他狀況下以閥門為中心。因此,Smart P&ID默認報表功能無法實現(xiàn)該功能。基于以上要求,本文根據(jù)Smart P&ID數(shù)據(jù)結(jié)構(gòu)梳理出程序邏輯圖(圖2),利用SQL查詢搜索相關(guān)內(nèi)容并生成報表。
圖2 閥門選用條件表程序邏輯圖
程序運行結(jié)果如圖3所示,文件格式和數(shù)據(jù)結(jié)果均滿足項目要求。該二次開發(fā)主要利用了Smart P&ID的模型數(shù)據(jù),通過遍歷選定主項下的所有管道,重匯總管道的所有材料等級,然后依次以某個材料等級為過濾條件,匯總滿足該材料等級下所有管道介質(zhì)代號以及管道管徑,取管道最大和最小直徑作為該材料等級下的管道直徑范圍,同時以該材料等級為過濾條件,匯總該材料等級下管道上的閥門,重匯總閥門類型及閥門尺寸,將最終查詢結(jié)果輸入EXCEL報表模板,保存至用戶指定位置。
圖3 閥門選用條件表效果圖
材料等級分界匯總表的工藝要求如圖4所示。該PID圖中,繪制了3種類型的材料等級分界:類型1為管道和閥門連接處發(fā)生了材料等級變化;類型2為管件和管件連接處發(fā)生了材料等級變化;類型3為管道和設(shè)備管口連接點發(fā)生了材料等級變化。這3種類型為工藝流程圖上最常見的材料分界,此次開發(fā)以此為輸入條件,運用SQL查詢,生成工藝條件。
圖4 材料等級分界工藝示例圖
如圖5所示,SQL查詢以材料等級打斷符類型的symbol為程序邏輯起點,雖然不同項目打斷符的文件名稱未必一樣,但是同一項目的打斷符文件名稱一般較為固定。為此,該功能在不同項目應(yīng)用時,需要用戶指定所用打斷符symbol。通過打斷符symbol找到等級分界點,根據(jù)分界點兩端的工廠對象類型調(diào)用軟件API讀取其工藝屬性,如材料等級、管徑等,將最終結(jié)果寫入報表模板,保存至用戶指定位置。
圖5 材料等級分界匯總表程序邏輯圖
程序運行結(jié)果如圖6所示,文件格式和數(shù)據(jù)結(jié)果均滿足項目要求。該二次開發(fā)主要利用了Smart P&ID的圖形數(shù)據(jù),Smart P&ID上的打斷符symbol是從工藝數(shù)據(jù)結(jié)構(gòu)上阻斷了兩端工廠對象的材料等級屬性傳遞,而不同于非智能PID上的打斷符僅僅只是圖面顯示。另外,Smart P&ID數(shù)據(jù)庫中直接查詢出來的某些屬性值只是代號,需要和其他表進行耦合才能得到最終工藝數(shù)據(jù),這時使用Smart P&ID默認的API,通過SP_ID獲取工廠對象,讀取其屬性更方便。在實際的開發(fā)過程中,需要靈活使用SQL查詢和軟件API,減少代碼量。值得說明的是,工藝邏輯的嚴密性至關(guān)重要,如本開發(fā)中未考慮到的材料等級分界情形將會影響查詢結(jié)果的準(zhǔn)確性和完整性。
圖6 材料等級分界匯總表效果圖
上述SQL查詢在非智能PID上是無法實現(xiàn)的,只有通過智能PID的繪制,所有的模型數(shù)據(jù)和圖形數(shù)據(jù)才能以結(jié)構(gòu)化的數(shù)據(jù)存儲在數(shù)據(jù)庫中,同時還需要熟悉Smart P&ID數(shù)據(jù)結(jié)構(gòu),具備豐富的工藝設(shè)計知識,利用SQL查詢和軟件API就能得到滿足項目需求的工藝數(shù)據(jù)。
作為Smart P&ID管理員,不僅要能夠管理和定制Smart P&ID系統(tǒng),滿足項目的基本需求,同時還應(yīng)具備扎實的工藝知識,熟悉數(shù)據(jù)庫結(jié)構(gòu)和SQL語句,掌握軟件API,靈活運用多種軟件工具進行二次開發(fā),滿足項目運行需求,充分發(fā)揮智能PID結(jié)構(gòu)化數(shù)據(jù)優(yōu)勢。