劉晟昱 付偉 張維 陳志剛 唐寧
(1.株洲易力達(dá)機(jī)電有限公司;2.邵陽學(xué)院)
在汽車電動(dòng)助力轉(zhuǎn)向系統(tǒng)(EPS)的碰撞力學(xué)特性分析與優(yōu)化設(shè)計(jì)中,需要反復(fù)建立EPS 減速機(jī)構(gòu)的幾何模型,進(jìn)而建立減速機(jī)構(gòu)的有限元模型,而蝸輪蝸桿由于其外形曲面比較復(fù)雜,應(yīng)用傳統(tǒng)方法繪制過程繁雜、效率低且易出錯(cuò)。因此,有必要開發(fā)一種方便有效的建模模塊,以提高產(chǎn)品設(shè)計(jì)效率,縮短設(shè)計(jì)周期,為EPS 的性能優(yōu)化奠定必要的基礎(chǔ)。文章以UG 為軟件開發(fā)平臺,通過UIStyler 對話框設(shè)計(jì)和用Visual C++編程來調(diào)用API 函數(shù),設(shè)計(jì)開發(fā)了EPS 減速機(jī)構(gòu)模塊,實(shí)現(xiàn)了對蝸輪蝸桿設(shè)計(jì)參數(shù)進(jìn)行查詢和修改,根據(jù)新的參數(shù)值更新模型。
汽車行駛需要助力時(shí),控制器依照既定的控制策略,計(jì)算電機(jī)助力轉(zhuǎn)矩的大小,并輸出相應(yīng)控制信號給驅(qū)動(dòng)電路,驅(qū)動(dòng)電路提供相應(yīng)的電壓或者電流給電動(dòng)機(jī)[1]。EPS 的減速機(jī)構(gòu)結(jié)構(gòu)圖,如圖1所示。電動(dòng)機(jī)輸出的轉(zhuǎn)矩通過蝸桿和蝸輪等傳動(dòng)機(jī)構(gòu)驅(qū)動(dòng)轉(zhuǎn)向軸轉(zhuǎn)動(dòng)從而實(shí)現(xiàn)助力。
程序要實(shí)現(xiàn)針對某個(gè)模型的設(shè)計(jì)參數(shù)進(jìn)行查詢和修改,主要的思路是先讀取對話框中的參數(shù),然后把對話框中的參數(shù)傳遞給模型中的表達(dá)式,改變表達(dá)式中相應(yīng)參數(shù)的值,更新模型。程序運(yùn)行后,就能實(shí)現(xiàn)把設(shè)計(jì)者輸入對話框的參數(shù)轉(zhuǎn)化成模型尺寸的變化,實(shí)現(xiàn)設(shè)計(jì)目的[2]。由于此種參數(shù)化設(shè)計(jì)的方法是建立在模型的基礎(chǔ)上進(jìn)行的,因此,在程序運(yùn)行時(shí),應(yīng)首先檢測當(dāng)前打開的模型是否就是該程序和對話框所對應(yīng)的模型,只有打開了相對應(yīng)的模型時(shí),程序才繼續(xù)運(yùn)行,否則退出。為了方便設(shè)計(jì)者使用,讓使用者在打開對話框時(shí),就能直接看到當(dāng)前模型的各個(gè)參數(shù),在調(diào)用對話框時(shí)應(yīng)將當(dāng)前模型中表達(dá)式中的對應(yīng)參數(shù)讀出,并傳遞給對話框,顯示在對話框上。模塊實(shí)現(xiàn)原理示意圖,如圖2所示。
EPS 減速機(jī)構(gòu)模塊的開發(fā)包含UIStyler 對話框設(shè)計(jì)和相應(yīng)的API 應(yīng)用程序設(shè)計(jì)。模型模板創(chuàng)建以后,應(yīng)用程序是實(shí)現(xiàn)手段。程序要將對話框和部件模型聯(lián)系起來,在程序中必然要調(diào)用對話框,并有相應(yīng)的程序和相應(yīng)對話框中的控件。API 程序?qū)⒛P椭械谋磉_(dá)式的值與對話框聯(lián)系起來。
啟動(dòng)UG 后,選擇“應(yīng)用”→“用戶界面編輯器”,進(jìn)入U(xiǎn)ser Interfaced Styler 窗口設(shè)計(jì)環(huán)境,系統(tǒng)會自動(dòng)創(chuàng)建一個(gè)基本對話框框架,只需向?qū)υ捒蛑胁迦肟丶?,在資源編輯器中編輯控件屬性,最后保存,即可獲得所需的接口界面對話框。用戶可以通過它輸入數(shù)據(jù)或者執(zhí)行操作,應(yīng)用程序則通過回調(diào)函數(shù)來響應(yīng)用戶事件。對話框可以在UG 菜單項(xiàng)上調(diào)用,從而將用戶所編寫的程序與UG 完全融合,實(shí)現(xiàn)用戶與API 應(yīng)用程序的交互[3]。
編輯好對話框后,將對話框保存在開發(fā)路徑下的application 文件夾中。蝸輪和蝸桿對話框設(shè)計(jì)結(jié)果,如圖3所示。
采用“internal application”內(nèi)部模式,在 Visual C++中進(jìn)行API 程序設(shè)計(jì)的步驟如下:
創(chuàng)建Unipraphics NX App Wizsrd V1 項(xiàng)目工程;
修改UG/OPEN UIStyler 生成的*_temple.c 文件的后綴為cpp,并將其和*.h 文件添加至項(xiàng)目工程;
依據(jù)功能需要編輯添加的*_temple.cpp 文件,修改相應(yīng)函數(shù);
編譯鏈接生成*.dll 文件。
從前面的程序設(shè)計(jì)思路可知,該程序中主要包括:入口函數(shù)程序、獲取表達(dá)式程序以及傳遞對話框中數(shù)值程序。菜單欄的“蝸輪蝸桿參數(shù)化設(shè)計(jì)”下面的4 個(gè)按鈕的響應(yīng)行為為調(diào)用對話框。調(diào)用對話框后,單擊對話框中的控件時(shí)要有相應(yīng)的程序來響應(yīng)它,對話框中包括有確定、應(yīng)用及取消3 個(gè)控件。加上調(diào)用對話框時(shí)應(yīng)讀取表達(dá)式中的參數(shù),要加一個(gè)構(gòu)造函數(shù)。因此對話框程序主要包含有這4 個(gè)程序,其中取消按鈕的程序系統(tǒng)已自動(dòng)生成,確定和應(yīng)用這2 個(gè)按鈕程序所執(zhí)行的功能大體是一樣的,只是在執(zhí)行程序后確定是退出對話框,而應(yīng)用是返回到對話框[4]。因此主要有2 段程序,現(xiàn)簡要介紹如下:
1)構(gòu)造函數(shù)主要程序:
data.item_attr=UF_STYLER_VALUE;//指定獲取控件的值
data.item_id=SHIXIN_PIDAILUN_REAL_0;//控件標(biāo)識
UF_MODL_eval_exp("z",&data.value.real);//根據(jù)表達(dá)式名稱計(jì)算表達(dá)式的數(shù)值
UF_STYLER_set_value (dialog_id,&data);// 給對話框中的相應(yīng)控件賦值應(yīng)用和確定主要程序
data.item_attr=UF_STYLER_VALUE;//指定獲取控件的值
data.item_id=SHIXIN_PIDAILUN_REAL_Z;// 控件標(biāo)識,可從對話框頭文件中獲得
UF_STYLER_ask_value (dialog_id,&data);//查詢對話框控件中的值
PRO_DESIGN_edit_exp ("z",data.value.real);//修改表達(dá)式中的值
UF_MODL_update();//更新模型
2)程序中引用了PRO_DESIGN_edit_exp 子程序,該程序主要代碼如下:
strcpy(exp,dim_name);//表達(dá)式參數(shù)
strcat(exp,"=");
sprintf(temp,"%.5f",dim_value);//獲取控件中數(shù)值
strcat(exp,temp);
err=UF_MODL_edit_exp(exp);//修改表達(dá)式
蝸輪蝸桿運(yùn)行效果,如圖4所示。
上述實(shí)例表明,打開相應(yīng)部件后,就可調(diào)用對話框,輸入中心距、模數(shù)及基圓半徑等設(shè)計(jì)參數(shù)后,單擊“確定”或“應(yīng)用”就可實(shí)現(xiàn)模型的更新,滿足了實(shí)際設(shè)計(jì)需要。對于不同的零件模板,其關(guān)鍵驅(qū)動(dòng)尺寸參數(shù)不同,只要在建立模板文件的時(shí)候,定義好各個(gè)參數(shù)間的表達(dá)式關(guān)系,即可依據(jù)上述相同的方法完成程序設(shè)計(jì)并實(shí)現(xiàn)幾何模型的自動(dòng)更新。采用模塊化設(shè)計(jì),大大降低了產(chǎn)品設(shè)計(jì)和結(jié)構(gòu)優(yōu)化的時(shí)間[5],為汽車EPS 產(chǎn)品的結(jié)構(gòu)和性能優(yōu)化奠定必要的基礎(chǔ)。