孫一平
(貴州職業(yè)技術(shù)學(xué)院,貴州貴陽(yáng)550023)
?
基于MFC的盤(pán)形凸輪機(jī)構(gòu)設(shè)計(jì)研究
孫一平
(貴州職業(yè)技術(shù)學(xué)院,貴州貴陽(yáng)550023)
摘要:為了參數(shù)化設(shè)計(jì)凸輪機(jī)構(gòu),實(shí)現(xiàn)凸輪機(jī)構(gòu)動(dòng)畫(huà)過(guò)程,設(shè)計(jì)了一種基于MFC的盤(pán)形凸輪機(jī)構(gòu)人機(jī)交互系統(tǒng)。利用消息映射機(jī)制,完成了滾子直動(dòng)從動(dòng)件盤(pán)形凸輪的設(shè)計(jì)和凸輪運(yùn)動(dòng)過(guò)程的動(dòng)畫(huà)演示。結(jié)果表明:所設(shè)計(jì)系統(tǒng)達(dá)到了設(shè)計(jì)需求,完成了對(duì)凸輪機(jī)構(gòu)的設(shè)計(jì)示教。
關(guān)鍵詞:參數(shù)化人機(jī)交互動(dòng)畫(huà)示教
0引言
凸輪廣泛運(yùn)用于各種機(jī)械設(shè)備、自動(dòng)裝置,如機(jī)床、紡織機(jī)械和發(fā)動(dòng)機(jī)配氣機(jī)構(gòu)等。盤(pán)形凸輪機(jī)構(gòu)是機(jī)械設(shè)計(jì)的重要內(nèi)容,平面凸輪的運(yùn)動(dòng)規(guī)律多種多樣,一般可通過(guò)三維軟件實(shí)體建模,如采用UG、Solidworks等[1],但此建模方法計(jì)算廓線參數(shù)表達(dá)式過(guò)程復(fù)雜,難以實(shí)現(xiàn)凸輪設(shè)計(jì)的多樣性。
為解決上述問(wèn)題,本設(shè)計(jì)利用VC++6.0編程環(huán)境下的MFC類庫(kù),采用面向?qū)ο蟮木幊趟枷脒M(jìn)行人機(jī)界面開(kāi)發(fā),實(shí)時(shí)根據(jù)對(duì)話框參數(shù)定制凸輪廓線,并查看其廓線對(duì)應(yīng)的運(yùn)動(dòng)規(guī)律。應(yīng)用基于MFC的技術(shù)方法,不但可以采用參數(shù)化設(shè)計(jì)盤(pán)形凸輪機(jī)構(gòu),同時(shí),可對(duì)機(jī)構(gòu)運(yùn)動(dòng)過(guò)程進(jìn)行動(dòng)畫(huà)演示,彌補(bǔ)了傳統(tǒng)凸輪機(jī)構(gòu)設(shè)計(jì)的抽象性,更加形象生動(dòng)地表達(dá)凸輪機(jī)構(gòu)工作過(guò)程,實(shí)現(xiàn)設(shè)計(jì)過(guò)程的直觀性,感觀性和高效化[2]。
1凸輪廓線
1.1坐標(biāo)計(jì)算
圖1 凸輪廓線
(1)
式(1)即為理論凸輪廓線的方程式,也稱為理論廓線方程。
對(duì)于滾子從動(dòng)件凸輪機(jī)構(gòu),推桿在B處裝有滾子,以提高推桿的使用壽命。顯然,只要使?jié)L子中心B沿理論廓線曲線上運(yùn)動(dòng),即可保證推桿預(yù)期的運(yùn)動(dòng)規(guī)律。此時(shí)凸輪的輪廓曲線不是理論廓線,而是處處與滾子相切的另一條曲線,這條曲線稱為凸輪的實(shí)際廓線。因?yàn)閷?shí)際廓線與理論廓線在法線方向的距離處處相等,且等于滾子半徑rr,故當(dāng)已知廓線上任一點(diǎn)B(x,y),只要沿理論廓線在該點(diǎn)法線方向取距離為rr,即得實(shí)際廓線上相應(yīng)點(diǎn)B′(x′,y′)。由此可見(jiàn),理論廓線上作一系列滾子圓的包絡(luò)線即為實(shí)際廓線。因此實(shí)際廓線是理論廓線的等距曲線,該等距曲線有兩條,即內(nèi)等距曲線和外等距曲線。
盤(pán)狀槽形凸輪的廓線即為該兩條等距曲線。由高等數(shù)學(xué)知識(shí)可求得理論廓線B點(diǎn)處法線n-n的斜率(與切線斜率互為負(fù)倒數(shù))應(yīng)為:
(2)
式(2)中的dx/dy與dy/dx可根據(jù)式(1)求出,代入式(2)后有:
(3)
式(3)中的θ角可在0°~360°變化,其值要根據(jù)分子、分母的正負(fù)號(hào)所決定的tanθ所在象限來(lái)計(jì)算。求出θ角后,可計(jì)算B′(x′,y′)的坐標(biāo)值:
(4)
式中“-”號(hào)為內(nèi)等距曲線,“+”號(hào)為外等距曲線。式(4)即為凸輪的實(shí)際廓線方程式。此時(shí)實(shí)際廓線的基圓半徑r0等于理論廓線的基圓半徑rb與滾子半徑rr之差:r0=rb-rr。
1.2機(jī)構(gòu)動(dòng)畫(huà)
當(dāng)凸輪轉(zhuǎn)動(dòng)時(shí),凸輪機(jī)構(gòu)的坐標(biāo)點(diǎn)相對(duì)于原點(diǎn)的坐標(biāo)值要改變。設(shè)凸輪上一點(diǎn)原來(lái)坐標(biāo)為(x,y),當(dāng)凸輪轉(zhuǎn)動(dòng)θ角以后,其坐標(biāo)變?yōu)?x′,y′)[4],則有以下關(guān)系:
在做機(jī)構(gòu)運(yùn)動(dòng)仿真時(shí),讓?duì)冉菑?°到360°等量增加,則可以實(shí)現(xiàn)一系列凸輪的位置變換,形成連續(xù)的動(dòng)畫(huà),并得到凸輪運(yùn)動(dòng)規(guī)律的位移、速度和加速度曲線。
2運(yùn)動(dòng)規(guī)律
凸輪機(jī)構(gòu)是機(jī)械傳動(dòng)中一種常用的傳動(dòng)機(jī)構(gòu),一般是由主動(dòng)件凸輪,從動(dòng)件推桿和機(jī)架三個(gè)構(gòu)件組成。凸輪通常作等速運(yùn)動(dòng),推動(dòng)推桿按一定的運(yùn)動(dòng)規(guī)律運(yùn)動(dòng),推桿的運(yùn)動(dòng)規(guī)律是指其位移,速度和加速度三個(gè)運(yùn)動(dòng)參數(shù)隨時(shí)間( 或凸輪轉(zhuǎn)角) 變化規(guī)律[5]。推桿的運(yùn)動(dòng)規(guī)律是由凸輪的輪廓曲線決定的,反之,要設(shè)計(jì)出凸輪的廓線,必須先確定從動(dòng)件的運(yùn)動(dòng)規(guī)律[6]。
對(duì)于推桿直動(dòng)從動(dòng)件盤(pán)形凸輪機(jī)構(gòu),在一個(gè)運(yùn)動(dòng)周期內(nèi)一般會(huì)經(jīng)歷推程,遠(yuǎn)休止,回程和近休止四個(gè)階段,不同的凸輪廓線,推桿的運(yùn)動(dòng)規(guī)律不同,正確理解凸輪機(jī)構(gòu)推桿的運(yùn)動(dòng)規(guī)律、基圓半徑的大小、偏心距、從動(dòng)件滾子半徑對(duì)凸輪廓線形狀的影響是非常重要的。對(duì)常用的四種推桿從動(dòng)件運(yùn)動(dòng)規(guī)律設(shè)計(jì),如表1。
表1 從動(dòng)件的運(yùn)動(dòng)方程式
3人機(jī)界面設(shè)計(jì)
VC++中的輔助軟件開(kāi)發(fā)包MFC是一個(gè)建立在Windows API之上的C++類庫(kù)(C++ClassLibrary),對(duì)話框能簡(jiǎn)便地編寫(xiě)出處理能力強(qiáng)大、操作簡(jiǎn)單的人機(jī)交互式平臺(tái),這使得開(kāi)發(fā)Windows應(yīng)用程序變得簡(jiǎn)單而高效[7];它提供復(fù)雜的資源編輯器、窗口程序的界面和基本輸入輸出,可以編輯對(duì)話框、菜單、工具欄、圖像和其它許多Windows應(yīng)用程序的組成元素[8]。
基于MFC的盤(pán)形凸輪機(jī)構(gòu)人機(jī)交互式平臺(tái)包括對(duì)話框、菜單欄、和繪圖區(qū)等操作區(qū),其界面如圖2所示。通過(guò)對(duì)話框欄能進(jìn)行凸輪運(yùn)動(dòng)規(guī)律選擇,并設(shè)定凸輪參數(shù),執(zhí)行菜單欄選項(xiàng)能調(diào)出對(duì)話框欄,并實(shí)現(xiàn)凸輪機(jī)構(gòu)的動(dòng)畫(huà)演示過(guò)程。
圖3 流程圖
基于MFC的凸輪機(jī)構(gòu)設(shè)計(jì)內(nèi)容主要包括初始化凸輪參數(shù),調(diào)用Ondraw函數(shù)繪制凸輪廓線以及執(zhí)行OnSimuStart()函數(shù)使凸輪實(shí)時(shí)動(dòng)作。流程圖如圖3所示。
啟動(dòng)Tulun.dsw應(yīng)用程序后,從流程圖知:首先配置正確的凸輪各參數(shù),然后運(yùn)行程序,繪圖區(qū)得到凸輪廓線,執(zhí)行凸輪機(jī)構(gòu)仿真函數(shù)后,凸輪動(dòng)畫(huà)模擬。
根據(jù)盤(pán)形凸輪機(jī)構(gòu)的特點(diǎn)在win32環(huán)境下,從VC++6.0開(kāi)發(fā)工具提供的MFC類庫(kù)為基礎(chǔ),結(jié)合C++的類繼承特征,自定義新類實(shí)現(xiàn)繪圖功能。對(duì)話框的主要作用是標(biāo)定凸輪升程、回程運(yùn)動(dòng)規(guī)律;選定凸輪機(jī)構(gòu)參數(shù),包括推程角、回程角、遠(yuǎn)休止角、基圓半徑、行程、偏距、推桿滾子半徑和凸輪轉(zhuǎn)速;對(duì)設(shè)計(jì)的凸輪參數(shù)作確認(rèn)和撤銷處理。構(gòu)建盤(pán)形凸輪機(jī)構(gòu)設(shè)計(jì)的對(duì)話框關(guān)鍵類如表2所示。
表2 對(duì)話框關(guān)鍵類
菜單欄的作用是通過(guò)凸輪機(jī)構(gòu)運(yùn)動(dòng)參數(shù)菜單調(diào)出對(duì)話框欄,以及執(zhí)行運(yùn)動(dòng)仿真菜單完成凸輪機(jī)構(gòu)動(dòng)畫(huà)演示。為了實(shí)現(xiàn)菜單欄調(diào)出對(duì)話框和凸輪機(jī)構(gòu)動(dòng)畫(huà),本設(shè)計(jì)利用事件(EVENT)來(lái)實(shí)現(xiàn)。其中自定義了類CTulun的成員變量和成員函數(shù),它包含由關(guān)鍵字修飾的句柄,用于喚醒同步事件對(duì)象。兩個(gè)事件通過(guò)定義同一個(gè)CTulun類對(duì)象來(lái)訪問(wèn)上述事件對(duì)象。
通過(guò)凸輪參數(shù)機(jī)構(gòu)菜單調(diào)出參數(shù)輸入對(duì)話框的部分主要程序如下:
void CTulunView::OnInputSize()
{
//定義 CParameterDlg 類的一個(gè)對(duì)象
CParameterDlg CamDlg;
//初始化盤(pán)形凸輪參數(shù)輸入對(duì)話框
CamDlg.m_Tui_Rule=2;
CamDlg.m_Hui_Rule=3;
CamDlg.m_Base_Radius=200;
CamDlg.m_Course=150;
CamDlg.m_Setover=80;
CamDlg.m_Hui_Angle=100;
CamDlg.m_Tui_Angle=150;
CamDlg.m_FarRest_Angle=60;
CamDlg.m_Roller_Radius=80;
CamDlg.m_Cam_Velocity=5;
//調(diào)用 OnDraw 函數(shù)按照輸入的參數(shù)繪制凸輪
Invalidate(TRUE);
}
通過(guò)運(yùn)動(dòng)仿真菜單執(zhí)行凸輪動(dòng)畫(huà)的部分主要程序如下:
void CTulunView::OnSimuStart()
{
SetTimer(1,100,NULL);
}
void CTulunView::OnSimuStop()
{
KillTimer(1);
}
Void CTulunView::OnTimer(UINT nIDEvent)
{
if (sita>360)
sita=sita-360; //當(dāng)凸輪轉(zhuǎn)動(dòng)角度大于 360 °時(shí),重新從 0 °開(kāi)始旋轉(zhuǎn)
sita=sita+m_Cam_Velocity;
// 凸輪每次轉(zhuǎn)動(dòng)角度
Invalidate(TRUE);
// 調(diào)用 OnDraw 函數(shù),強(qiáng)制窗口重繪
CView::OnTimer(nIDEvent);
}
4應(yīng)用實(shí)例
圖4 應(yīng)用實(shí)例
圖4是一個(gè)在MFC下開(kāi)發(fā)應(yīng)用程序中實(shí)現(xiàn)滾子直動(dòng)推桿盤(pán)形凸輪機(jī)構(gòu)設(shè)計(jì)的實(shí)例,在Visiual C++.net中利用消息映射機(jī)制,實(shí)現(xiàn)了人機(jī)界面交互,實(shí)時(shí)監(jiān)控凸輪機(jī)構(gòu)運(yùn)動(dòng)情況。選取凸輪推程運(yùn)動(dòng)規(guī)律為余弦加速度,回程運(yùn)動(dòng)規(guī)律為正弦加速度,其中推程角為100°,回程角150°,遠(yuǎn)停角60°,基圓半徑200 mm,升程100 mm,偏心距80 mm,凸輪轉(zhuǎn)速5°/s 。
5結(jié)語(yǔ)
本文結(jié)合VC++6.0基于MFC的面向?qū)ο蟮木幊碳夹g(shù),實(shí)現(xiàn)了滾子從動(dòng)件盤(pán)形凸輪機(jī)構(gòu)的參數(shù)化設(shè)計(jì),對(duì)凸輪工作過(guò)程作了動(dòng)畫(huà)演示,實(shí)時(shí)監(jiān)控滾子推桿的位移、速度和加速度運(yùn)動(dòng)規(guī)律。通過(guò)此設(shè)計(jì)更加直觀解決凸輪機(jī)構(gòu)設(shè)計(jì)中有關(guān)的問(wèn)題,形象生動(dòng),讓設(shè)計(jì)者和學(xué)習(xí)者可以實(shí)際體會(huì)到凸輪機(jī)構(gòu)的運(yùn)動(dòng)過(guò)程與原理。同時(shí),此設(shè)計(jì)可以在各大院校的課堂教學(xué)中推廣使用,對(duì)機(jī)械原理教學(xué)具有較強(qiáng)的實(shí)用性。
參考文獻(xiàn)
[1]李濤.基于SolidWorks的凸輪建模及模擬仿真[J].科技研究,2013(11)7-12.
[2]袁苑,郎朗.基于MFC的單柱液壓機(jī)監(jiān)控系統(tǒng)設(shè)計(jì)[J].安徽工程大學(xué)學(xué)報(bào),2014,29(4):45-48.
[3]畢艷.機(jī)械原理[M].北京:清華大學(xué)出版社,2014.
[4]焉利群,高路.機(jī)械設(shè)計(jì)基礎(chǔ)[M].北京:化學(xué)工業(yè)出版社,2012.
[5]柏子剛,陳計(jì)軍.凸輪機(jī)構(gòu)廓線精確設(shè)計(jì)與運(yùn)動(dòng)仿真[J].現(xiàn)代機(jī)械,2010(5)15-17.
[6]王烜欽,崔宣.凸輪反求設(shè)計(jì)研究[J].中國(guó)機(jī)械,2015(3)175-176.
[7]辛勤,郭烈恩,顏穎.基于VC和UG的圓柱分度凸輪參數(shù)化設(shè)計(jì)[J].煤礦機(jī)械,2013,34(4)271-273.
[8]劉文生,包宗明.基于VC和Pro/Toolkit凸輪實(shí)體模型的參數(shù)化二次開(kāi)發(fā)[J].制造業(yè)自動(dòng)化,2010(11)76-78.
中圖分類號(hào):TH112.2
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1002-6886(2016)03-0042-04
作者簡(jiǎn)介:孫一平 (1987-),男,漢,貴州三穗人,碩士 ,研究方向:工藝及其裝備。
收稿日期:2015-05-10
Design of a disc cam mechanism based on MFC
SUN Yiping
Abstract:To realize parameterized design of the cam mechanism and the animation of the process, we designed a human-computer interaction system of the cam mechanism based on MFC. Using the message map facility of MFC, we completed the design of the roller follower disc cam and the animated demonstration of its motion. The results showed that the system could meet the design requirements, and could be used in the teaching of the design of cam mechanism.
Keywords:parameterization; human-computer interaction; animation; teaching