1 引言
隨著科學(xué)技術(shù)的進(jìn)步,現(xiàn)代制造業(yè)正朝高速、高效和高精度方向發(fā)展,對(duì)機(jī)床結(jié)構(gòu)和性能提出了越來越高的要求。因此,如何適應(yīng)市場(chǎng)需求,在復(fù)雜多變的市場(chǎng)經(jīng)濟(jì)中,快速高質(zhì)量地設(shè)計(jì)制造出市場(chǎng)所需的切削加工設(shè)備是制造行業(yè)競(jìng)爭(zhēng)的焦點(diǎn)。所以將計(jì)算機(jī)輔助設(shè)計(jì)(CAD)技術(shù)應(yīng)用到機(jī)床設(shè)計(jì)當(dāng)中一直是眾多廠家的愿望。以前的CAD軟件大都采用面向過程的設(shè)計(jì)方法編寫,不可避免的存在系統(tǒng)開發(fā)速度慢,周期長(zhǎng),費(fèi)用高,軟件質(zhì)量差,可讀性、可靠性、易維護(hù)性差等缺陷。隨著計(jì)算機(jī)技術(shù)的發(fā)展和廣泛應(yīng)用,設(shè)計(jì)的方法和手段也隨之不斷改進(jìn)和完善。面向?qū)ο蠓椒ㄕ鹑藗兊年P(guān)注和重視。對(duì)象是對(duì)現(xiàn)實(shí)世界基本成分的一種抽象,每個(gè)對(duì)象都有其自身的運(yùn)行規(guī)律(行為)和內(nèi)部狀態(tài)(屬性)。通過類比把具有相同或相似屬性和行為的對(duì)象抽象形成對(duì)象類(歸納),對(duì)象類之間還可以通過繼承機(jī)制,使得子對(duì)象類具有某些父對(duì)象類的屬性和行為,形成層次結(jié)構(gòu)(演繹),不同的對(duì)象類的組合及相互作用(通過消息實(shí)現(xiàn))就構(gòu)成了我們所要研究和分析的客觀系統(tǒng)。面向?qū)ο蟮能浖_發(fā)關(guān)鍵是建立一個(gè)統(tǒng)一的模型———對(duì)象模型,充分分析對(duì)象以及對(duì)象之間的關(guān)系和作用,對(duì)分析的模型加以細(xì)化、調(diào)整,實(shí)現(xiàn)概念模型到計(jì)算機(jī)模型的面向?qū)ο筠D(zhuǎn)化,最后用面向?qū)ο蟮恼Z(yǔ)言實(shí)現(xiàn)該模型。
圖1 主傳動(dòng)系統(tǒng)對(duì)象模型
2 模型建立
根據(jù)面向?qū)ο蟮姆椒ā⒃砗蜋C(jī)床主傳動(dòng)系統(tǒng)的特點(diǎn),首先要建立主傳動(dòng)系統(tǒng)的對(duì)象模型?;趯?duì)象的劃分原則,整個(gè)系統(tǒng)由以下不同的對(duì)象類組成,如圖1所示。在模型的層次結(jié)構(gòu)中上層與下層對(duì)象類既有包含與被包含的關(guān)系,也有繼承與被繼承的關(guān)系,從上到下,從整體到局部把系統(tǒng)逐步細(xì)化,分解成容易管理與設(shè)計(jì)的各個(gè)對(duì)象類。還可以這些對(duì)象為基類再派生出一些子類,使得對(duì)象更加具體與簡(jiǎn)單,如:齒輪類可以派生出兩個(gè)子類,固定齒輪類和滑移齒輪類等。這樣整個(gè)系統(tǒng)的設(shè)計(jì)就演化成對(duì)各個(gè)子類的設(shè)計(jì)和類與類之間關(guān)系的分析與實(shí)現(xiàn)上。
3 模型設(shè)計(jì)
在對(duì)象模型的基礎(chǔ)上,再對(duì)每個(gè)對(duì)象類進(jìn)行詳細(xì)設(shè)計(jì),分析出每個(gè)對(duì)象類的屬性和方法,形成系統(tǒng)的概念模型,用表達(dá)式A:{b,c,d,e,…}表示,其含義為A有屬性b,c,d,e…。例如:
主軸類:{軸端類型,軸承配置形式,前軸承直徑,后軸承直徑,內(nèi)孔直徑,齒輪處直徑,主軸跨距,主軸支撐形式}
固定齒輪類:{模數(shù),齒數(shù),孔徑,鍵高,鍵寬,軸鍵槽深度,輪轂鍵槽深,類型}
軸承類:{軸承類型,小徑,大徑,寬度,額定動(dòng)載荷,額定靜載荷,小徑最小安裝尺寸,大徑最大安裝尺寸}
螺紋類:{類型,螺紋大徑,小徑,中徑,長(zhǎng)度}
節(jié)點(diǎn)類:{子節(jié)點(diǎn)的數(shù)目,父節(jié)點(diǎn)指針,子節(jié)點(diǎn)指針,數(shù)據(jù)項(xiàng),作圖標(biāo)志}
傳動(dòng)級(jí)類:{主動(dòng)齒數(shù),被動(dòng)齒數(shù),傳動(dòng)副數(shù),級(jí)比指數(shù),傳動(dòng)比,父節(jié)點(diǎn)數(shù)目}
…………………………………………
其中:節(jié)點(diǎn)類和傳動(dòng)級(jí)類屬于中間設(shè)計(jì)所需類,用于轉(zhuǎn)速圖和傳動(dòng)系統(tǒng)圖的實(shí)現(xiàn)。
在對(duì)象模型和屬性分析的基礎(chǔ)上,便可以用面向?qū)ο蟮挠?jì)算機(jī)語(yǔ)言將這些對(duì)象類表達(dá)出來,實(shí)現(xiàn)現(xiàn)實(shí)中的概念模型向計(jì)算機(jī)內(nèi)的邏輯模型的轉(zhuǎn)化,通過一定的算法和運(yùn)行環(huán)境機(jī)制最終完成軟件的設(shè)計(jì)。
4 系統(tǒng)實(shí)現(xiàn)
在對(duì)象模型和概念模型的基礎(chǔ)上將整個(gè)軟件的設(shè)計(jì)分解成5個(gè)子模塊:運(yùn)動(dòng)參數(shù)設(shè)計(jì)模塊、傳動(dòng)零件初步計(jì)算模塊、操縱機(jī)構(gòu)模塊、繪制裝配草圖模塊、零件校核模塊。通過這5個(gè)模塊逐步實(shí)現(xiàn)對(duì)每個(gè)對(duì)象的設(shè)計(jì),從而完成系統(tǒng)的設(shè)計(jì)。本軟件使用C++語(yǔ)言,開發(fā)工具是Visual C++ 6.0,運(yùn)行環(huán)境是Windows 95/98或Windows NT?,F(xiàn)以固定齒輪類為例,說明類的描述。
ClassCFixGear //固定齒輪類
{
private:
float modula: //模數(shù)
int numberofchishu: //齒數(shù)
int innerdiameter: //孔徑
int jianhigh: //鍵高
……
public:
CMainAxisPart(): //構(gòu)造函數(shù)
~CMainAxisPart(): //析構(gòu)函數(shù)
void GetXXX(): //獲得當(dāng)前齒輪狀態(tài)的函數(shù)
…………………
void SetXXX(XXXxxx): //設(shè)置齒輪狀態(tài)函數(shù)
…………………
fload CalTouch(): //按接觸疲勞強(qiáng)度計(jì)算模數(shù)
fload CalBend(): //按彎曲疲勞強(qiáng)度計(jì)算模數(shù)
int JiaoHe(floadm,intz): //校核齒輪
void OnDraw(CDCpDC,CPointpoint)://在顯示設(shè)備中畫出齒輪
……………………
}
各個(gè)類之間的數(shù)據(jù)協(xié)調(diào)與傳遞是通過消息機(jī)制和Visual C++特有的文檔類視圖類的結(jié)構(gòu)實(shí)現(xiàn)的,如圖2所示。由圖知通過這些聯(lián)系可將所有彼此相互獨(dú)立的對(duì)象類有機(jī)地結(jié)合起來,并且這種結(jié)構(gòu)是低耦合度、高聚合度的,某個(gè)類的改變對(duì)其它類影響極小,只有消息的改變,其相應(yīng)的對(duì)象才有相應(yīng)的反應(yīng),表現(xiàn)出相應(yīng)的形態(tài)。
圖2 各類之間的連接關(guān)系
通過這些類的定義、函數(shù)的實(shí)現(xiàn)和類之間聯(lián)系,可方便地實(shí)現(xiàn)系統(tǒng)中的每個(gè)模塊,快速開發(fā)出相應(yīng)的CAD軟件。同時(shí)類具有繼承性、多態(tài)性、易理解性和可擴(kuò)充性,這使得所開發(fā)出的軟件易維護(hù),功能易擴(kuò)充,代碼可重用,系統(tǒng)升級(jí)、修改變得簡(jiǎn)單容易。
5 數(shù)據(jù)庫(kù)設(shè)計(jì)
在機(jī)床設(shè)計(jì)中需要查閱大量的數(shù)據(jù)、資料,一般全都是靠人的手工去查詢,既繁瑣又容易出錯(cuò)。在本系統(tǒng)中運(yùn)用數(shù)據(jù)庫(kù)技術(shù)將這些數(shù)據(jù)、資料整理匯總成數(shù)據(jù)庫(kù),包括如下表項(xiàng):齒輪齒數(shù)庫(kù)、齒輪材料庫(kù)、各類軸承庫(kù)、螺紋庫(kù)、典型主軸組件庫(kù)、零件驗(yàn)算所需的參數(shù)庫(kù)等。數(shù)據(jù)庫(kù)是用微軟的SQL Server實(shí)現(xiàn)的,應(yīng)用程序與數(shù)據(jù)庫(kù)的接口用的是ODBC技術(shù)。Visual C++對(duì)ODBC的支持是通過CRecordSet類和CDatabase類實(shí)現(xiàn)的,在應(yīng)用程序中生成一個(gè)CRecoedSet的派生類和CDatabase實(shí)例就可以方便、快速、安全地與任何一個(gè)支持ODBC的數(shù)據(jù)庫(kù)相連。
我們按上述方法研制出了較實(shí)用的車床主傳動(dòng)CAD系統(tǒng),試用效果良好。