管道設(shè)計CAD系統(tǒng)中重量重心計算
eryar@163.com
Abstract. 管道設(shè)計CAD系統(tǒng)中都有涉及到重量重心計算的功能,這個功能得到的重心數(shù)據(jù)主要用于托盤式造船時方便根據(jù)重心設(shè)置吊裝配件。重量信息主要用于采購訂貨。本文主要介紹相關(guān)軟件中重量重心功能,及重量重心計算實現(xiàn)原理。最后結(jié)合OpenCASCADE計算管道模型重量重心來驗證。
Key Words. CoG, CentreOfMass, Piping CAD, Piping Design
1.Introduction
船舶設(shè)計系統(tǒng)和工廠設(shè)計系統(tǒng)等都有管道設(shè)計功能。在船舶建造過程中,工程最大的是船體建造,其次是船舶管系的制造和安裝。
建國初期船舶管系的管子制造和安裝要等船體基本成形,機械設(shè)備都基本到位,船船管工才能拿著原理圖和詳細設(shè)計的管子走向圖,到施工現(xiàn)場用直徑6mm或8mm的鐵絲樣條取樣,把樣條彎制成想要的形狀,再帶回車間下料,上彎管機按樣條形狀進行彎制,然后領(lǐng)管接頭,再上船到施工現(xiàn)場進行管子試裝。試裝時管接頭與管子用點焊連接,再把試裝管子拆下來,帶回車間打磨,泵壓,表面處理,最后上船安裝。這種方法叫管子制造現(xiàn)場取樣法,這種工藝方法建造周期長;管工的勞動強度大;管子走向不合理,與其他專業(yè)如電纜,風管等容易碰撞,返工量大,造成人力物力浪費;管子現(xiàn)場試裝的作業(yè)環(huán)境比車間差,造成管子建造質(zhì)量差。
為了縮短建造周期,提高造船質(zhì)量,單從船舶管系這個角度講,必須要有創(chuàng)新去提高效率。
60~70年代,在木地板上以1:1的比例畫各種船體背景,畫各種機械設(shè)備外形及管路接口,進行管子系統(tǒng)放樣。當時用的計算工具是計標尺,這種方法需要的工作場地大,放樣人員蹲在地上進行操作,勞動強度很大。
70~80年代,在工作臺上用長滌倫薄膜以1:10的比例畫船體背景,畫各種機械設(shè)備外形及與管路接口,進行管子系統(tǒng)放樣,這種方法比上種工作場地小,減輕了放樣人員的勞動強度。
80~90年代,把滌倫薄膜鋪設(shè)在圖板上,以1:20的比例分區(qū)綜合放樣。所謂綜合放樣,就是在小小的繪圖板上,船體,電氣,輪機三大專業(yè)的放樣設(shè)計一起進行,綜合協(xié)調(diào),把很多將會在生產(chǎn)中出現(xiàn)的問題,在繪圖板上解決。在這個舞臺上,放樣人員按建造方針,管理部門和生產(chǎn)車間的要求,提供各種建造階段的施工圖紙和托盤。由于當時沒有采用計算機放樣,有些好的設(shè)計要求,靠設(shè)計部門在有限的設(shè)計周期內(nèi)很難實現(xiàn),這個時期只是生產(chǎn)設(shè)計的初期階段。
90年代后全國較大的造船廠家都用計算機放樣,把設(shè)計圖中的管子走向數(shù)據(jù)、管件數(shù)據(jù)、管路數(shù)據(jù)等輸入計算機。通過計算機輔助設(shè)計,解決了管子零件彎管程序計算量很大的難題和出圖量很大的難題,大縮短生產(chǎn)設(shè)計的周期,提高了設(shè)計質(zhì)量。
現(xiàn)在船廠、設(shè)計院都是采用計算機輔助設(shè)計系統(tǒng)進行管道設(shè)計。從上述建造方法的進程可以看出通過創(chuàng)新,利用計算機這個強大工具改進了生產(chǎn)方式,提高了效率和質(zhì)量。
2.Cog in PDMS/AVEVA Marine
在PDMS/AVEVA Marine中提供了計算模型重量重心Weight and Centre of Gravity(CoG)及表面積的功能。如下圖所示:

重量重心的功能是在托盤造船、模塊造船的基礎(chǔ)上產(chǎn)生的需求。有了重量重心數(shù)據(jù),就可以便于組織托盤、模塊的吊裝。
PDMS/AVEVA Marine中統(tǒng)計重量重心很簡單,只需要添加需要統(tǒng)計的SITE、ZONE或者PIPE,BRANCH就可以計算出重量重心。
在PDMS/AVEVA Marine中統(tǒng)計重量前,需要完善管件庫與特性庫的關(guān)聯(lián)。主要需要定義管件的質(zhì)量及管子的線密度信息。
有了管件的質(zhì)量及管子的線密度數(shù)據(jù),如何計算管道的重量重心呢?
3.Com in OpenCASCADE
OpenCASCADE中提供了計算幾何體的全局屬性的功能,可計算曲線、曲面或幾何體的質(zhì)量Mass,質(zhì)心(CentreOfMass),轉(zhuǎn)動慣量等。所以可以使用OpenCASCADE來計算重量重心。
下面來對管道模型的重量重心計算進行分析。地球表面或表面附近的物體會受到地心引力作用。物體的諸微元所受到的地心引力由于距離地心很遠,可看成是一組平行力系。這組平行力系有一個合力,合力的大小稱為物體的重力。合力的作用線有一個特性,即不論物體相對地球如何放置,合力作用線總會通過一點,這個點稱為物體的重心。物體重心相對物體的位置不因物體空間位置而改變。
設(shè)在空間中有N個質(zhì)點,它們分別位于點(x1,y2,z1),(x2,y2,z2),... (xn, yn, zn)處,質(zhì)量分別為m1, m2, ... Mn。由力學(xué)可知,該質(zhì)點系的重心坐標為:

根據(jù)重心的計算公式,結(jié)合管道模型的特點,可以做如下假設(shè):
l 將管子附件看成一個質(zhì)點,質(zhì)點坐標為管子附件的空間位置,質(zhì)量為管件的質(zhì)量;
l 將管段長度乘以線密度得到質(zhì)量后再將其看成一個質(zhì)點,質(zhì)點坐標為管段的中心點;
下面使用OpenCASCADE中的類來計算管道系統(tǒng)的質(zhì)量和質(zhì)心坐標。有了質(zhì)量和質(zhì)心,乘以重力加速度即可以得到重量重心。計算一段簡單管道模型的重量重心,管道模型如下圖所示。模型從下到上對應(yīng)的坐標及質(zhì)量如下:
l 法蘭Flange: Position X 26104mm Y -11441mm Z 19246.184mm, weight 19.815kg
l 管段Tubi:起點坐標:Position X 26104mm Y -11441mm Z 19316.184mm
終點坐標:Position X 26104mm Y -11441mm Z 21554.039mm
線密度:0.0315 kg/m
l 三通Tee: Position X 26104mm Y -11441mm Z 21770.039mm, weight 11kg
l 管段Tubi: 起點坐標:Position X 26104mm Y -11441mm Z 21986.039mm
終點坐標:Position X 26104mm Y -11441mm Z 22828.5mm
線密度:0.0315 kg/m
l 法蘭Flange: Position X 26104mm Y -11441mm Z 22898.5mm, weight 19.815kg
l 墊片Gasket:Position X 26104mm Y -11441mm Z 22898.5mm, weight 1.14kg
在AVEVA Marine中計算的總質(zhì)量為:148.80kg,
重心坐標為:X 26104.00mm Y -11441.00mm Z 21074.10mm

在OpenCASCADE中的計算代碼如下:
/*
Copyright(C) 2017 Shing Liu(eryar@163.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#include <ElCLib.hxx>
#include <gce_MakeLin.hxx>
#include <GProp_GProps.hxx>
#include <GProp_PGProps.hxx>
#include <GProp_CelGProps.hxx>
#pragma comment(lib, "TKernel.lib")
#pragma comment(lib, "TKMath.lib")
#pragma comment(lib, "TKG2d.lib")
#pragma comment(lib, "TKG3d.lib")
#pragma comment(lib, "TKGeomBase.lib")
// Centre of Mass of pipeline model.
void testCom(void)
{
GProp_GProps aTool;
GProp_PGProps aCompProps;
// add component as point.
// add flange: Position X 26104mm Y -11441mm Z 19246.184mm, weight 19.815kg
aCompProps.AddPoint(gp_Pnt(26104.0, -11441.0, 19246.184), 19.815);
// add tee: Position X 26104mm Y -11441mm Z 21770.039mm, weight 11kg
aCompProps.AddPoint(gp_Pnt(26104.0, -11441.0, 21770.039), 11.0);
// add flange: Position X 26104mm Y -11441mm Z 22898.5mm, weight 19.815kg
aCompProps.AddPoint(gp_Pnt(26104.0, -11441.0, 22898.5), 19.815);
// add gasket: Position X 26104mm Y -11441mm Z 22898.5mm, weight 1.14kg
aCompProps.AddPoint(gp_Pnt(26104.0, -11441.0, 22898.5), 1.14);
aTool.Add(aCompProps);
// add two pipe as line curve.
// add tubi: 起點坐標:Position X 26104mm Y -11441mm Z 19316.184mm
// 終點坐標:Position X 26104mm Y - 11441mm Z 21554.039mm
// 線密度:0.0315 kg/m
gp_Pnt aPs1(26104.0, -11441.0, 19316.184);
gp_Pnt aPe1(26104.0, -11441.0, 21554.039);
gp_Lin aLine1 = gce_MakeLin(aPs1, aPe1).Value();
GProp_CelGProps aTubiProp1;
aTubiProp1.Perform(aLine1, ElCLib::Parameter(aLine1, aPs1), ElCLib::Parameter(aLine1, aPe1));
aTool.Add(aTubiProp1, 0.0315);
// add tubi: 起點坐標:Position X 26104mm Y -11441mm Z 21986.039mm
// 終點坐標:Position X 26104mm Y - 11441mm Z 22828.5mm
// 線密度:0.0315 kg/m
gp_Pnt aPs2(26104.0, -11441.0, 21986.039);
gp_Pnt aPe2(26104.0, -11441.0, 22828.5);
gp_Lin aLine2 = gce_MakeLin(aPs2, aPe2).Value();
GProp_CelGProps aTubiProp2;
aTubiProp2.Perform(aLine2, ElCLib::Parameter(aLine2, aPs2), ElCLib::Parameter(aLine2, aPe2));
aTool.Add(aTubiProp2, 0.0315);
gp_Pnt aPc = aTool.CentreOfMass();
std::cout << "Mass: " << aTool.Mass() << std::endl;
std::cout << "CentreOfMass: " << aPc.X() << ", " << aPc.Y() << ", " << aPc.Z() << std::endl;
}
int main(int argc, char* argv[])
{
testCom();
return 0;
}
計算結(jié)果如下圖所示:

與在AVEVA Marine中計算結(jié)果一致。
4.Conclusion
在船舶設(shè)計CAD系統(tǒng)和工廠設(shè)計CAD系統(tǒng)中都有管道的輔助設(shè)計,其中都有統(tǒng)計管道模型重量重心的功能。根據(jù)重心的計算公式,將管道模型中的管件簡化為質(zhì)點,再利用公式直接計算。最后在OpenCASCADE中實現(xiàn)重心及總質(zhì)量的計算,計算結(jié)果與AVEVA Marine一致。
OpenCASCADE還可以計算任意曲線、曲面的重心及質(zhì)量、轉(zhuǎn)動慣量等。這些功能又是如何實現(xiàn)的呢?這個問題留給大家思考。
通過使用OpenCASCADE的功能,可以體會其編程風格。
5.References
1.同濟大學(xué)數(shù)學(xué)教研室. 高等數(shù)學(xué)(下冊). 高等教育出版社
2.單輝祖, 謝傳峰. 工程力學(xué). 高等教育出版社