黃忠金 朱家亮
(蘭州理工大學(xué)機(jī)電工程學(xué)院)
壓力容器是指盛裝氣體或者液體,承載一定壓力的密閉設(shè)備,其用途極為廣泛。 對(duì)于壓力容器來(lái)說(shuō),焊縫的布置是制造過(guò)程中關(guān)鍵的一個(gè)環(huán)節(jié),直接影響其承壓性能。 傳統(tǒng)的焊縫布置由人工進(jìn)行,易出錯(cuò),而且排布效果不一定最優(yōu)。 張立杰設(shè)計(jì)的壓力容器焊縫排版系統(tǒng)能生成尺寸無(wú)誤且能顯示焊縫位置信息的排版圖,其優(yōu)化目標(biāo)為環(huán)縫上的管嘴數(shù)量最少或環(huán)縫與管嘴的弦長(zhǎng)總和最短,并且默認(rèn)使用定好規(guī)格的鋼板[1];李飛設(shè)計(jì)的系統(tǒng)以倉(cāng)庫(kù)中的剩余材料為基礎(chǔ)排版設(shè)計(jì),優(yōu)化的主要目標(biāo)為組成壓力容器的鋼板數(shù)量[2]。二者的排版效果圖均為二維圖,不能直觀地反映在三維模型上,容易出錯(cuò),設(shè)計(jì)效率低。
壓力容器制造中,焊縫排版位置的合理性和鋼板規(guī)格的統(tǒng)一性才是設(shè)計(jì)的重點(diǎn)。 筆者基于SolidWorks 二次開(kāi)發(fā)方式實(shí)現(xiàn)的焊縫排版系統(tǒng),是通過(guò)可視化窗口輸入壓力容器的設(shè)計(jì)數(shù)據(jù),自動(dòng)建立三維模型, 同時(shí)以減少鋼板的數(shù)量和規(guī)格為優(yōu)化目標(biāo),計(jì)算出最佳的焊縫布置位置,并將焊縫進(jìn)行模型展示,以提高焊縫排版的設(shè)計(jì)效率。
焊縫的排版問(wèn)題可以抽象為裝填布局問(wèn)題(Packing Problem)與切割布局問(wèn)題(Cutting Problem)——將一系列小物體(item)裝入一個(gè)或一系列大物體(object)中,物體切割下來(lái),在滿(mǎn)足約束條件下以充分利用大物體的空間為主要目標(biāo)。 其中,約束要求小物體的某個(gè)子集合或全部裝入大物體中并且要求小物體間無(wú)重疊。 有時(shí),目標(biāo)函數(shù)不僅僅是空間利用率單一目標(biāo)函數(shù),而是多目標(biāo)函數(shù)[3]。
切割與裝填布局問(wèn)題分為一維、二維和三維布局3 種[4],焊縫排版屬于二維布局的矩形排版問(wèn)題。 矩形排版算法主要分為啟發(fā)式算法和精確算法兩種,在約束條件較少或裝入的空間較小的時(shí)候,一般采用分支定界算法、動(dòng)態(tài)規(guī)劃算法及貪心算法等精確算法,這些算法能在可接受時(shí)間內(nèi)找出最優(yōu)解。 當(dāng)約束條件較多時(shí),采用基于經(jīng)驗(yàn)基礎(chǔ)上設(shè)計(jì)的啟發(fā)式算法,其優(yōu)點(diǎn)是可以在可接受的時(shí)間和空間內(nèi)得出結(jié)果并且一般為較優(yōu)解,其缺點(diǎn)為無(wú)法保證不會(huì)獲得較差的解。
作為一種二維布局問(wèn)題的矩形排版是一個(gè)NP 完全類(lèi)的優(yōu)化組合問(wèn)題[5~9]。 Bortfeldt A 把 問(wèn)題分解為二維的裝箱和背包問(wèn)題,結(jié)合啟發(fā)式算法和樹(shù)搜索算法得以解決[10]。 鄧應(yīng)波采用改進(jìn)的剩余矩形填充算法和遺傳算法相結(jié)合的混合算法,提高了排版利用率[11]。 楊衛(wèi)波等采用改進(jìn)的自適應(yīng)遺傳模擬退火算法IAGSA,提高了算法效率和收斂至全局最優(yōu)的速度[12]。 由于本壓力容器焊縫的約束較少,因此精確算法在求解小規(guī)模的優(yōu)化組合問(wèn)題上具有巨大的優(yōu)勢(shì),且能夠迅速地得到最優(yōu)解。 在精確算法中,貪心算法是一種對(duì)某些求最優(yōu)解問(wèn)題更簡(jiǎn)單、 更迅速的設(shè)計(jì)算法,它采用迭代的方式,一步一步地將問(wèn)題的規(guī)模不斷簡(jiǎn)化, 并且在每步簡(jiǎn)化的同時(shí)做出貪心的選擇,進(jìn)而得到問(wèn)題的最優(yōu)解。
由于焊縫排版問(wèn)題只是針對(duì)壓力容器的筒體部分,不用對(duì)頂部和底部封頭進(jìn)行討論,與筒體關(guān)聯(lián)且影響焊縫排版的特征均可歸納為圓形開(kāi)口,因此選用具有圓形開(kāi)口的筒體部分進(jìn)行壓力容器的模型表示。 筆者采用SolidWorks 二次開(kāi)發(fā)的方法建立模型, 通過(guò)可視化窗口輸入數(shù)據(jù),運(yùn)用SolidWorks 的API 接口建立功能模塊[13]。
使用SolidWorks 的用戶(hù)自定義特征庫(kù)功能,將需要經(jīng)常使用的特征進(jìn)行定義后存入特征庫(kù),再次使用時(shí), 只要從特征庫(kù)中選擇相應(yīng)的特征,進(jìn)行相關(guān)設(shè)置, 就能將特征精確地創(chuàng)建在模型上。以圓孔為例建立特征庫(kù)和使用的步驟為:第1步,將常用的特征完全定義后選中,在特征庫(kù)界面中選擇“添加到庫(kù)”后,點(diǎn)擊“確定”;第2 步,將選用特征拖至待用的模型上,設(shè)置基準(zhǔn)、定位和大?。▓D1),點(diǎn)擊“確定”后,完成特征的建立。
圖1 特征庫(kù)使用界面
通常情況下, 一臺(tái)壓力容器由若干筒節(jié)組成,筒節(jié)與筒節(jié)組合產(chǎn)生的焊縫稱(chēng)為環(huán)縫;筒節(jié)是由鋼板進(jìn)行彎卷后焊接固定成的,這種連接同一塊鋼板的兩條邊形成筒節(jié)所產(chǎn)生的焊縫稱(chēng)為縱縫。
焊縫的排版是在滿(mǎn)足工藝要求 (開(kāi)口位置等)的前提下,對(duì)環(huán)縫和縱縫進(jìn)行優(yōu)化排列,以達(dá)到提高壓力容器工作性能的目的。 另外, 根據(jù)GB 150—2011《壓力容器》的要求,在滿(mǎn)足實(shí)際生產(chǎn)尺寸需求的前提下,依然需要遵守以下準(zhǔn)則:
a. 每段筒節(jié)的長(zhǎng)度應(yīng)不小于300 mm;
b. 筒體的環(huán)焊縫應(yīng)該避開(kāi)開(kāi)口區(qū)域和補(bǔ)強(qiáng)圈,對(duì)于壓力容器,要求在開(kāi)口中心2 倍直徑范圍內(nèi)不得有焊縫, 否則需要與工藝人員溝通,增加探傷程序;
c. 不得有十字焊縫;
d. 焊縫數(shù)量越少越好;
e. 為了方便進(jìn)行加工,板材的規(guī)格應(yīng)當(dāng)盡可能一致;
f. 零部件開(kāi)口的安全距離 (以中心為起點(diǎn))不小于2r(r是零部件的公稱(chēng)尺寸)。
環(huán)縫排版設(shè)計(jì)的實(shí)質(zhì)就是確定一臺(tái)壓力容器需要由多少個(gè)筒節(jié)組成和每個(gè)筒節(jié)的長(zhǎng)度。 以圖2 所示的壓力容器環(huán)縫排版為例,對(duì)相應(yīng)的設(shè)計(jì)算法進(jìn)行說(shuō)明。
圖2 壓力容器環(huán)縫排版示意圖
第2 步,根據(jù)壓力容器設(shè)計(jì)規(guī)則中每個(gè)筒節(jié)必須大于300 mm 的要求, 同時(shí)考慮常用鋼板的實(shí)際寬度, 刪除理想寬度中1 500~2 500 mm 之間的數(shù)據(jù)。
第3 步, 將數(shù)據(jù)按照大小順序進(jìn)行排列后選取中間數(shù),并稱(chēng)之為最佳鋼板寬度。在設(shè)定鋼板寬度時(shí)優(yōu)先選用此值,就會(huì)減少鋼板規(guī)格的多樣性。
第4 步, 將最佳鋼板寬度作為鋼板1 的寬度,如果與下一塊鋼板的焊縫位置落在距離中間位置1 較遠(yuǎn)的地方,那么將位置1 與位置2 間的距離作為鋼板的寬度,同時(shí)將此寬度加入實(shí)際鋼板寬度的數(shù)據(jù)中。 如果焊縫與位置1 間的距離在可接受范圍之內(nèi),則鋼板1 的寬度就為最佳鋼板寬度。 本設(shè)計(jì)的可接受范圍根據(jù)兩孔安全距離間的最短距離進(jìn)行設(shè)定的, 以開(kāi)口A 和B 為例,根據(jù)準(zhǔn)則f, 位置7 到位置8 之間為開(kāi)口A 的安全距離, 位置9 到位置10 之間為開(kāi)口B 的安全距離,兩孔安全距離中的最短距離就是位置8 到位置9。 當(dāng)安全距離的最短距離不大于200 mm 時(shí),只要焊縫落在位置8 與位置9 之間,就認(rèn)為焊縫與位置1 的距離在可接受范圍內(nèi);當(dāng)最短距離大于200 mm 時(shí), 焊縫需要落在位置8 與位置9 之間的1/4~3/4 處, 才認(rèn)為焊縫與位置1 的距離在可接受范圍內(nèi)。
第5 步,使用最佳鋼板寬度作為鋼板2 的寬度,如果焊縫距離位置2 較遠(yuǎn),那么從實(shí)際鋼板寬度中從大到小依次作為鋼板2 的寬度,如果仍然沒(méi)有合適寬度的鋼板,則將上一個(gè)焊縫到位置2 的距離作為鋼板2 的寬度, 同時(shí)將此寬度數(shù)據(jù)加入到實(shí)際鋼板寬度中。
第6 步,重復(fù)第5 步,直到所有替換的鋼板寬度加起來(lái)等于壓力容器總長(zhǎng)度。
第7 步,如果最后一塊鋼板的寬度小于300 mm,那么將最后兩塊鋼板合二為一。
圖3 為該算法的設(shè)計(jì)流程, 其中n的初始值為1。
圖3 環(huán)縫排版設(shè)計(jì)流程
縱縫排版設(shè)計(jì), 采用與張立杰的設(shè)計(jì)方法[1]相類(lèi)似的縱縫算法:
第1 步, 由于壓力容器為360°的圓筒形,則確定壓力容器任意位置為初始角度0°,開(kāi)始進(jìn)行第1 套縱縫設(shè)計(jì)方案。 將第1 塊鋼板焊縫布置在0°,若此焊縫穿過(guò)開(kāi)口位置,則將焊縫布置的角度加1°,直到不穿過(guò)開(kāi)口位置為止。
2)設(shè)備無(wú)故障而裝置發(fā)信,則存在誤報(bào)而誤報(bào)的情況就可能存在裝置接線(xiàn)組別錯(cuò)誤、定值整定錯(cuò)誤、裝置誤動(dòng)或是插件問(wèn)題等情況;出現(xiàn)這些情況就需要更進(jìn)一步的檢查,停電處理通知專(zhuān)業(yè)班組。
第2 步,將第1 塊鋼板的焊縫角度位置加上90、180、270°作為第2 塊鋼板可能的焊縫位置,若3 個(gè)角度有穿過(guò)開(kāi)口位置的,則直接剔除。計(jì)算剩余角度與第1 塊鋼板的焊縫與第2 塊鋼板上開(kāi)口中心間的弦長(zhǎng)距離, 選出距離最長(zhǎng)的角度,作為第2 塊鋼板的焊縫位置。
第3 步,重復(fù)第2 步,直到所有鋼板的縱縫布置完畢。
第4 步,對(duì)上述算出的弦長(zhǎng)進(jìn)行累加,得到總弦長(zhǎng)。
第5 步,將初始角度加1°,進(jìn)行第2 套縱縫設(shè)計(jì)方案,直到初始角度為359°。
第6 步,從所有的焊縫設(shè)計(jì)方案中,選取總弦長(zhǎng)最長(zhǎng)的一套設(shè)計(jì)方案作為最終方案。
圖4 為該算法的設(shè)計(jì)流程,其中n 的初始值為0°,m初始值為2。
圖4 縱縫排版設(shè)計(jì)流程
以工程實(shí)例來(lái)驗(yàn)證算法的有效性。 某壓力容器的直徑為3 000 mm,內(nèi)徑為2 800 mm,筒體長(zhǎng)度為15 000 mm,筒體上開(kāi)口參數(shù)見(jiàn)表1。
表1 筒體上開(kāi)口參數(shù)
在SolidWorks 二次開(kāi)發(fā)過(guò)程中,建立典型的設(shè)計(jì)模型基礎(chǔ)后, 通過(guò)變量參數(shù)來(lái)控制模型,進(jìn)行模型的建立,是一種主流的開(kāi)發(fā)方式。 建立筒體的基礎(chǔ)模型后,對(duì)其邊和面進(jìn)行命名,方便特征插入時(shí)選擇基準(zhǔn)。 為了增加筒體的展示效果,有展開(kāi)和圓筒兩種形式(圖5)。圓筒展示時(shí),隱藏展開(kāi)式的相關(guān)特征;反之,同理。
圖5 筒節(jié)展開(kāi)前后的界面
對(duì)庫(kù)特征進(jìn)行調(diào)用時(shí),首先使用Initialize 進(jìn)行特征的插入, 之后采用GetEntityByName 對(duì)基準(zhǔn)進(jìn)行選擇,最后通過(guò)SetSystemValue3 對(duì)特征的定位尺寸和大小尺寸進(jìn)行確定。
在C# 語(yǔ)言中foreach 功能可以方便地實(shí)現(xiàn)一組數(shù)據(jù)的遍歷, 將中間位置存儲(chǔ)在鏈表中間后,使用foreach 語(yǔ)句嵌套著for 循環(huán)語(yǔ)句的方式能在保證不重復(fù)進(jìn)行兩兩組合的前提下,進(jìn)行數(shù)據(jù)的計(jì)算。 經(jīng)數(shù)據(jù)篩選得到經(jīng)典鋼板寬度后,同樣使用foreach 語(yǔ)句進(jìn)行判斷完成設(shè)計(jì)。
環(huán)縫設(shè)計(jì)算法:
縱縫設(shè)計(jì)算法:
焊縫的三維模型展示同樣使用調(diào)用設(shè)計(jì)庫(kù)的方式進(jìn)行,將焊縫簡(jiǎn)化成長(zhǎng)條,使用已經(jīng)得出的設(shè)計(jì)方案的數(shù)據(jù),對(duì)焊縫的定位尺寸、大小尺寸和基準(zhǔn)進(jìn)行確定,而后進(jìn)行特征生成,排版效果如圖6 所示,其中圓點(diǎn)為圓形開(kāi)口,水平方向和垂直方向的長(zhǎng)條特征均為焊縫位置。
圖6 焊縫排版展示
筆者提出的三維環(huán)境下壓力容器焊縫排版算法,在減少鋼板數(shù)量、規(guī)格等前提下,可以確定最大化提升壓力容器工作能力的合理焊縫位置,并通過(guò)SolidWorks 二次開(kāi)發(fā)的方式對(duì)該算法進(jìn)行驗(yàn)證,效果令人滿(mǎn)意。