张现广 江涛 洪扬 朱烨 徐皓
摘要 为解决鱼用疫苗注射器的设计与试制过程中需要多次改动模型、重復劳动较多的问题,基于Solidworks二次开发技术和数据库技术,采用C#编程语言开发了一种气动鱼用疫苗注射器底座的参数化设计系统。借助该系统,设计人员可以通过仅选择气缸的缸径、行程即可读取数据库中的气缸参数信息,继而快速构建注射器底座的模型,极大提升了设计效率。此外,该系统结合数据库技术,实现了对大量气缸安装尺寸数据的有效管理。
关键词 气动鱼用疫苗注射器;Solidworks二次开发;数据库技术;参数化设计
中图分类号 TP311.52文献标识码 A
文章编号 0517-6611(2020)22-0209-04
doi:10.3969/j.issn.0517-6611.2020.22.056
Parametric Design of Fish Vaccine Syringe Base Based on Secondary Development of Soildworks
ZHANG Xian-guang, JIANG Tao, HONG Yang et al (Institute of Fishery Machinery and Instruments,Chinese Academy of Fishery Sciences,Shanghai 200092)
Abstract In order to solve the problems of many times of model changes and repeated labor in the design and trail production process of fish vaccine syringes, this paper used C# programming language to develop a parametric design system for a pneumatic fish vaccine syringe base,based on Solidworks secondary development technology and database technology. With this system, designers can read the parameter information of cylinders in the database by simply selecting the cylinder bore and stroke of the cylinder, and then quickly build a model of the syringe base, which has greatly improved the design efficiency.In addition, the system combined with database technology has achieved effective management of a large number of cylinder installation dimension data.
Key words Pneumatic fish vaccine syringe;Solidworks secondary development;Database technology;Parametric design
基金项目 国家大宗淡水鱼产业技术体系项目(CARS-45-20)。
作者简介 张现广(1994—),男,山东费县人,研究实习员,硕士,从事渔业装备技术研究。
收稿日期 2020-04-12;修回日期 2020-05-08
注射疫苗是鱼类养殖过程中重要的鱼病防控手段,目前国内大多采用手工注射方式,劳动强度大且人力成本高,鱼用疫苗应用受到一定程度的制约[1]。为解决上述问题,中国水产科学研究院渔业机械仪器研究所的科研团队针对草鱼幼苗的疫苗注射设计了一套鱼用疫苗自动化注射装备[2]。其中,该装备采用一种基于气动驱动的疫苗注射器(图1)。
滑台气缸和自由安装气缸通过螺钉安装在注射器底座上。滑台气缸的作用是推动整个注射器的移动,以实现注射针头扎入鱼体;自由安装气缸的作用是推动注射器的活塞,以实现疫苗药水注入鱼体。
在实际安装调试过程中,对注射器移动行程的需求以及注射药量的需求往往会发生变化,需要更换滑台气缸和自由安装气缸的选型。然而,不同型号的滑台气缸和自由安装气缸具有不同的安装尺寸,因此需要对注射器底座的相关尺寸参数进行修改。不同尺寸参数的注射器底座结构相同,但可供选择的气缸型号很多(2种气缸的不同型号排列组合更多),且不同型号气缸的安装尺寸参数复杂。因此,如果每换一种气缸的型号,就人工修改相关尺寸数据,这不仅会增加设计人员的劳动量,而且会降低设计效率。
目前,参数化产品设计思想在产品的生产设计和制造过程中得到了广泛应用,大大提高了产品的设计质量和效率[3]。为解决上述问题,笔者基于Solidworks二次开发技术和数据库技术,以Visual Studio 2019 Community为开发工具,以C#为编程语言,采用尺寸驱动的方法,针对气动注射器的底座设计了一个参数化设计系统。
1 参数化设计系统总体概述
1.1 参数化设计系统的总体构思
如图2所示,参数化设计系统的主要思想如下:结合各种型号滑台气缸和自由安装气缸的安装尺寸图纸,将影响气缸安装尺寸的参数储存到数据库中;在Solidworks三维建模软件中建立注射器底座的参数化模板;利用Solidworks二次开发API对Solidworks三维建模软件进行二次开发,将注射器底座的参数化模板关键尺寸参数进行控制;构建人机交互界面,在该界面中构建可供设计人员选择的气缸缸径与行程等参数。程序根据设计人员所选的缸径与行程,在数据库中查询与之对应的气缸安装尺寸数据,并利用查询到的数据修改注射器底座参数化模板的相关尺寸参数,继而在Solidworks三维建模软件中快速构建出新的注射器底座模型。
1.2 参数化设计系统的形式
基于Solidworks二次開发的应用程序的形式有2种:基于COM技术的AddIn插件程序形式和基于OLE技术的独立可执行程序exe形式。其中,Addin插件以“.dll”动态链接库的形式集成到Solidworks主程序中[4],与Solidworks运行在同一个进程中;exe形式的独立可执行程序运行于Solidworks主程序之外,需要通过API对Solidworks进行跨进程调用, 该过程的实现方式参见文献[5-6]。
AddIn插件的运行速度不一定快于exe独立可执行程序,运行效率取决于程序运行的瓶颈[7]。但后者的稳定性较好[6],考虑到程序运行的稳定性,该课题的开发形式为可exe独立可执行程序形式。
1.3 参数化设计系统的人机交互界面
如图3所示,在Visual Studio 2019 Community开发环境中创建一个winform窗体,并在该窗体中加入菜单控件、容器控件、标签控件、下拉框控件、复选框控件、文本框控件、按钮控件以及图片框控件。用户通过这些控件可以实现“打开Solidworks”“加载模型模板”等功能。
在进行参数化设计时,设计人员通过选择界面中的下拉框来选择气缸缸径和行程以及作用形式等参数。程序将根据设计人员所选的参数,在数据库中查询与之对应的气缸安装尺寸数据,即可快速生成新的注射器底座模型。
2 基于SQL Server2014的气缸安装尺寸数据库设计
2.1 气缸安装尺寸分析 结合图1可知,滑台气缸和自由安装气缸通过螺纹连接安装在注射器的底座上。在滑台气缸安装尺寸示意图(图4a)中,X1、X2、X3、Y2代表通孔的位置,D1代表通孔直径。在如图4b所示的自由安装气缸安装尺寸示意图中,X4、X5、Y3 代表通孔的位置,Y4、D2 代表通孔直径。H代表气缸杆在初始位置的伸出长度。为方便对针管进行调节,气缸杆在初始位置与气缸安装底座上的针管限位肩保持4 mm的间隙。
图4中Y1和Y4代表气缸的宽度,从美观及结构稳定性的角度看,底座的宽度应当与最大的气缸宽度值相等。
气缸的型号取决于气缸的行程和缸径。不同型号气缸的上述尺寸是不同的。市场上的滑台气缸和自由安装气缸均是标准化和系列化的,不同厂家生产的同类型号气缸的安装尺寸是相同的[8]。因此,可结合各种型号滑台气缸和自由安装气缸的安装尺寸图纸,整理出气缸行程以及气缸缸径与安装尺寸的关系,并将其储存到数据库中。
2.2 气缸安装尺寸数据库的设计 在SQL Server 2014数据库中建立名为“Injector”的数据库,并在该数据库中建立名为“FreeMountCylinder”和“SlideCylinder”的数据表,分别用于储存固定气缸和滑台气缸的参数。滑台气缸参数的数据表及其E-R图如图5所示。
2.3 基于ADO.NET的数据库通信
ADO.NET是一种数据库访问架构,其搭建了应用程序与数据源之间的通信桥梁[9]。ADO.NET包含2个重要对象:DataSet和DataAdapeter。DataSet对象相当于一个计算机本地内存中的数据容器,而DataAdapeter对象则充当了数据源与DataSet对象之间的桥梁:SQL Server数据中的数据通过其填充到DataSet对象中,此时应用程序与数据库之间的通信便可以断开,以减轻数据库服务器的压力。
以滑台气缸的参数化设计过程为例,描述参数化设计应用程序与数据库通信的机理。由于篇幅所限,对于一些众所周知的功能代码不再赘述,如数据库的连接与关闭等。
当用户在参数化设计系统人机交互界面中的下拉框选取滑台气缸的缸径与行程参数,并点选确认按钮后,应用程序开始与数据库建立连接,并通过SQL语句查询用户所选参数对应的各安装尺寸:
……
/*SQL查询语句,表示在SlideCylinder数据表中查询与用户所选缸径、行程相对应的安装参数*/
sql_str = "select L1,L2,L3,L7,P from SlideCylinder where GJ = + comboBox1.SelectedItem.ToString() + and XC= + comboBox2.SelectedItem.ToString() + ";
//声明一个DataSet对象,并用DataAdapter对象进行填充
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sql_str, con);
da.Fill(ds, "SlideCylinder");
//将查询到的安装尺寸参数显示到文本框中供用户查看
textBox1.Text = ds.Tables[0].Rows[0]["L1"].ToString();
……
……
3 基于Solidworks二次开发的注射器底座的关键尺寸参数控制
3.1 尺寸驱动法
基于Solidworks二次开发的参数化设计通常有2种方法[10]:一种方法是将从草图绘制到生成特征这一整个建模过程完全用程序代码实现,从无到有生成模型。这种方法常被成为程序驱动法,较为复杂,通常仅用于设计外形结构不确定的零件;另一种方法是预先定义某个零件的模板[11],将影响零件结构的尺寸参数定义为变量,通过对这些变量赋予不同的值,生成一系列参数不同、结构相似的零件。这种方式称为尺寸驱动法,具有代码简洁的特点,适用于对参数不同而结构相似的零件进行快速建模。结合气动注射器的结构特点,该系统采用尺寸驱动法进行参数化设计。
3.2 注射器底座参数化模板 在Solidworks软件三维建模软件中预先构建注射器底座的三维模型,如图6所示。
Solidworks软件构建三维模型的基本步骤如下:先绘制草图,再对草图进行拉伸、旋转、切除等操作(对草图进行的上述操作称之为“特征”)形成实体。因此,在参数化设计过程中,可以通过Solidworks API编辑草图中的尺寸参数以及编辑特征的尺寸参数(比如编辑拉伸的距离)来修改实体的某些参数。
结合注射器底座参数化模板的建模过程,对于X1、X4、X5、Y2、Y3、L8、D1、D2通过编辑“草图”中的尺寸进行控制;对于尺寸X2和X3以及底座的宽度通过编辑“特征”中的尺寸进行控制。
3.3 关键尺寸驱动的实现
Solidworks二次开发API提供了丰富的、可用于编辑模型草图和特征的对象。“ModelDoc2”类中的“ModelDoc2. Parameter(“String StringIn”).SystemValue”属性代表了草图或者特征中的一些参数。其中,String StringIn为字符串型变量,代表参数的名称。比如,就注射器底座的Solidworks模型而言,ModelDoc2.Parameter("D1@草图3").SystemValue代表“草图3”中名称为“D1”的参数值;ModelDoc2.Parameter("D1@阵列(线性)1").SystemValue代表 “阵列(线性)1” 特征中阵列的数量。
通过Solidworks API对模型尺寸进行修改的基本流程如下:声明并实例化一个“ModelDoc2”对象,通过改变“ModelDoc2”对象中的“ModelDoc2. Parameter("String StringIn").SystemValue”属性,来修改底座参数化模板中的尺寸数据。其流程如图7a所示。
以修改“草图3”中的D1为例:
……
ModelDoc2 SwPartDoc = (ModelDoc2)swApp.ActiveDoc;
double x1;
……
/*用x1对草图3中的D1进行赋值。变量x1的单位为mm,但属性“SystemValue”的单位为m,因此需要除以1 000进行单位换算。
*/SwPartDoc.Parameter("D1@草图3").SystemValue = x1 / 1000.0;
对于不同型号的滑台气缸,其基座上会有4个或者6个大小不等的安装螺纹孔。注射器底座参数化模板上的滑台气缸安装通孔数量应当与滑台气缸基座螺纹孔的数量对应。该部分的处理方法如下:在设计注射器底座参数化模板的三维模型时,预先采用“草图”→“拉伸切除”的流程生成最左侧的2个孔,随后对拉伸切除形成的孔特征进行“阵列”。阵列数为2或3。阵列特征中 “阵列数量”为2时,则共有4个滑台气缸安装通孔;“阵列数量”为3时,则共有6个滑台气缸安装通孔(阵列数量包含阵列源)。
在参数化设计时,通过修改阵列的数量来控制安装通孔的数量。其流程如图7b所示,具体实现代码如下:
ModelDoc2 SwPartDoc = (ModelDoc2)swApp.ActiveDoc;
double x2;
……
SwPartDoc.Parameter("D3@阵列(线性)1").SystemValue = x2/1000.0;//表示阵列间距,即滑台气缸安装通孔横向间距。
……
/* textBox3文本框显示在数据库中查询到的X3的值,若不为空则阵列数为3,否则阵列数为2*/
……
if (!string.IsNullOrEmpty(textBox3.Text))
SwPartDoc.Parameter("D1@阵列(线性)1").SystemValue = 3;
else
SwPartDoc.Parameter("D1@阵列(线性)1").SystemValue = 2;
……
如“2.1”所述,底座的宽度取决于最宽的气缸,即在数据库中查询到的Y1与Y4中的最大值。将此最大值赋值给特征“凸台-拉伸1”的拉伸长度,实现代码如下:
……
double temp= Math.Max(y1,y4);
SwPartDoc.Parameter("D1@凸臺-拉伸1").SystemValue= temp/ 1000.0;
……
4 结论
为了减少鱼用疫苗注射器设计过程中对气缸安装底座建模的工作量,提高设计质量和效率,基于SolidWorks二次开发API 和开发数据库技术开发了鱼用疫苗注射器底座的参数化设计系统。在进行设计工作时,设计人员只需要在系统的人机界面中选取气缸的缸径与行程参数,便可以实现底座三维模型的快速建模,对于提高设计效率具有重要的意义。
参考文献
[1] 王忠良,王蓓,鲁义善,等.水产疫苗研究开发现状与趋势分析[J].生物技术通报,2015,31(6):55-59.
[2] 洪扬, 陈晓龙, 朱烨,等. 鱼类疫苗自动注射装置设计与应用[J].安徽农业科学,2019,47(17):220-221,237.
[3]丁刚.基于Solidworks的农机底盘部件结构参数化设计[J].农机化研究,2019,41(11):264-268.
[4] 汤海霞.齿轮油泵参数化设计的研究与实现[J].无线互联科技,2018,15(14):72-73,77.
[5] 刘金凤,张现广.基于Solidworks二次开发的发动机活塞参数化设计[J].汽车实用技术,2019(16):62-65.
[6] 陈永康.SOLIDWORKS API二次开发实例详解:微视频版[M].北京:机械工业出版社,2018:24-26.
[7] 江洪. SolidWorks二次开发实例解析[M].北京:机械工业出版社,2004.
[8] 成大先. 机械设计手册:气压传动[M].北京:化学工业出版社,2004.
[9] 明日科技. C#从入门到精通[M].北京:清华大学出版社,2019:243-245.
[10] 张军伟,王士军,郑晓龙.基于SolidWorks尺寸驱动法二次开发的滚珠丝杠三维建模[J].组合机床与自动化加工技术,2015(11):22-24.
[11] 夏卫明,骆桂林,王义平,等.基于SolidWorks的液压缸快速设计插件的二次开发[J].锻压技术,2011,36(2):131-136.