葛樂樂,張 龍,胡凱文
(南京理工大學(xué) 機(jī)械工程學(xué)院,江蘇 南京 210094)
兩個凸輪固結(jié)在同一回轉(zhuǎn)軸,分別稱為主凸輪和回凸輪,用于控制從動件的推程與回程,固結(jié)的兩凸輪稱為共軛凸輪,一般將控制從動件推程的凸輪稱為主凸輪。共軛凸輪機(jī)構(gòu)因其傳動精確,能夠精確控制機(jī)構(gòu)從動件的推程和回程,被廣泛應(yīng)用于打緯、開口、引緯等精密機(jī)械中[1,2]。
為了保證共軛凸輪機(jī)構(gòu)的精確性,需要設(shè)計有較高精度的凸輪廓曲線。凸輪機(jī)構(gòu)的設(shè)計方法大致分為圖解法和解析法兩大類。圖解法的設(shè)計任務(wù)量比較大,而且不能滿足設(shè)計精度的要求;因此,大多采用解析法,利用計算機(jī)進(jìn)行求解。
蔡漢明等[3]使用C#語言對AutoCAD進(jìn)行了二次開發(fā),得到了凸輪輪廓曲線的DWG格式文件,實現(xiàn)了共軛凸輪的參數(shù)化設(shè)計;魏奔等[4,5]為了實現(xiàn)共軛凸輪機(jī)構(gòu)滿足許用壓力角的要求,利用MATLAB開發(fā)計算機(jī)輔助設(shè)計軟件,通過人機(jī)交互的方式獲得了凸輪廓線特征點數(shù)據(jù);LIU Qing-li等[6]使用Creo軟件輸入公式生成凸輪輪廓曲線,實現(xiàn)了共軛凸輪的參數(shù)化設(shè)計,并對機(jī)構(gòu)進(jìn)行了運(yùn)動仿真,驗證了從動件運(yùn)動規(guī)律;趙曉芬[7]在NX5草圖環(huán)境下,利用弗洛克近似法求解,確定了凸輪機(jī)構(gòu)的基本尺寸,通過輸入輪廓曲線表達(dá)式生成了凸輪草圖,拉伸生成了凸輪三維模型。上述方法不能實現(xiàn)共軛凸輪機(jī)構(gòu)壓力角最小化,不能使機(jī)構(gòu)的傳動效率達(dá)到最優(yōu);而且,以上方法只能得到凸輪的輪廓曲線特征點或零件圖,不能直接獲得凸輪的三維模型。
本文建立最大壓力角最小化的優(yōu)化模型,采用遺傳算法進(jìn)行求解,得到共軛凸輪機(jī)構(gòu)的基本尺寸,編寫指令式共軛凸輪機(jī)構(gòu)計算機(jī)輔助設(shè)計軟件,對SolidWorks進(jìn)行二次開發(fā),并對機(jī)構(gòu)進(jìn)行ADAMS仿真驗證。
以凸輪的角位移(φ)為x軸,以從動件的角位移(ψ)為y軸,繪制函數(shù)ψ=f(φ),所得曲線稱為凸輪機(jī)構(gòu)從動件運(yùn)動規(guī)律曲線。一般來說,從動件規(guī)律的給出方式有兩種:
(1)將從動件運(yùn)動規(guī)律曲線分解成若干段,每一段以標(biāo)準(zhǔn)傳動函數(shù)的形式給出,標(biāo)準(zhǔn)傳動函數(shù)通常選?。盒葜惯\(yùn)動、多項式運(yùn)動規(guī)律、簡諧加速度運(yùn)動規(guī)律,等[8];
(2)以離散點{φi,ψi},{dψ/dφ}來表示運(yùn)動特性曲線。
本文計算實例的從動件運(yùn)動規(guī)律以方式1給出,從動件運(yùn)動規(guī)律如表1所示。
表1 從動件運(yùn)動規(guī)律
凸輪機(jī)構(gòu)壓力角是機(jī)構(gòu)最重要的參數(shù)之一,對機(jī)構(gòu)的傳動效率有著重大影響。
凸輪機(jī)構(gòu)壓力角示意圖如圖1所示。
圖1 凸輪壓力角示意圖
圖1中,O為凸輪轉(zhuǎn)動中心,A為擺桿的轉(zhuǎn)動中心,凸輪與擺桿接觸點處的公法線與OA連線交于點P,可知P為擺桿從動件與凸輪的瞬心;凸輪與擺桿在P點處的速度大小相等,速度方向相同。所以,當(dāng)凸輪的轉(zhuǎn)動方向與擺桿轉(zhuǎn)動方向相反時,當(dāng)且僅當(dāng)P點在OA的連線上,凸輪與擺桿在P點的速度方向才相同;同理,當(dāng)凸輪的轉(zhuǎn)動方向與擺桿轉(zhuǎn)動方向相同時,當(dāng)且僅當(dāng)P點在OA的延長線上,凸輪與擺桿在P點的速度方向才相同。
過P點作PC⊥AB,則有∠BPC=α,即機(jī)構(gòu)此時的壓力角??傻脡毫菨M足:
(1)
式中:LBC—BC的長度;LPC—PC的長度。
其表達(dá)式分別為:
LBC=LAP·cos(ψG-ψ)-LAB
(2)
LPC=LAPsin(ψG-ψ)
(3)
式中:LAP—AP的長度;LAB—AB的長度;ψG—擺桿初始時刻與y軸負(fù)半軸的夾角。
其表達(dá)式為:
(4)
因為P點為擺桿與凸輪的瞬心,根據(jù)瞬心的定義有:
(5)
根據(jù)圖1可得:
(6)
式中:η—轉(zhuǎn)向標(biāo)志量,當(dāng)凸輪轉(zhuǎn)向與擺桿轉(zhuǎn)向相同時η=1,當(dāng)凸輪轉(zhuǎn)向與擺桿轉(zhuǎn)向相反時η=-1。
根據(jù)式(1~5),壓力角可改寫為:
(7)
對于給定的{φi,ψi},可以利用反轉(zhuǎn)法與機(jī)構(gòu)學(xué)的知識得到凸輪廓線的數(shù)學(xué)模型。
共軛凸輪廓線求解示意圖如圖2所示。
圖2 共軛凸輪廓線求解示意圖
(8)
式中:α—凸輪機(jī)構(gòu)中心矩;L1—擺桿1的長度。
所以,可得主凸輪的理論廓線坐標(biāo)方程:
(9)
同理,回凸輪的理論廓線坐標(biāo)方程為:
(10)
式中:L2—擺桿2的長度。
則凸輪的實際廓線坐標(biāo)方程:
(11)
式中:R—滾子半徑;θ—理論輪廓曲線對應(yīng)點處法線的升角。
(12)
因為計算機(jī)的離散性,本文將表1從動件運(yùn)動規(guī)律曲線離散化,得到一系列離散點,將其代入上述公式,便可得到凸輪輪廓曲線的離散點。
遺傳算法是20世紀(jì)60年代末期由Michigan大學(xué)教授JOHN H提出的一種模擬生物進(jìn)化機(jī)制來進(jìn)行全局優(yōu)化搜索的算法[9]。與傳統(tǒng)的梯度下降算法等優(yōu)化方法相比,遺傳算法并不要求計算目標(biāo)函數(shù)的梯度,對目標(biāo)函數(shù)的凹凸性也相對要求較低,這些使得遺傳算法可以更加有效地解決優(yōu)化問題。
遺傳算法的計算過程一般分為:初始化種群,每個個體按二進(jìn)制或十進(jìn)制進(jìn)行編碼;計算每個個體的適應(yīng)度,通常是由目標(biāo)函數(shù)進(jìn)行變換得到的;根據(jù)個體的適應(yīng)度,利用交叉算子和變異算子對種群進(jìn)行更新,直至優(yōu)化準(zhǔn)則得到滿足,結(jié)束計算。
本文以種群大小為100,交叉概率0.8,變異概率0.2進(jìn)行遺傳算法求解。
共軛凸輪的基本尺寸主要有:
中心矩α,基圓半徑rG,擺桿1長度L1,擺桿2長度L2,擺桿夾角αR,滾子半徑rR,通常有L1=L2=L,本文中αR=100°,rR=7。
基本尺寸主要根據(jù)壓力角來確定,基本尺寸選取不好,可能會導(dǎo)致機(jī)構(gòu)壓力角過大、傳動效率降低、更容易磨損。通常確定凸輪機(jī)構(gòu)基本尺寸的方法,主要是根據(jù)許用壓力角的要求,使用作圖法確定基本尺寸。但是,這種方法并不能使得機(jī)構(gòu)的壓力角達(dá)到最小,不能使機(jī)構(gòu)的傳動效率達(dá)到最優(yōu)。
本文采用遺傳算法的優(yōu)化方法,以最小化凸輪機(jī)構(gòu)的最大壓力角為優(yōu)化目標(biāo),建立相應(yīng)的約束方程,進(jìn)而求解機(jī)構(gòu)的基本尺寸。
優(yōu)化模型的目標(biāo)函數(shù)為:
min: max(α1(X,φi,ψi),α2(X,φi,ψi))
(13)
式中:X—優(yōu)化模型決策變量,X=[x1,x2,x3]=[α,rG,L]。
壓力角計算見式(6),決策變量的取值范圍需要根據(jù)機(jī)構(gòu)的工作空間進(jìn)行確定,本文取下限為[20,20,15],取上限為[45,30,30]。
因為決策變量需要構(gòu)成三角形,所以應(yīng)該有約束方程:
(14)
本文利用遺傳算法對優(yōu)化模型進(jìn)行三次求解,遺傳算法計算結(jié)果如表2所示。
表2 遺傳算法計算結(jié)果
由表2可以看出:算法每次計算求得的目標(biāo)函數(shù)的差距不超過0.1°,說明遺傳算法具有較好的穩(wěn)定性。
選取第一組解的結(jié)果進(jìn)行分析。第一次優(yōu)化,其每代適應(yīng)度的均值與最優(yōu)值隨遺傳算法迭代次數(shù)的優(yōu)化收斂圖如圖3所示。
圖3 共軛凸輪參數(shù)優(yōu)化收斂圖
從圖3可以看出:算法在第20代左右即達(dá)到了最優(yōu)值,之后的迭代計算也沒有出現(xiàn)大幅度波動,可以看出遺傳算法具有較好的收斂性。
因為本文的決策變量有3個,為了能更直觀地分析遺傳算法的準(zhǔn)確性,現(xiàn)令中心矩為第1次的優(yōu)化結(jié)果α=35.65 mm;以基圓半徑為x軸,擺長為y軸,繪制共軛最大壓力角凸輪壓力角等高線圖,如圖4所示。
圖4 共軛凸輪最大壓力角等高線圖
從圖4中可以看出:當(dāng)中心矩為35.65 mm時,目標(biāo)函數(shù)最優(yōu)值為23.366 4°,與遺傳算法優(yōu)化結(jié)果相同。由此可見,遺傳算法求解具有較好的準(zhǔn)確性。
本文使用MFC開發(fā)共軛凸輪計算機(jī)輔助設(shè)計軟件[10],具體步驟為:
采用指令式的設(shè)計方法,將共軛凸輪機(jī)構(gòu)設(shè)計的每個步驟設(shè)計成一個指令,將每一個共軛凸輪機(jī)構(gòu)的設(shè)計抽象為一組指令程序;用戶通過拖動的方式將指令集內(nèi)的指令添加到指令程序內(nèi),軟件給與每個指令相應(yīng)的反饋;用戶設(shè)計完成一個共軛凸輪機(jī)構(gòu)時,一組對應(yīng)的指令程序也就相應(yīng)地編寫完成,可以對該指令程序進(jìn)行保存;保存好的指令程序可以在軟件內(nèi)打開,實現(xiàn)上次設(shè)計的重現(xiàn)。
共軛凸輪機(jī)構(gòu)的數(shù)字化設(shè)計流程如圖5所示。
圖5 共軛凸輪機(jī)構(gòu)數(shù)字化設(shè)計流程
本文以表1的運(yùn)動規(guī)律為例,進(jìn)行共軛凸輪的數(shù)字化設(shè)計實例驗證。
添加輸入從動件運(yùn)動規(guī)律指令,可得運(yùn)動規(guī)律輸入界面,如圖6所示。
圖6 運(yùn)動規(guī)律輸入界面
在圖6對話框中輸入從動件運(yùn)動規(guī)律,然后添加輸入基本尺寸指令,可得運(yùn)動學(xué)尺寸參數(shù)輸入界面,如圖7所示。
圖7 運(yùn)動學(xué)尺寸參數(shù)輸入界面
在圖7的對話框中輸入基本尺寸參數(shù),用戶可以選擇是否使用遺傳算法進(jìn)行參數(shù)的優(yōu)化。遺傳算法的參數(shù)優(yōu)化可以利用Galib類庫來實現(xiàn)[11]。輸入?yún)?shù)之后,添加計算凸輪輪廓指令,計算完成之后可以在繪圖區(qū)域內(nèi)得到凸輪的輪廓曲線。
為了能夠直接獲得凸輪的三維模型,軟件設(shè)有生成SolidWorks零件模型指令,實現(xiàn)SolidWorks二次開發(fā)。為了方便二次開發(fā),SolidWorks提供了幾百個API函數(shù),這些函數(shù)使得程序員得以直接訪問SolidWorks[12]。在MFC中要使用這些函數(shù),只需要導(dǎo)入SolidWorks便可。添加生成SolidWorks零件模型指令后,SolidWorks軟件便會自動啟動,繪制凸輪的草圖,進(jìn)行拉伸后得到零件的三維模型。
其主要程序如下:
{
CComPtr
swApp.CoCreateInstance (__uuidof(SldWorks));
VARIANT_BOOL *visibility=NULL;
swApp -> get_Visible(visibility);
swApp -> put_Visible(TRUE);
IPartDocPtr myPart = swApp -> INewPart();
IModelDoc2 *m_pModelDoc;
myPart ->QueryInterface(&m_pModelDoc);
VARIANT_BOOL retval;
retval=m_pModelDoc->SelectByID(_T("前視基準(zhǔn)面"),_T("PLANE"),0,0,0);
m_pModelDoc -> InsertSketch();
…
}
得到的共軛凸輪主、回凸輪三維模型如圖8所示。
圖8 主、回凸輪三維模型
至此便實現(xiàn)了一例共軛凸輪機(jī)構(gòu)的數(shù)字化設(shè)計,同時軟件也生成了一組指令程序,可以選擇將其保存為TXT文件,方便下次打開,實現(xiàn)設(shè)計過程的復(fù)現(xiàn)。
為了驗證軟件計算的準(zhǔn)確性,本文利用SolidWorks制作共軛凸輪機(jī)構(gòu)的虛擬樣機(jī)。將制作好的虛擬樣機(jī)導(dǎo)入Adams,在凸輪、擺桿以及滾子的轉(zhuǎn)動中心添加轉(zhuǎn)動副,并給主凸輪和回凸輪添加固定約束;給主凸輪施加驅(qū)動,進(jìn)行運(yùn)動仿真,得到從動件運(yùn)動規(guī)律。
與表1所給的從動件運(yùn)動規(guī)律相比,可得運(yùn)動規(guī)律的設(shè)計要求曲線與仿真曲線比較圖,如圖9所示。
圖9 設(shè)計要求曲線與仿真曲線的比較
從圖9可看出:仿真曲線與設(shè)計要求曲線基本吻合,最大誤差值為0.5°。由此可見,該軟件所設(shè)計的共軛凸輪機(jī)構(gòu)可以比較好地滿足要求。
基于遺傳算法的共軛凸輪機(jī)構(gòu)優(yōu)化設(shè)計的方法,筆者通過優(yōu)化計算的方法,使得機(jī)構(gòu)的最大壓力角達(dá)到全局最優(yōu)值附近,提高了機(jī)構(gòu)的傳動效率;對SolidWorks的二次開發(fā),降低了機(jī)構(gòu)設(shè)計的工作量;對設(shè)計結(jié)果進(jìn)行仿真分析,檢驗了設(shè)計方法的正確性。
本研究給出的基于遺傳算法的共軛凸輪機(jī)構(gòu)的計算機(jī)輔助設(shè)計方法,為共軛凸輪的優(yōu)化設(shè)計提供了理論工具和設(shè)計手段。這種方法在減輕設(shè)計工作量的同時,優(yōu)化了機(jī)構(gòu)的傳動效率,使得共軛凸輪的設(shè)計更加自動化。
同時,本研究的不足之處,即共軛凸輪機(jī)構(gòu)在實際使用中可能存在很多受制條件,在今后的研究中,需要考慮增加相應(yīng)約束,改進(jìn)算法,以實現(xiàn)更加通用的設(shè)計方法。