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