【 第一幕墻網(wǎng) 】
摘要:本文介紹了在石油化工裝置設(shè)計過程中,如何利用三維設(shè)計軟PDMS實現(xiàn)埋地重力流管網(wǎng)的三維設(shè)計,并使用PML語言對其元件庫、ISODraft、Draft以及材料報表模塊進行二次開發(fā),從而提高地下管道的設(shè)計效率和設(shè)計質(zhì)量。 關(guān)鍵詞:埋地重力流管網(wǎng);PDMS;二次開發(fā);元件庫;Draft;PML 隨著計算機技術(shù)的不斷進步和設(shè)計理念的不斷提升,在今天石油化工裝置的設(shè)計過程中,越來越傾向于借助三維設(shè)計軟件進行設(shè)計、施工和驗收。目前國際上比較流行的兩大三維設(shè)計軟件分別是鷹圖(INTERGRAPH)的PDS(PLANT DESIGN SYSTEM)和AVEVE公司的PDMS(PLANT DESIGN MANGERMENT SYSTEM),兩者雖開發(fā)平臺不同,但其中心理念都是數(shù)據(jù)的集成:縱向貫穿石化裝置的設(shè)計、施工、生產(chǎn)維護等整個生命周期的各類數(shù)據(jù),橫向貫穿參與設(shè)計、施工、采購、驗收、生產(chǎn)的各個專業(yè)及各個參與方的協(xié)同數(shù)據(jù),真正實現(xiàn)了數(shù)字化工廠的理念。在過去的10多年里,我們通過軟件的引進和應用開發(fā),實現(xiàn)了地上裝置的三維設(shè)計,但鑒于埋地重力流管網(wǎng)設(shè)計與施工的特殊性,一直沒有實現(xiàn)三維設(shè)計,下文將講述如何在PDMS平臺下實現(xiàn)埋地重力流管網(wǎng)的三維設(shè)計。 1 開發(fā)背景 1.1 開發(fā)需求 石油化工裝置地下鋪設(shè)的管道包括壓力流和重力流;埋地重力流管道包括生產(chǎn)污水、生活污水和雨水等。制約埋地重力流管道設(shè)計的因素較多,如地理環(huán)境、地上設(shè)備和管道的規(guī)劃、大口徑地上管道的支撐點、振動管道的地面支撐點、設(shè)備和構(gòu)架基礎(chǔ)、埋地壓力流管道和電纜的位置、管道坡度、施工因素和地下空間等。埋地管道一般隨基礎(chǔ)、電纜溝一起開挖、施工、防滲和覆土,F(xiàn)場實踐證明使用二維CAD進行埋地重力流管網(wǎng)設(shè)計,不可避免地造成大量的錯、漏、碰、缺等問題,由于地下管道交叉嚴重,防腐補口要求高且施工困難,一旦發(fā)生設(shè)計變更就會造成人力和財力的很大浪費,同時二維CAD設(shè)計也不能滿足數(shù)字化工廠的需要。隨著石化裝置的日益大型化和數(shù)字工廠的建設(shè),此矛盾越來越突出,迫切需要解決。 1.2 PDMS簡介 PDMS是由英國CADCENTRE(現(xiàn)AVEVA)公司開發(fā)研制的面向數(shù)據(jù)型大型工廠設(shè)計管理系統(tǒng)。通過圖形平臺,實現(xiàn)全比例三維實體建模,所見即所得;通過網(wǎng)絡(luò)實現(xiàn)多專業(yè)實時協(xié)同設(shè)計,模擬真實的現(xiàn)場環(huán)境,建立一個詳細的3D數(shù)字工廠模型;交互設(shè)計過程中,實時三維碰撞檢查,自動地在元件和各專業(yè)設(shè)計之間進行碰撞檢查,保證設(shè)計成果的空間正確性;擁有獨立的數(shù)據(jù)庫結(jié)構(gòu),元件和設(shè)備信息全部可以存儲在參數(shù)化的元件庫和設(shè)備庫中,不依賴第三方數(shù)據(jù)庫;開放的開發(fā)環(huán)境,為用戶的二次開發(fā)提供了良好的平臺。 1.3 PML簡介 PML是指AVEVA Programmable Macro Language,是PDMS內(nèi)置的開發(fā)語言,隨著PDMS的升級,PML語言共經(jīng)歷了PML、PML2、PML .Net三個時代。 PML更像是PDMS命令的集合,功能強大,與PDMS無縫連接,同時具有簡化的用戶界面(GUI)。在管子創(chuàng)建、部件創(chuàng)建修改等許多方面都能方便的開發(fā),PDMS自身的很多功能也是使用PML編寫的。 PML2是PML的升級和加強,是基于面向?qū)ο蟮慕忉屝驼Z言,而不是面向?qū)ο蟮恼Z言。因為面向?qū)ο蟮恼Z言支持類、繼承、多態(tài)的概念,而PML2不支持繼承,但是可以對象組合。PML2中的對象(Objects)有成員變量和成員函數(shù),即屬性和方法,使得PML語言更加規(guī)范。 PML .Net是PML與.Net技術(shù)的融合,可以通過PML語言調(diào)用.Net語言編譯的DLL文件,擴大了PML的應用范圍,方便了與外部程序的溝通。 2 開發(fā)過程 2.1 編碼的確定 編碼即物質(zhì)編碼或材料編碼,是PDMS及其他三維設(shè)計軟件數(shù)據(jù)集成和數(shù)據(jù)管理的主線,同樣也是管道材料規(guī)范化管理的必經(jīng)之路。由于以往的分工、技術(shù)和標準不完善等原因,造成了埋地重力流管道材料編碼并未納入管道材料編碼的范疇,隨著國內(nèi)設(shè)計、制造標準的完善和工程設(shè)計規(guī)范要求的加強,給埋地重力流管道編碼成為可能和必然。埋地重力流管道材料種類多、管件型式復雜、連接形式變化多樣,部分標準中的管徑系列、壓力等級系列與石化標準、美國標準都不能兼容,同時還存在著未納入國家和行業(yè)標準的公司級標準圖集等內(nèi)容,因此根據(jù)材質(zhì)和用途,將材料編碼分為三類:C類,主要包括鑄鐵管子、管件;U類,主要包括塑料(襯塑)管子、管件;M類,無法歸類的特殊管子、管件,如地漏、清掃口等。根據(jù)材料編碼規(guī)則,將設(shè)計標準、材質(zhì)標準、連接形式、壓力等級、特殊要求等信息以編碼的形式組合成唯一的標識碼,如圖示: 2.2 元件庫的開發(fā) 2.2.1元件庫是PDMS模型的基礎(chǔ),是管道材料設(shè)計標準的外在體現(xiàn),決定了管子、管件在模型中以何種形狀出現(xiàn)、在管段圖(ISODraft)和平面圖(Draft)中的形狀與標注方法,同時也是等級庫的根源所在。 根據(jù)編碼的分類和設(shè)計依據(jù),管道元件的元件庫主要采用以下幾個標準: GB/T 13295 水及燃氣管道用球墨鑄鐵管、管件和附件 CJ/T 189 鋼絲網(wǎng)骨架塑料(聚乙烯)復合材料管材及管件 GB/T 10002.1 給水用硬聚氯乙烯(PVC_U)管材 GB/T 10002.2 給水用硬聚氯乙烯(PVC_U)管件 GB/T 5836.1 建筑排水用硬聚氯乙烯(PVC-U)管材 GB/T 5836.2 建筑排水用硬聚氯乙烯(PVC-U)管件 2.2.2為了方便開發(fā)與建模,對元件做以下約定: 1)在能夠表達外形的前提下,盡可能將元件的外形簡化,方便建模; 2)元件的GTYPE(Generic Type)、SKEY(Symbol Key)、連接形式盡量向已有的形式靠近,減少自定義的內(nèi)容,提高兼容性; 3)對于承插焊、插接、熱熔、粘結(jié)等形式,根據(jù)目前的應用深度,統(tǒng)一歸為承插焊(SWF)連接類型; 4)元件庫中同時添加變長管(TUBE)和定長管(FTUBE)兩種管道,既能滿足鑄鐵、水泥管分段生產(chǎn)的特性,也能滿足較短管道的布置; 2.2.3 創(chuàng)建元件: 1)首先定義數(shù)據(jù)集(Data Set),數(shù)據(jù)集是構(gòu)成元件外形參數(shù)的集合,公稱直徑是必要的參數(shù),其他參數(shù)根據(jù)外形的要求添加; 2)第二步定義點集(Point Set),根據(jù)元件的SKEY,確定要使用的點的個數(shù)和各個點的功能,具有連接屬性的點就需要定義管徑和連接形式,參考點用來方便構(gòu)造元件外形; 3)第三步定義形集(Geometry),依據(jù)元件的外形和點集的設(shè)置,使用圓柱體、正方體、球體等基本體進行外形的構(gòu)建,如果需要更加形象,可以使用負實體進行開孔開洞等; 4)第四步在Category中輸入元件各管徑對應的數(shù)值; 5)第五步如果此元件有螺栓,應在螺栓集(Bolt Set)中定義或關(guān)聯(lián)螺栓表; 6)最后生成完整的元件,如下圖 2.3 ISODraft的定制開發(fā) 由于元件庫創(chuàng)建時基本上使用的都是已有的SKEY,因此對于PDMS提供的的ISODraft樣式不需要進行過多的定制,就能滿足需求,只需要在以下方面進行改進: 1)為了使軸測圖顯示更多的管道信息,便于現(xiàn)場埋地重力流管道的施工,將軸測圖的圖紙幅面定義為A2; 2)為了與ISO圖風格一致,將軸測圖Material List定制在圖紙右側(cè); 3)將需要的管道信息如溫度、壓力等輸出到指定的位置; 4)為方便設(shè)計建模,單個裝置使用的是設(shè)計坐標系統(tǒng),即將PDMS的坐標原點作為裝置的坐標原點,但是埋地重力流管道一般以工廠坐標作進行定位,在不改變模型坐標的情況下,將ISO圖和軸測圖輸出坐標轉(zhuǎn)換為工廠坐標。在模型中創(chuàng)建一個設(shè)備(EQUI)且命名為“PLANT_ZERO”,將其坐標定義為工廠坐標的反向坐標,然后在設(shè)置文件的Annotation選項中,將Origin Coordinates 更改為 “ID Name”選項,且ID Name For Origin設(shè)置為“EQUI PLANT_ZERO”,經(jīng)測試輸出坐標為工廠坐標,如下圖: 2.4 Draft模塊的二次開發(fā) Draft模塊的開發(fā)是此次開發(fā)的重點和難點。以往的埋地重力流管道圖紙只包含平面圖,不能完整地表達埋地重力流管網(wǎng)的整體布置和具體的管件連接。ISODraft模塊生成的軸測圖完美解決了管件的連接問題,使用Draft模塊的功能和PML語言進行二次開發(fā),生成埋地重力流管道軸測圖,更好地指導現(xiàn)場施工和驗收。 2.4.1首先要先清楚需要開發(fā)出什么樣的軸測圖,圖面的標注、標示等信息應達到什么樣的深度,通過深入討論,形成了如下共識: 1)軸測圖不是平面圖也不是通常意義的ISO圖,不需要詳盡的表達連接方式、間隔尺寸等細節(jié)問題,要著重體現(xiàn)埋地重力流管道網(wǎng)絡(luò)體系的連接情況,因此對尺寸標注、元件標示的詳細程度要求較低; 2)圖面應充分表達各管線之間、井與井之間的連接關(guān)系、地上管線與地下管線的連接關(guān)系,以及裝置與裝置、裝置與管網(wǎng)之間的連接關(guān)系; 3)圖面應表達漏斗、地漏、清掃口的標高信息; 4)應體現(xiàn)關(guān)鍵的彎頭點標高信息,方便計算傾斜管道鋪設(shè)的起止點標高; 5)應體現(xiàn)井與管道接口的標高、方位,以及接口套管的數(shù)量; 6)應體現(xiàn)井蓋的方位。 2.4.2為了實現(xiàn)軸測圖預想的功能,在Draft出圖時對以下方面做了配置和開發(fā): 1)將管道號按照分支(BRAN)的頭(HEAD)進行管號標注,為了避免圖面太雜亂,將管道用序號進行標示,然后在圖中生成序號與管號的對照表,根據(jù)分支的頭尾連接關(guān)系,很容易查詢管道的連接關(guān)系; 2)使用PML編程,對軸測方向上的管道進行尺寸標注,間距小于500mm的標注將被省略; 3)使用PML編程對漏斗、地漏、清掃口進行標高標注; 4)給特殊位置的彎頭添加自定義屬性(UDA),如“:SETPOINT”,在使用PML編程時,所有屬性值為“Y”的彎頭,進行標高標注; 5)為了表達管道與井的連接關(guān)系和接口的標高,使用設(shè)備(EQUI)為井建模,與管道的接口使用對焊(BWD)形式的管嘴(NOZZ)進行建模,這樣管道與井的接口就會體現(xiàn)在軸測圖中,再使用PML編程將接口的標高、方位生成列表;每個接口對應一個套管,將套管按直徑進行匯總; 6)使用管嘴(NOZZ)為井蓋進行建模,命名時使用特殊命名,如包含“JG”特殊字符,與其他接口區(qū)別開,再使用PML編程獲取其相對于井本體的方位角度,一并列入接口表,如圖二所示;最終的軸測圖效果如圖一所示(由于本文圖幅限制,僅體現(xiàn)了局部)。 圖一 軸測圖 圖二 井口表 2.4.3部分代碼 1)創(chuàng)建管道數(shù)組 var !pipes append coll all pipe within $!limit for $!Idname do !n index !pipes !pipename = namn of $!pipes[$!n] !str = '$!n,$!pipename' !list.append(!str) 解釋:在管道列表(!ldname)中尋找在空間!limit內(nèi)的管道,添加到數(shù)組!pipes中,然后取出每個管道的名字!pipename,再將管道序號!n和管道號形成對應關(guān)系,追加到數(shù)組!list中。 2)創(chuàng)建需要標注的漏斗、清掃口、地漏數(shù)組 var !memb coll all bran mem for $!brans[$!m] do !mem value !mems !dtxr = dtxr of $!mem if(mat(!dtxr,'漏斗') gt 0 or mat(!dtxr,'清掃口') gt 0 or mat(!dtxr,'地漏') gt 0)then !memcoll.append(!mem) 解釋:遍歷分支(BRAN)中的每個成員,當描述中含有漏斗、清掃口、地漏時,將其添加到數(shù)組!memcoll中。 3)創(chuàng)建需要標注標高的UDA彎頭數(shù)組 var !elems coll all elbo with (:setpoint eq 'Y') for $!bran do !elem value !elems !epos = p0pos of $!elem var !name '$!elem' !epose = !epos.east !eposn = !epos.north !eposu = !epos.up 解釋:將分支(BRAN)中:setPoint屬性為“Y”的彎頭創(chuàng)建為一個數(shù)組!elems,遍歷每個彎頭,將彎頭的X、Y、Z坐標分別提取出來,便于生成標高標注。 4)創(chuàng)建井口表及井蓋數(shù)組 var !nozzs coll all nozz for $!equi do !nozz value !nozzs …… if(mat(!nozzname.part(3,'/'),'JG') gt 0)then !desc = '井蓋' 解釋:將設(shè)備(EQUI)中所有NOZZ創(chuàng)建為一個數(shù)組!nozzs,遍歷每個管嘴,將管嘴的X、Y、Z坐標分別提取出來,并將含有“JG”的管嘴標示為井蓋。 2.5 材料報表的定制開發(fā) PDMS自身帶有材料統(tǒng)計功能,但是其內(nèi)容與格式并不能滿足出版要求,AVEVA中國開發(fā)團隊很早就認識到這個問題,在其開發(fā)的工具集(Tookit)里面,加入了管道材料統(tǒng)計功能,生成一個*.CSV的材料表文件,基本滿足出版要求。為了使材料表更容易閱讀和檢查,我們又使用Visual Basic語言,根據(jù)編碼進行了分類匯總,生成最終的材料表。 3 改進與完善 通過我們對元件庫、等級庫、ISODraft模塊、Draft的開發(fā)和設(shè)置,已經(jīng)能生成滿足施工需要的埋地重力流管道軸測圖,很大程度上減少了錯漏碰缺的問題,且一定程度上解決了設(shè)計質(zhì)量與施工進度的沖突,但由于對PDMS還不是很了解,且PML編程水平有限,在以下方面還有改進的空間: 1)由于使用Draft模塊的切圖功能,不能形象的了解切圖區(qū)域,只能不斷嘗試,滿足圖面和圖框的要求,下一步可以設(shè)法從Design 模塊中切圖,然后再到Draft模塊中處理; 2)Draft模塊生成的圖紙,導出為DWG文件時,中文文字會出現(xiàn)亂碼,需要解決; 3)管道比較復雜時,尺寸標注、標高標注、管號標注比較密集,會出現(xiàn)交叉重疊的現(xiàn)象,導致圖面較亂,需要進一步解決。 4)為了盡快在工程項目中使用,在開發(fā)中忽略了一些數(shù)據(jù)的真實性,如連接形式的歸類、Skey的代用,都是此開發(fā)的瑕疵,需要在以后的維護中逐漸更正。 作者簡介: 宋繼偉 高級工程師,中國石油工程建設(shè)公司華東設(shè)計分公司 副總工程師 地址:山東省青島市市南區(qū)華嚴路2號 郵編:266001 參考文獻: 1. PDMS隨機文檔 《Software Customisation Guide》 2. PDMS隨機文檔 《DRAFT Administrator Application User Guide》 3. PDMS隨機文檔 《DRAFT User Guide》 |