黑留民,馬 偉,劉紅彬,張?zhí)炫e
(河南科技大學(xué) 機(jī)電工程學(xué)院,河南 洛陽 471003)
軸承的設(shè)計(jì)質(zhì)量和設(shè)計(jì)效率直接影響其可靠性、壽命以及整個(gè)軸承生產(chǎn)周期。通過研制基于三維CAD的軸承設(shè)計(jì)專用系統(tǒng),可提高軸承設(shè)計(jì)的準(zhǔn)確性和工作效率,促進(jìn)軸承設(shè)計(jì)水平的提升,因而有助于提升軸承企業(yè)的核心競(jìng)爭(zhēng)力。CAXA實(shí)體設(shè)計(jì)是目前國內(nèi)使用較為廣泛的CAD軟件,其二次開發(fā)平臺(tái)能夠方便地調(diào)用和修改系統(tǒng)的已有功能,并具有開放式的體系結(jié)構(gòu)[1]。在CAXA實(shí)體設(shè)計(jì)二次開發(fā)平臺(tái)上開發(fā)軸承參數(shù)化設(shè)計(jì)專用系統(tǒng),不僅可以拓展CAXA實(shí)體設(shè)計(jì)功能,還可以大大提高軸承的設(shè)計(jì)效率,進(jìn)而達(dá)到針對(duì)性強(qiáng)、效率高、響應(yīng)速度快的設(shè)計(jì)效果。
二次開發(fā)平臺(tái)是三維數(shù)字化設(shè)計(jì)軟件的重要組成部分,CAXA實(shí)體設(shè)計(jì)的開放式體系結(jié)構(gòu)允許其與各類型數(shù)據(jù)以及第3方軟件以不同的形式集成[2],從而拓展系統(tǒng)的功能和使用范圍。
CAXA實(shí)體設(shè)計(jì)的集成方案從集成的耦合程度劃分,如圖1所示。其中第1,2層次都屬于松耦合方式;第3個(gè)層次是在封裝算法之后,再通過ICAPI(IronCAD Application Programming Interface)接口使DLL與CAXA實(shí)體設(shè)計(jì)連接;而第4個(gè)層次則是直接利用ICAPI提供的大量接口函數(shù)進(jìn)行用戶程序的編寫,將第3層次集成進(jìn)行了推廣,是用戶程序和數(shù)據(jù)與CAXA實(shí)體設(shè)計(jì)耦合程度最高的一種集成方式,也是最有效的專用化開發(fā)方式[3]。
圖1 CAXA實(shí)體設(shè)計(jì)的集成方案
本系統(tǒng)選用基于COM組件的集成方案,使用CAXA實(shí)體設(shè)計(jì)提供的二次開發(fā)接口(ICAPI),通過COM組件加載接口集成應(yīng)用系統(tǒng)。使用戶可以根據(jù)需要訪問系統(tǒng)的各項(xiàng)功能和底層數(shù)據(jù),并利用第3方開發(fā)工具來擴(kuò)展其功能,達(dá)到用戶程序與CAXA實(shí)體設(shè)計(jì)的無縫集成。
CAXA實(shí)體設(shè)計(jì)主要提供了3種參數(shù)化設(shè)計(jì)功能[4],如圖2所示。
圖2 CAXA實(shí)體設(shè)計(jì)的參數(shù)化設(shè)計(jì)方法
系統(tǒng)利用ICAPI來實(shí)現(xiàn)零件的參數(shù)化設(shè)計(jì)。首先構(gòu)建軸承零部件的三維模型,并定義其參數(shù)構(gòu)成和關(guān)聯(lián)約束;然后,利用VC++ 語言構(gòu)建由軸承設(shè)計(jì)流程導(dǎo)航的設(shè)計(jì)過程環(huán)境,按零部件生成順序并從預(yù)建的數(shù)據(jù)庫中調(diào)用設(shè)計(jì)參數(shù)驅(qū)動(dòng)三維模型。
系統(tǒng)采用編程方式構(gòu)建軸承零部件的實(shí)體模型,CAXA實(shí)體設(shè)計(jì)的ICAPI創(chuàng)建實(shí)體是采用自上而下的設(shè)計(jì)方法。其創(chuàng)建零件三維模型時(shí)根據(jù)不同零件的特征采用不同的方式:如軸承內(nèi)、外圈和滾動(dòng)體等零件,其三維模型是在其二維草繪(IZProfile)基礎(chǔ)上繞回轉(zhuǎn)軸線旋轉(zhuǎn)(IZSpinFeature)而創(chuàng)建,而保持架等復(fù)雜零件的三維模型是三維實(shí)體(IZPart)通過面域拉伸(IZExtrudeFeature)、旋轉(zhuǎn)陣列等方法創(chuàng)建。
裝配體生成使用ICAPI的坐標(biāo)轉(zhuǎn)換機(jī)制[5],通過獲得子坐標(biāo)系相對(duì)于其父坐標(biāo)系的變換矩陣,在獲取零部件的錨點(diǎn)坐標(biāo)后,依據(jù)裝配關(guān)聯(lián)關(guān)系改變零件的位置完成裝配。
作為CAXA實(shí)體設(shè)計(jì)與外部應(yīng)用程序之間的接口,ICAPI是一系列函數(shù)的集合,這些函數(shù)提供了程序員直接訪問CAXA實(shí)體設(shè)計(jì)的能力。通過調(diào)用這些函數(shù),用戶可以建立模型,查詢模型對(duì)象,遍歷裝配體,創(chuàng)建工程圖,在主界面中創(chuàng)建交互式程序界面,創(chuàng)建并管理用戶定義對(duì)象等。
CAXA實(shí)體設(shè)計(jì)的三維設(shè)計(jì)和二維繪圖文檔分別對(duì)應(yīng)著ZIronCADSceneDoc對(duì)象和ZTDDrawingDoc對(duì)象,而這些對(duì)象則包含在ICAPI對(duì)象的基類ZIronCADApp中。ICAPI的每個(gè)對(duì)象都支持一系列的接口,這些接口包含了一組用來操作、查詢和創(chuàng)建它們包含的對(duì)象的函數(shù)。
下面以深溝球軸承為例,介紹優(yōu)化設(shè)計(jì)的過程。
當(dāng)軸承以疲勞壽命來考核時(shí),以軸承的基本額定動(dòng)載荷Cr最大為優(yōu)化目標(biāo)。目標(biāo)函數(shù)為:
(1)
式中:Dpw為球組節(jié)圓直徑;Z為球數(shù);Dw為球徑;bm為材料系數(shù),此處取bm=1.3;fc為載荷系數(shù),其與Dw/Dpw值有關(guān);Cr的大小由Dw,Dpw和Z的取值決定,因此將Dw,Dpw和Z作為軸承優(yōu)化設(shè)計(jì)主參數(shù),即設(shè)計(jì)變量X=[x1,x2,x3]T=[Dw,Dpw,Z]T。
則其目標(biāo)函數(shù)變?yōu)椋?/p>
F(X)=F(x1,x2,x3)
(1)球徑
Kwmin(D-d)≤Dw≤Kwmax(D-d)
即,g1(x)=x1-Kwmin(D-d)≥0
(2)
g2(x)=Kwmax(D-d)-x1≥0
(3)
式中:D為軸承外徑;d為軸承內(nèi)徑;Kwmin,Kwmax分別為球徑系數(shù)的最小值和最大值,由試驗(yàn)或經(jīng)驗(yàn)獲得。
(2)球組節(jié)圓直徑
0.5(D+d)≤Dpw≤0.515(D+d)
即,g3(x)=x2-0.5(D+d)≥0
(4)
g4(x)=0.515(D+d)-x2≥0
(5)
(3)填球角
180°≤Φ=2(Z-1)arcsin (Dw/Dpw)≤186°
(4)球數(shù)
即,g5(x)=x3-180Kzmin-1≥0
(6)
g6(x)=ΦmaxKzmax-x3+1≥0
(7)
(5)外圈最小壁厚
0.5(D-Dpw-Dw)-ξ(D-d)≥0
即,g7(x)=0.5(D-x2-x1)-ξ(D-d)≥0
(8)
式中:ξ為深溝球軸承外圈最小壁厚系數(shù),取值應(yīng)小于0.1。
采用綜合約束函數(shù)雙下降(SCDD)法[6],首先將目標(biāo)函數(shù)轉(zhuǎn)化成f(X)=1/F(X),變?yōu)榍笞钚≈祮栴},即尋找一組最優(yōu)解向量X=[x1,x2,x3]T,使f(X)達(dá)到最小。
將以上約束函數(shù)構(gòu)造一個(gè)綜合約束函數(shù):
(9)
這樣,目標(biāo)函數(shù)的可行域就可表示為:
G={X|X∈E,S(X)=0}
(10)
系統(tǒng)目標(biāo)要求在輸入D,d及寬度B和軸承型號(hào)等的情況下,由系統(tǒng)檢索或計(jì)算出優(yōu)化設(shè)計(jì)的主參數(shù),然后按照軸承設(shè)計(jì)文件編程,計(jì)算出各零件的詳細(xì)尺寸,并根據(jù)尺寸值檢索數(shù)據(jù)庫,查出相應(yīng)尺寸公差、形位公差的參數(shù),以生成三維零件模型、裝配模型和二維工程圖。圖3所示為系統(tǒng)流程圖。
圖3 系統(tǒng)流程圖
根據(jù)軟件開發(fā)需要實(shí)現(xiàn)的功能要求,軟件的結(jié)構(gòu)分為以下5個(gè)模塊:
(1)優(yōu)化設(shè)計(jì)模塊。按照建立的軸承優(yōu)化計(jì)算數(shù)學(xué)模型及其求解方法編寫相應(yīng)的計(jì)算程序,使系統(tǒng)能在獲得軸承外形參數(shù)和優(yōu)化算法計(jì)算系數(shù)后,經(jīng)過程序直接得到優(yōu)化計(jì)算結(jié)果。然后,通過對(duì)計(jì)算結(jié)果的檢驗(yàn)、修改后,獲得滿足用戶需求的最佳結(jié)果并存入數(shù)據(jù)庫中。
(2)檢索模塊。根據(jù)設(shè)計(jì)的軸承型號(hào)或給定的外形參數(shù),通過不同的檢索方法,對(duì)數(shù)據(jù)庫中所有的型號(hào)和相應(yīng)數(shù)據(jù)項(xiàng)進(jìn)行檢索,得到優(yōu)化設(shè)計(jì)主參數(shù)及其他設(shè)計(jì)參數(shù)。
(3)軸承標(biāo)準(zhǔn)設(shè)計(jì)模塊。根據(jù)公式或者設(shè)計(jì)人員的經(jīng)驗(yàn)編寫軸承結(jié)構(gòu)尺寸計(jì)算程序,將優(yōu)化設(shè)計(jì)計(jì)算或檢索得到的主參數(shù)輸入其中,得出結(jié)果。
(4)數(shù)據(jù)庫及接口模塊。系統(tǒng)中采用Access數(shù)據(jù)庫。在數(shù)據(jù)庫之上有數(shù)據(jù)庫訪問模塊,系統(tǒng)其他模塊與數(shù)據(jù)庫之間的操作都通過該模塊進(jìn)行, 接口模塊采用ODBC技術(shù)實(shí)現(xiàn)。
(5)輸出模塊。在CAXA實(shí)體設(shè)計(jì)軟件下進(jìn)行開發(fā),利用計(jì)算模塊的輸出結(jié)果作為輸入數(shù)據(jù),通過圖形軟件接口開發(fā),將數(shù)據(jù)轉(zhuǎn)化為三維模型和二維工程圖輸出。
將CAXA實(shí)體設(shè)計(jì)安裝目錄下的ICAddinAppWizard.awx文件拷貝至VC++ 安裝目錄下指定文件夾,利用新生成的“ICAPI Add-in AppWizard”向?qū)?chuàng)建新的DLL工程。然后,為工程添加對(duì)話框及類并完成相應(yīng)程序的編寫,以實(shí)現(xiàn)各系統(tǒng)模塊的創(chuàng)建及界面設(shè)計(jì)。編譯成功后,在CAXA實(shí)體設(shè)計(jì)中加載該工程后,系統(tǒng)最終實(shí)現(xiàn)。
圖4和圖5分別為深溝球軸承三維模型輸出界面及生成的球的三維模型。系統(tǒng)通過調(diào)用數(shù)據(jù)庫對(duì)零件所有設(shè)計(jì)參數(shù)以變量的形式向CAXA實(shí)體設(shè)計(jì)傳遞,利用ICAPI接口向CAXA實(shí)體設(shè)計(jì)發(fā)送繪圖指令生成模型,或?qū)σ延械哪P蛥?shù)進(jìn)行修改,從而完成創(chuàng)建軸承零件的實(shí)體模型,球模型生成的部分程序如下:
圖4 深溝球軸承三維模型輸出界面
圖5 球模型輸出
……
StrSql.Format("SELECT * FROM 參數(shù)表 WHERE d=%d AND DD=%d ",intNEIJING,intWAIJING,strXINGHAO); //數(shù)據(jù)庫查詢程序
……
r= data.m_r; dm= data.m_dm;… //參數(shù)傳遞
IZPartPtr bePart;
IZSceneDocPtr beSceneDoc;
HRESULT hr;
hr=beSceneDoc->CreatePart(&bePart); //定義零件對(duì)象,創(chuàng)建零件
……
hr=beSceneDoc->CreateProfile(&beProfile); //創(chuàng)建草繪
……
IZPartFeatureMgrPtr beNewPartFeatureMgr = bePart;
IZSpinFeaturePtr beSpinFeature; //旋轉(zhuǎn)特征
……
圖6為深溝球軸承裝配后的三維模型輸出。軸承各零件設(shè)計(jì)完成后,點(diǎn)擊“生成裝配體”按鈕自動(dòng)完成軸承裝配。系統(tǒng)運(yùn)用VC++ 程序獲得軸承各零件錨點(diǎn)坐標(biāo),通過坐標(biāo)轉(zhuǎn)換后,完成裝配體三維模型的創(chuàng)建。
圖6 深溝球軸承三維模型輸出
使用CAXA實(shí)體設(shè)計(jì)軟件與VC++ 語言編程相結(jié)合的方法來構(gòu)建通用軸承CAD參數(shù)化設(shè)計(jì)系統(tǒng),與軸承制造業(yè)的信息化要求相適應(yīng),并可以滿足軸承產(chǎn)品系列化設(shè)計(jì)的要求。本系統(tǒng)的實(shí)現(xiàn),可提高軸承設(shè)計(jì)的可靠度及效率。