posts - 346, comments - 537, trackbacks - 0, articles - 0

管道设计CAD系统中重量重心计算

eryar@163.com

Abstract. 管道设计CAD系统中都有涉及到重量重心计算的功能,这个功能得到的重心数据主要用于托盘式造船时方便根据重心设置吊装配件。重量信息主要用于采购订货。本文主要介绍相关软件中重量重心功能,及重量重心计算实现原理。最后结合OpenCASCADE计算管道模型重量重心来验证。

Key Words. CoG, CentreOfMass, Piping CAD, Piping Design

1.Introduction

船舶设计系统和工厂设计系统等都有管道设计功能。在船舶建造过程中,工程最大的是船体建造,其次是船舶管系的制造和安装。

建国初期船舶管系的管子制造和安装要等船体基本成形,机械设备都基本到位,船船管工才能拿着原理图和详细设计的管子走向图,到施工现场用直径6mm或8mm的铁丝样条取样,把样条弯制成想要的形状,再带回车间下料,上弯管机按样条形状进行弯制,然后领管接头,再上船到施工现场进行管子试装。试装时管接头与管子用点焊连接,再把试装管子拆下来,带回车间打磨,泵压,表面处理,最后上船安装。这种方法叫管子制造现场取样法,这种工艺方法建造周期长;管工的劳动强度大;管子走向不合理,与其他专业如电缆,风管等容易碰撞,返工量大,造成人力物力浪费;管子现场试装的作业环境比车间差,造成管子建造质量差。

为了缩短建造周期,提高造船质量,单从船舶管系这个角度讲,必须要有创新去提高效率。

60~70年代,在木地板上以1:1的比例画各种船体背景,画各种机械设备外形及管路接口,进行管子系统放样。当时用的计算工具是计标尺,这种方法需要的工作场地大,放样人员蹲在地上进行操作,劳动强度很大。

70~80年代,在工作台上用长涤伦薄膜以1:10的比例画船体背景,画各种机械设备外形及与管路接口,进行管子系统放样,这种方法比上种工作场地小,减轻了放样人员的劳动强度。

80~90年代,把涤伦薄膜铺设在图板上,以1:20的比例分区综合放样。所谓综合放样,就是在小小的绘图板上,船体,电气,轮机三大专业的放样设计一起进行,综合协调,把很多将会在生产中出现的问题,在绘图板上解决。在这个舞台上,放样人员按建造方针,管理部门和生产车间的要求,提供各种建造阶段的施工图纸和托盘。由于当时没有采用计算机放样,有些好的设计要求,靠设计部门在有限的设计周期内很难实现,这个时期只是生产设计的初期阶段。

90年代后全国较大的造船厂家都用计算机放样,把设计图中的管子走向数据、管件数据、管路数据等输入计算机。通过计算机辅助设计,解决了管子零件弯管程序计算量很大的难题和出图量很大的难题,大缩短生产设计的周期,提高了设计质量。

现在船厂、设计院都是采用计算机辅助设计系统进行管道设计。从上述建造方法的进程可以看出通过创新,利用计算机这个强大工具改进了生产方式,提高了效率和质量。

2.Cog in PDMS/AVEVA Marine

在PDMS/AVEVA Marine中提供了计算模型重量重心Weight and Centre of Gravity(CoG)及表面积的功能。如下图所示:

wps_clip_image-26573

重量重心的功能是在托盘造船、模块造船的基础上产生的需求。有了重量重心数据,就可以便于组织托盘、模块的吊装。

PDMS/AVEVA Marine中统计重量重心很简单,只需要添加需要统计的SITE、ZONE或者PIPE,BRANCH就可以计算出重量重心。

在PDMS/AVEVA Marine中统计重量前,需要完善管件库与特性库的关联。主要需要定义管件的质量及管子的线密度信息。

有了管件的质量及管子的线密度数据,如何计算管道的重量重心呢?

3.Com in OpenCASCADE

OpenCASCADE中提供了计算几何体的全局属性的功能,可计算曲线、曲面或几何体的质量Mass,质心(CentreOfMass),转动惯量等。所以可以使用OpenCASCADE来计算重量重心。

下面来对管道模型的重量重心计算进行分析。地球表面或表面附近的物体会受到地心引力作用。物体的诸微元所受到的地心引力由于距离地心很远,可看成是一组平行力系。这组平行力系有一个合力,合力的大小称为物体的重力。合力的作用线有一个特性,即不论物体相对地球如何放置,合力作用线总会通过一点,这个点称为物体的重心。物体重心相对物体的位置不因物体空间位置而改变。

设在空间中有N个质点,它们分别位于点(x1,y2,z1),(x2,y2,z2),... (xn, yn, zn)处,质量分别为m1, m2, ... Mn。由力学可知,该质点系的重心坐标为:

wps_clip_image-25847

根据重心的计算公式,结合管道模型的特点,可以做如下假设:

l 将管子附件看成一个质点,质点坐标为管子附件的空间位置,质量为管件的质量;

l 将管段长度乘以线密度得到质量后再将其看成一个质点,质点坐标为管段的中心点;

下面使用OpenCASCADE中的类来计算管道系统的质量和质心坐标。有了质量和质心,乘以重力加速度即可以得到重量重心。计算一段简单管道模型的重量重心,管道模型如下图所示。模型从下到上对应的坐标及质量如下:

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中计算的总质量为:148.80kg,

重心坐标为:X 26104.00mm Y -11441.00mm Z 21074.10mm 

wps_clip_image-26868

在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;
}

计算结果如下图所示:

wps_clip_image-23807

与在AVEVA Marine中计算结果一致。

4.Conclusion

在船舶设计CAD系统和工厂设计CAD系统中都有管道的辅助设计,其中都有统计管道模型重量重心的功能。根据重心的计算公式,将管道模型中的管件简化为质点,再利用公式直接计算。最后在OpenCASCADE中实现重心及总质量的计算,计算结果与AVEVA Marine一致。

OpenCASCADE还可以计算任意曲线、曲面的重心及质量、转动惯量等。这些功能又是如何实现的呢?这个问题留给大家思考。

通过使用OpenCASCADE的功能,可以体会其编程风格。

5.References

1.同济大学数学教研室. 高等数学(下册). 高等教育出版社

2.单辉祖, 谢传峰. 工程力学. 高等教育出版社


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理