文献标识码:B文章编号:1003-0492(2025)06-086-07中图分类号:TP29
★谷金龙,吴小康,周晨,郑喆,虞戈,张晨晨,严文祥(中核苏阀科技实业股份有限公司,江苏苏州215129)
关键词:阀门设计;快速设计;自动设计;二次开发
1 引言
随着数字化浪潮席卷开来,数字技术作为核心驱动力不断推进企业创新和转型升级[1],提升制造业企业数字化能力将是实现制造业企业高质量发展的必由之路[2]。为提高企业竞争力,阀门制造企业近年来也在不断进行数字化转型。它通过一些数字化手段提高企业设计生产效率,例如进行工厂智能化改造、使用三维设计软件、上线产品全生命周期管理(Product Lifecycle Management)系统等。
阀门是流体输送系统中的控制部件,具有截止、止回、换向、调节流量、减压稳压等功能,广泛应用于石油、化工、核电等各行各业中[3]。2019年,阀门行业规模以上企业已经达到1809家,完成阀门共计65222万余吨,同比增长4.84%[4]。随着阀门制造技术的发展,阀门设计逐渐趋向于小批量、多品种的快速设计与制造[5]。因此,针对阀门标准产品有必要设计一种阀门标准产品BOM(Bill Of Material)自动设计出图方法来提高企业竞争力,具体理由如下:
(1)阀门标准产品材料配对方式繁多
一个具体规格的阀门标准产品有成千上万种材料配对方式,企业在完成产品标准化设计时不会完成所有材料配对设计。当年实际订单在产品数据库中找不到相同材料配对的标准产品时,设计部门会安排相关设计任务,每年此类订单任务至少占总设计任务数量的50%。
(2)阀门标准产品升级迭代之后需要重新设计
为应对激烈的市场竞争,阀门标准产品会有升级迭代需求。升级迭代之后的材料配对逻辑基本不变,但为了和旧的同类标准产品区分开来,标准产品的标准号必须改变,此时需要针对这些标准产品从零开始重新进行材料配对设计。
(3)新员工学习成本高,易出错
阀门企业每年都会进行新员工招聘,新员工必须进行标准产品材料配对逻辑的学习,然后进行相关任务设计。在实际设计中,新员工往往会在标准产品引用和材料配对设计中出错,如果审核人员没有审核出来,将影响后续产品生产和订单准时交付。
2 自动设计出图方法介绍
下文以《API623:2013》法兰端和对焊端螺栓连接阀盖钢制截止阀标准中适用于石油炼化等工况的截止阀(简称截止阀)为例进行自动设计出图方法介绍。本方法用户通过Winform窗口选择具体的阀门规格和确定对材料的具体要求,程序根据这些信息定位到对应的阀门模型并将之另存为到指定的文件夹中,再通过相关代码修改另存为的模型中的BOM完成自动出图。本方法的所有代码都通过Visual Studio软件进行编写,该软件能够使用C系列的各种语言进行程序设计,其编写、编辑、调试和生成代码文件等功能一应俱全,是一款非常好的开发工具。下面通过以下七大方面进行介绍:
(1)截止阀材料配对逻辑梳理;
(2)数据库建立;
(3)人机交互界面设计;
(4)材料配对逻辑输入计算机;
(5)调用NX软件API(Application Programming Interface),完成自动出图;
(6)使用C++/CLI实现C#和C++交互;
(7)方法总体实现流程梳理。
2.1 阀门标准产品材料配对逻辑梳理
《API623:2013》标准中对材料有专门的规定,其中6.1节规定:“阀体、阀盖和除内件外的其它阀门零件材料应从表7中选取”[6],6.2节对内件包含的零件做了详细规定。结合标准中第6节其它内容综合分析,可将截止阀零件分为三类:第一类为主体零件,其接触介质并为主要承压件,包括阀体、阀座、阀盖、阀瓣、耐腐蚀性至少等于阀体材料的零件;第二类为内件,包括阀杆、阀体阀座阀瓣密封面、密封座、通常与流体接触的内部小零件;第三类为一般件,其不接触介质,包括除第一类和第二类以外的零件。图1是《API623:2013》标准中截止阀结构简图[7]。
图1截止阀产品示意图
主体零件的确认为截止阀材料选型的第一步,其变化会影响内件和一般件材料变化。内件变化会作为附件条件影响内件和少部分一般件材料变化,特殊要求会作为附件条件影响所有或部分零件的材料变化。截止阀材料配对逻辑具体变化主次顺序和组合情况如图2所示,每一条分支都会产生不同的截止阀材料配对结果。
图2截止阀材料配对逻辑变化主次顺序和组合情况示意图
主体零件材料变化一般按照材料性能和使用工况进行分类,可分为碳钢、低温用钢、高温用钢、不锈钢、镍基合金等,每个类别使内件和一般件材料有不同的变化方法。内件变化更为具体,每个内件材料变化都规定了具体材料名称。特殊要求为企业根据市场需要进行梳理归纳,如特殊要求为“CE”,意指阀门必须满足欧盟的CE指令[8],需要落实在阀门标准产品BOM中的内容为所有材料名称必须是ASTM(美国材料与试验学会)标准材料。
如上所述,截止阀零件可分为三大类,但在企业实际设计制造时要考虑的因素更多,比如针对某些小零件会缩小材料种类范围以降低成本,或根据设计经验对某个零件采用强度水平的材料等。故在具体截止阀材料配对时,无法保证材料配对逻辑完全符合上述规律,可将上述材料配对逻辑作为基本指导思想,为每一个标准零件定制一个材料配对算法,这样做既降低了材料配对逻辑梳理难度又降低了程序编写难度。
为让读者更易理解,下面进行材料配对举例说明。主体零件阀体材料选用碳钢ASTM A216 WCB,则阀杆(内件)材料默认选用ASTM A182 F6a CL2,锁紧螺母(一般件)材料选用35钢。当内件变化为ASTM A182 F316时,则阀杆(内件)材料改为选用ASTM A182 F316,锁紧螺母(一般件)材料改为12Cr13。在以上变化的基础上再加上特殊要求变化为CE,则阀杆(内件)材料仍选用ASTM A182 F316,锁紧螺母(一般件)材料改为ASTM A276 410(ASTM A276 410为12Cr13的美标材料名称)。
2.2 数据库建立
数据库分为两类:一类是截止阀模型数据库,采用PRT格式文件存储;一类是材料数据库,采用CSV格式文件存储。数据库提供了基础数据支撑,丰富了材料配对的变化数量。
2.2.1 截止阀模型数据库
Windows文件夹系统是现成的、典型的树状结构存储系统,截止阀模型数据库存储在文件夹中。针对截止阀标准产品,文件夹树节点按顺序包括阀种、设计标准、公称压力、端部连接形式、中腔连接形式、公称通径、驱动方式以及商标代号。这些树节点信息确定了具体的截止阀规格,所有截止阀模型按规格保存在对应路径的文件夹下。
PRT格式文件为NX软件保存模型信息的文件,截止阀模型数据库包含各种零件模型和装配体模型。模型中需加入额外信息,具体有:
(1)在零件和装配体模型中加入属性代号、名称和重量,并赋予具体的值。零件模型的代号填写零件标准号、名称填写零件规格,装配体模型的代号填写图号、名称填写阀门名称。
(2)在装配体模型中加入BOM和标题栏的表格,表格采用NX的PMI表功能,其可设置为平行于屏幕显示,当旋转模型时仍可方便地浏览表格上的信息。BOM表格材料和备注、标题栏表格代号由自动设计出图方法填写,其余内容来自零件模型和装配体模型相关属性的值,在定义模型数据库时填写在PMI表中,具体样式如图3所示。
图3截止阀BOM和标题栏样式示意图
(3)为使材料配对算法更容易实现,需在零件模型中加入属性成型方式(值填写铸件、锻件、棒材),后续材料配对逻辑实现将需要这些信息。
2.2.2 材料数据库
CSV文件作为一种纯文本格式的表格数据文件,其具有体积小、结构简单、消耗资源小、格式纯净等优点[9]。材料数据库都是类似于二维表格的数据,非常适合使用CSV文件进行存储。
材料配对方法的实现需要依赖一些基础材料数据库,包含各种关于材料名称、材料属性和材料成型方式的信息。一般件材料不建立数据库,因为一个一般件的材料选择通常只有两三种,直接在算法中定义较为简单,其它具体材料数据库如下:
(1)主体零件和默认内件搭配材料数据库
按照《API623:2013》表7中规定,阀体和阀盖材料从ASMEB16.34第1组和第2组中选取,内件搭配根据企业自身经验,部分内容表1所示。
表1主体零件和默认内件搭配材料部分数据库
(2)内件变化数据库
内件变化数据库数据来自《API623:2013》表8中数据和企业多年生产经验,部分内容如表2、表3所示。
表2内件零件材料部分数据库
表3内件密封面材料部分数据库
2.3 人机交互界面设计
Winform窗体设计简单易学,故其是一个很好的人机交互工具选择[10]。人机交互界面使用VisualStudio软件和C#语言进行设计,具体设计界面如图4、图5所示。
图4截止阀规格选择交互界面示意图
图5截止阀材料选择交互界面示意图
图4交互界面使用户可以选择想要的截止阀规格,图5交互界面使用户可以选择想要的主体材料、内件材料和特殊要求。点击图4交互界面中的“选择材料”按钮可以调出图5交互界面,点击图5交互界面“OK”按钮可以关闭当前交互界面并返回图4交互界面。
图4交互界面中ComboBox控件(下拉文本框)从左往右、从上往下选择,每次选择之后,后续的ComboBox控件会根据阀门模型数据库的文件夹层级内容进行动态更新,避免交互界面显示的规格在数据库中不存在。动态变化通过ComboBox控件的Selection Change Committed事件进行触发,ComboBox控件的TabIndex属性按照用户选择顺序递增编号,这样代码编写时可以方便地对各个ComboBox控件进行修改。图5所示的交互界面中数据源来自材料数据库,用户选择“主体材料—锻件”材料后,“主体材料—铸件”下拉文本框中材料内容会对应变化,避免主体材料锻件和铸件两个材料不搭配。
2.4 材料配对逻辑输入计算机
BOM可以由零件信息、组件信息和其它产品BOM搭配组成,这非常适合采用组合设计模式。组合模式将对象组合成树型结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性[11]。代码数据结构设计如图6所示。
图6阀门零件组件代码结构示意图
图6中BasePart类为抽象类,抽象类是现有类型作为新类型底层实现的一部分来加以复用[12],该类将阀门零件和组件共有变量和方法提炼出来作为其成员。Attribute类用来描述阀门产品零件的BOM相关信息和零件成型方式。Input类用来描述用户输入的信息和从模型中获取的信息,当用户完成人机交互选择后,Input类对象就生成了。Add(Remove)方法用来向类中的成员baseParts中添加(删除)元素,Modify方法用来修改类中的成员Attribute。
材料数据库的内容可作为全局变量,当程序运行时为这些全局变量进行赋值,避免因重复的获取而导致程序效率降低。
截止阀材料配对逻辑输入计算机的实现方法如下:
(1)定义代表截止阀标准件的零件类
定义Attribute类中的codeName的值,值填写为类似“Q/DJXXXX-2018”的标准号。定义Modify方法,首先在Input类中的Attributes中搜索是否有Attribute的codeName的值为“Q/DJXXXX-2018”,无则退出方法,有则根据Input类中材料要求信息、材料数据库和材料配对逻辑完全定义类的成员Attribute。由于篇幅有限,仅以阀体类、阀杆类和压板类的Modify方法实现进行算法介绍:
·阀体类,首先在Input类的Attributes中搜索是否有Attribute的codeName的值为该阀体类的Attribute的codeName的值,无则退出,有则根据该Input类的Attribute的moldingMethod的值是锻件还是铸件,铸件则为阀体类的Attribute赋值为Input类的mainCastMaterial的值,锻件则赋值为Input类的mainForgingMaterial的值。
·阀杆类,首先在Input类的Attributes中搜索是否有Attribute的codeName的值为该阀杆类的Attribute的codeName的值,无则退出,有则根据Input类的internalMaterial的值为“无”还是其它具体材料。如果为具体材料则直接为阀杆类的Attribute的codeName赋值为该具体材料,若为“无”,则根据Input类的mainCastMaterial和mainForgingMaterial的值在表1中找到具体的一行,然后将该行的内件材料赋值给阀杆类的Attribute的codeName。
·压板类,首先在Input类的Attributes中搜索是否有Attribute的codeName的值为该压板类的Attribute的codeName的值,无则退出,有则根据Input类的mainCastMaterial和mainForgingMaterial的值在表1中找到具体的一行,看该行的材料特性的值是碳钢还是不锈钢,另外再看Input类中Attributes中对应的Attribute中moldingMethod的值为铸件还是锻件。根据这些内容可产生四种不同的压板材料,如碳钢铸件压板材料定义为ASTM A216 WCB,每种情况在算法中直接定义。
(2)定义代表截止阀产品的零件类
为类中的baseParts添加截止阀所需的零件类,不局限于某个具体规格阀门的所有零件,同类型阀门的其它规格中的零件也添加在baseParts中。首先定义Add和Remove方法,再定义Modify方法,Modify方法首先循环执行baseParts中各个元素的Modify方法,再定义自身的Modify方法为本身的Attribute类赋值(涉及图号内容不继续展开)。类中所有相关的Attribute定义完成后,对另存为的截止阀模型中的BOM表对应的每行信息进行对应赋值即可完成自动设计出图任务。
2.5 调用NX软件API完成自动出图
目前流行的NX二次开发方式主要有NXOpen C、NXOpen C++、NXOpen Java和NXOpen.NET等,NXOpen支持最全面、最复杂层次的编程[13]。利用NXOpen开发的应用程序,可以在三种模式下被执行:交互模式、批处理模式、远程模式[14]。采用批处理模式,调用NXOpen C和NXOpen C++包含的API进行二次开发。批处理模式可以在不打开NX软件的情况下,通过exe可执行程序文件对NX文件进行查看、编辑和保存等操作。一个批处理程序只能调用一次UF_initialize和UF_terminate方法获取和终止对NXOpen API的许可,否则程序会报错无法正常执行。为便于读者可以快速复现该方法,通过流程图的方式展示大部分API(方法未列出所有需要输入的参数)如图7、图8所示。
图7读取NX装配体中零件模型上属性的API
图8修改NX装配体中PMI表内容的API
2.6 使用C++/CLI实现C#和C++交互
C++/CLI是标准C++语言与CLI(Common Language Infrastructure)的集成[15]。C#编写的程序和C++编写的程序可利用C++/CLI实现交互,首先利用C++编写程序输出静态链接库(Statically Link Library)文件,再利用C++/CLI调用该静态链接库文件中的代码编写程序并输出动态链接库(Dynamic Link Library)文件,最后利用C#调用该动态链接库文件的代码实现C#和C++两者的交互。
作为C++在CLI方面的延伸,C++/CLI的难度也在以令人难以置信的速度增长[16]。本方法中C++/CLI仅起传递数据的作用,使用难度大大下降。设计传递的数据都为文本类数据,故只需考虑该类型的类型转换和传递即可,具体实现方法如下:
(1)文本类数据在C#和C++/CLI中的转换文本类数据在C++/CLI中为System::String^类型,在C#中为System::String类型,C#在调用C++/CLI带有System::String^类型作为参数的函数时,用System::String类型作为参数即可。
(2)文本类数据在C++/CLI和C++中的转换
C++中通常使用std::string描述字符串,System::String^类型在C++中并不存在,可以用下面的方法进行转换:
std::string SystemStringTostdString(System::String^ str)
{
msclr::interop::marshal_contextmars;
return mars.marshal_as<std::string>(str);
}
2.7 方法总体实现流程梳理
上文虽然介绍了一些本方法的主要技术要点,但可能对本方法的整体实现思路缺乏总体认知,故针对整体流程做进一步介绍,具体如图9所示。
图9整体流程示意图
3 结语
将机械制造企业长期的设计经验梳理出具体逻辑,并通过计算机实现自动化设计,可将设计人员从简单枯燥的设计任务中解放出来,使设计人员有更多的精力投入研发当中,进而提升企业竞争力。
论文介绍的材料配对变化逻辑有限,实际设计中肯定需要考虑更多的内容,需读者根据自身设计生产经验进行总结,才能达到更好的效果。本方法具备一定的可扩展性,后期可通过扩充材料数据库实现更多的材料配对组合,扩充模型数据库为更多规格的截止阀实现BOM自动出图。
本方法主要难度在材料配对逻辑梳理,如果材料配对逻辑梳理的清晰有规律,则代码实现起来会更容易,调用NX API完成读取、修改等操作在一次掌握后,对新阀种定义BOM自动出图方法这方面的代码仍可复用。
通过本方法,可达到阀门设计中简单修改材料配对的任务自动设计效果,能够在提高效率的同时减少出错率。程序自动出具相关BOM图纸,减少了设计人员查找图纸修改图纸的时间,对提高阀门设计效率具有重要意义。
作者简介:
谷金龙(1994-),男,江苏宿迁人,工程师,学士,现就职于中核苏阀科技实业股份有限公司,研究方向为数字化设计、阀门设计。
吴小康(1990-),男,陕西安康人,高级工程师,学士,现就职于中核苏阀科技实业股份有限公司,研究方向为阀门设计。
周 晨(1982-),男,江苏苏州人,高级工程师,硕士,现就职于中核苏阀科技实业股份有限公司,研究方向为阀门设计。
郑 喆(1994-),男,江苏苏州人,工程师,学士,现就职于中核苏阀科技实业股份有限公司,研究方向为阀门设计。
虞 戈(1980-),男,江苏苏州人,高级工程师,硕士,现就职于中核苏阀科技实业股份有限公司,研究方向为阀门设计。
张晨晨(1996-),男,江苏连云港人,助理工程师,硕士,现就职于中核苏阀科技实业股份有限公司,研究方向为阀门设计。
严文祥(1996-),男,江苏盐城人,助理工程师,学士,现就职于中核苏阀科技实业股份有限公司,研究方向为阀门设计。
参考文献:
[1] 孔惠丽, 裴潇. 数字技术驱动下制造企业转型路径探究[J]. 财会月刊, 2023, 44 (23) : 89 - 96.
[2] 孙元, 钟亚婷, 牟赛雅, 等. 制造业企业数字化能力及提升模式[J]. 清华管理评论, 2023 (3) : 22 - 31.
[3] 王渭. 阀门专刊特约主编寄语[J]. 流体机械, 2023, 51 (10) : 1.
[4] 何武, 曹宜军, 粟鹏. 阀门行业智能制造的现状及趋势[J]. 自动化与仪器仪表, 2023 (6) : 1 - 3 + 9.
[5] 王春梅, 方忆湘. UGNX下基于模型定义的阀门数字化设计[J]. 机械设计与制造, 2015 (8) : 174 - 177.
[6] AMERICAN PETROLEUM INSTITUTE. STEEL Globe Valves Flanged and Buttwelding Ends, Bolted Bonnets: API623[S]. AMERICAN: AMERICAN PETROLEUM INSTITUTE, 2013 : 15.
[7] API 623-2021, 钢制截止阀—法兰和对焊端, 栓接阀盖[S].
[8] 姚志奎, 余忠华, 宋小兵. CE-PED指令及阀门制造企业应采取的对策[J]. 阀门, 2002 (4) : 24 - 26 + 41.
[9] 刘耀钦, 杨新东, 袁承芬. 基于Python的智慧校园CSV文件的读取方式研究[J]. 汉江师范学院学报, 2022, 42 (3) : 22 - 24.
[10] 谷金龙, 周晨, 郑喆, 等. 一种阀门零部件参数化及尺寸驱动设计方法的应用[J]. 智能制造, 2022, (5) : 103 - 106.
[11] 孙凌云, 王光伟. 设计模式在军用软件开发中的应用[J]. 现代计算机(专业版), 2013 (4) : 51 - 54.
[12] 汤德怀. 探讨继承在抽象类和接口的应用[J]. 白城师范学院学报, 2016, 30 (5) : 63 - 64 + 70.
[13] 代睿, 徐娜, 莫堃. 基于C#和NXOpen的参数化建模研究[J]. 东方电气评论, 2020, 34 (4) : 10 - 13.
[14] 唐康林. Siemens NX二次开发[M]. 北京: 电子工业出版社, 2021.
[15] 冯士德. 基于C++/CLI实现托管代码与非托管代码的交互[J]. 微型电脑应用, 2013, 29 (1) : 38 - 40 + 44.
[16] 李建忠. C++/CLI面面观[J]. 程序员, 2005, (11) : 81 - 83.
摘自《自动化博览》2025年6月刊






案例频道