張現廣 江濤 洪揚 朱燁 徐皓
摘要 為解決魚用疫苗注射器的設計與試制過程中需要多次改動模型、重復勞動較多的問題,基于Solidworks二次開發(fā)技術和數據庫技術,采用C#編程語言開發(fā)了一種氣動魚用疫苗注射器底座的參數化設計系統(tǒng)。借助該系統(tǒng),設計人員可以通過僅選擇氣缸的缸徑、行程即可讀取數據庫中的氣缸參數信息,繼而快速構建注射器底座的模型,極大提升了設計效率。此外,該系統(tǒng)結合數據庫技術,實現了對大量氣缸安裝尺寸數據的有效管理。
關鍵詞 氣動魚用疫苗注射器;Solidworks二次開發(fā);數據庫技術;參數化設計
中圖分類號 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
基金項目 國家大宗淡水魚產業(yè)技術體系項目(CARS-45-20)。
作者簡介 張現廣(1994—),男,山東費縣人,研究實習員,碩士,從事漁業(yè)裝備技術研究。
收稿日期 2020-04-12;修回日期 2020-05-08
注射疫苗是魚類養(yǎng)殖過程中重要的魚病防控手段,目前國內大多采用手工注射方式,勞動強度大且人力成本高,魚用疫苗應用受到一定程度的制約[1]。為解決上述問題,中國水產科學研究院漁業(yè)機械儀器研究所的科研團隊針對草魚幼苗的疫苗注射設計了一套魚用疫苗自動化注射裝備[2]。其中,該裝備采用一種基于氣動驅動的疫苗注射器(圖1)。
滑臺氣缸和自由安裝氣缸通過螺釘安裝在注射器底座上?;_氣缸的作用是推動整個注射器的移動,以實現注射針頭扎入魚體;自由安裝氣缸的作用是推動注射器的活塞,以實現疫苗藥水注入魚體。
在實際安裝調試過程中,對注射器移動行程的需求以及注射藥量的需求往往會發(fā)生變化,需要更換滑臺氣缸和自由安裝氣缸的選型。然而,不同型號的滑臺氣缸和自由安裝氣缸具有不同的安裝尺寸,因此需要對注射器底座的相關尺寸參數進行修改。不同尺寸參數的注射器底座結構相同,但可供選擇的氣缸型號很多(2種氣缸的不同型號排列組合更多),且不同型號氣缸的安裝尺寸參數復雜。因此,如果每換一種氣缸的型號,就人工修改相關尺寸數據,這不僅會增加設計人員的勞動量,而且會降低設計效率。
目前,參數化產品設計思想在產品的生產設計和制造過程中得到了廣泛應用,大大提高了產品的設計質量和效率[3]。為解決上述問題,筆者基于Solidworks二次開發(fā)技術和數據庫技術,以Visual Studio 2019 Community為開發(fā)工具,以C#為編程語言,采用尺寸驅動的方法,針對氣動注射器的底座設計了一個參數化設計系統(tǒng)。
1 參數化設計系統(tǒng)總體概述
1.1 參數化設計系統(tǒng)的總體構思
如圖2所示,參數化設計系統(tǒng)的主要思想如下:結合各種型號滑臺氣缸和自由安裝氣缸的安裝尺寸圖紙,將影響氣缸安裝尺寸的參數儲存到數據庫中;在Solidworks三維建模軟件中建立注射器底座的參數化模板;利用Solidworks二次開發(fā)API對Solidworks三維建模軟件進行二次開發(fā),將注射器底座的參數化模板關鍵尺寸參數進行控制;構建人機交互界面,在該界面中構建可供設計人員選擇的氣缸缸徑與行程等參數。程序根據設計人員所選的缸徑與行程,在數據庫中查詢與之對應的氣缸安裝尺寸數據,并利用查詢到的數據修改注射器底座參數化模板的相關尺寸參數,繼而在Solidworks三維建模軟件中快速構建出新的注射器底座模型。
1.2 參數化設計系統(tǒng)的形式
基于Solidworks二次開發(fā)的應用程序的形式有2種:基于COM技術的AddIn插件程序形式和基于OLE技術的獨立可執(zhí)行程序exe形式。其中,Addin插件以“.dll”動態(tài)鏈接庫的形式集成到Solidworks主程序中[4],與Solidworks運行在同一個進程中;exe形式的獨立可執(zhí)行程序運行于Solidworks主程序之外,需要通過API對Solidworks進行跨進程調用, 該過程的實現方式參見文獻[5-6]。
AddIn插件的運行速度不一定快于exe獨立可執(zhí)行程序,運行效率取決于程序運行的瓶頸[7]。但后者的穩(wěn)定性較好[6],考慮到程序運行的穩(wěn)定性,該課題的開發(fā)形式為可exe獨立可執(zhí)行程序形式。
1.3 參數化設計系統(tǒng)的人機交互界面
如圖3所示,在Visual Studio 2019 Community開發(fā)環(huán)境中創(chuàng)建一個winform窗體,并在該窗體中加入菜單控件、容器控件、標簽控件、下拉框控件、復選框控件、文本框控件、按鈕控件以及圖片框控件。用戶通過這些控件可以實現“打開Solidworks”“加載模型模板”等功能。
在進行參數化設計時,設計人員通過選擇界面中的下拉框來選擇氣缸缸徑和行程以及作用形式等參數。程序將根據設計人員所選的參數,在數據庫中查詢與之對應的氣缸安裝尺寸數據,即可快速生成新的注射器底座模型。
2 基于SQL Server2014的氣缸安裝尺寸數據庫設計
2.1 氣缸安裝尺寸分析 結合圖1可知,滑臺氣缸和自由安裝氣缸通過螺紋連接安裝在注射器的底座上。在滑臺氣缸安裝尺寸示意圖(圖4a)中,X1、X2、X3、Y2代表通孔的位置,D1代表通孔直徑。在如圖4b所示的自由安裝氣缸安裝尺寸示意圖中,X4、X5、Y3 代表通孔的位置,Y4、D2 代表通孔直徑。H代表氣缸桿在初始位置的伸出長度。為方便對針管進行調節(jié),氣缸桿在初始位置與氣缸安裝底座上的針管限位肩保持4 mm的間隙。
圖4中Y1和Y4代表氣缸的寬度,從美觀及結構穩(wěn)定性的角度看,底座的寬度應當與最大的氣缸寬度值相等。
氣缸的型號取決于氣缸的行程和缸徑。不同型號氣缸的上述尺寸是不同的。市場上的滑臺氣缸和自由安裝氣缸均是標準化和系列化的,不同廠家生產的同類型號氣缸的安裝尺寸是相同的[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對象中,此時應用程序與數據庫之間的通信便可以斷開,以減輕數據庫服務器的壓力。
以滑臺氣缸的參數化設計過程為例,描述參數化設計應用程序與數據庫通信的機理。由于篇幅所限,對于一些眾所周知的功能代碼不再贅述,如數據庫的連接與關閉等。
當用戶在參數化設計系統(tǒng)人機交互界面中的下拉框選取滑臺氣缸的缸徑與行程參數,并點選確認按鈕后,應用程序開始與數據庫建立連接,并通過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二次開發(fā)的注射器底座的關鍵尺寸參數控制
3.1 尺寸驅動法
基于Solidworks二次開發(fā)的參數化設計通常有2種方法[10]:一種方法是將從草圖繪制到生成特征這一整個建模過程完全用程序代碼實現,從無到有生成模型。這種方法常被成為程序驅動法,較為復雜,通常僅用于設計外形結構不確定的零件;另一種方法是預先定義某個零件的模板[11],將影響零件結構的尺寸參數定義為變量,通過對這些變量賦予不同的值,生成一系列參數不同、結構相似的零件。這種方式稱為尺寸驅動法,具有代碼簡潔的特點,適用于對參數不同而結構相似的零件進行快速建模。結合氣動注射器的結構特點,該系統(tǒng)采用尺寸驅動法進行參數化設計。
3.2 注射器底座參數化模板 在Solidworks軟件三維建模軟件中預先構建注射器底座的三維模型,如圖6所示。
Solidworks軟件構建三維模型的基本步驟如下:先繪制草圖,再對草圖進行拉伸、旋轉、切除等操作(對草圖進行的上述操作稱之為“特征”)形成實體。因此,在參數化設計過程中,可以通過Solidworks API編輯草圖中的尺寸參數以及編輯特征的尺寸參數(比如編輯拉伸的距離)來修改實體的某些參數。
結合注射器底座參數化模板的建模過程,對于X1、X4、X5、Y2、Y3、L8、D1、D2通過編輯“草圖”中的尺寸進行控制;對于尺寸X2和X3以及底座的寬度通過編輯“特征”中的尺寸進行控制。
3.3 關鍵尺寸驅動的實現
Solidworks二次開發(fā)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二次開發(fā)API 和開發(fā)數據庫技術開發(fā)了魚用疫苗注射器底座的參數化設計系統(tǒng)。在進行設計工作時,設計人員只需要在系統(tǒng)的人機界面中選取氣缸的缸徑與行程參數,便可以實現底座三維模型的快速建模,對于提高設計效率具有重要的意義。
參考文獻
[1] 王忠良,王蓓,魯義善,等.水產疫苗研究開發(fā)現狀與趨勢分析[J].生物技術通報,2015,31(6):55-59.
[2] 洪揚, 陳曉龍, 朱燁,等. 魚類疫苗自動注射裝置設計與應用[J].安徽農業(yè)科學,2019,47(17):220-221,237.
[3]丁剛.基于Solidworks的農機底盤部件結構參數化設計[J].農機化研究,2019,41(11):264-268.
[4] 湯海霞.齒輪油泵參數化設計的研究與實現[J].無線互聯(lián)科技,2018,15(14):72-73,77.
[5] 劉金鳳,張現廣.基于Solidworks二次開發(fā)的發(fā)動機活塞參數化設計[J].汽車實用技術,2019(16):62-65.
[6] 陳永康.SOLIDWORKS API二次開發(fā)實例詳解:微視頻版[M].北京:機械工業(yè)出版社,2018:24-26.
[7] 江洪. SolidWorks二次開發(fā)實例解析[M].北京:機械工業(yè)出版社,2004.
[8] 成大先. 機械設計手冊:氣壓傳動[M].北京:化學工業(yè)出版社,2004.
[9] 明日科技. C#從入門到精通[M].北京:清華大學出版社,2019:243-245.
[10] 張軍偉,王士軍,鄭曉龍.基于SolidWorks尺寸驅動法二次開發(fā)的滾珠絲杠三維建模[J].組合機床與自動化加工技術,2015(11):22-24.
[11] 夏衛(wèi)明,駱桂林,王義平,等.基于SolidWorks的液壓缸快速設計插件的二次開發(fā)[J].鍛壓技術,2011,36(2):131-136.