李 悅,范 勤
(武漢科技大學(xué) 機(jī)械自動化學(xué)院,武漢 430081)
近年來,隨著現(xiàn)代化規(guī)模的擴(kuò)大和自動化程度的不斷提高以及計算機(jī)軟硬件技術(shù)的發(fā)展,有限元分析技術(shù)越來越多的應(yīng)用于門式起重機(jī)的分析計算和設(shè)計中。現(xiàn)在普遍采用基于有限元分析軟件為平臺,用有限元法做為計算手段。但其建模過程中操作步驟過于繁瑣,所花時間過多,進(jìn)而影響設(shè)計效率。其次有限元軟件的通用性和友好度雖然不斷提高,但對設(shè)計工作人員要求較高。用戶必須具有一定的有限元理論知識和對軟件掌握到一定程度之后,才能夠比較好的運(yùn)用通用有限元軟件。針對這些問題,為了進(jìn)一步提高產(chǎn)品的分析速度及準(zhǔn)確性,縮短研發(fā)周期,我們在現(xiàn)有的L型門式起重機(jī)有限元分析技術(shù)基礎(chǔ)上開發(fā)了一套基于VC++和ANSYS平臺的L型門式起重機(jī)門架參數(shù)化有限元分析系統(tǒng)。該系統(tǒng)運(yùn)用大型有限元軟件ANSYS的參數(shù)化設(shè)計語言APDL對L型門式起重機(jī)門架進(jìn)行參數(shù)化建模,用面向?qū)ο蟮木幊陶Z言VC++來編制圖形用戶界面,并調(diào)用VC++接口模塊嵌套VC++與APDL命令流。此系統(tǒng)避免了大量的重復(fù)工作,易于實(shí)際操作,產(chǎn)品的建模、劃分網(wǎng)格、施加載荷、求解以及后處理等過程可以根據(jù)輸入的參數(shù)自動完成,并且分析速度快,不容易出錯。整個過程操作起來方便、快捷、高效,大大減少了設(shè)計人員的工作量,提高了L型門式起重機(jī)的分析效率和設(shè)計速度。
VC++是一種具有強(qiáng)大功能并且比較容易實(shí)現(xiàn)的面向?qū)ο蟮目梢暬幊陶Z言。設(shè)計人員通過使用其簡潔方便的編程界面以及集成的多種常用工具箱就可以高效地開發(fā)應(yīng)用程序。ANSYS參數(shù)化設(shè)計語言APDL(ANSYS Parametric Design Language)是一種用來完成有限元常規(guī)分析操作或通過參數(shù)化變量方式建立分析模型的腳本語言,它用智能化分析的手段,為用戶提供了自動完成有限元分析過程的功能[1]。運(yùn)用VC++與ANSYS的接口技術(shù)和對APDL語言封裝的功能進(jìn)行參數(shù)化設(shè)計,在VC++中將ANSYS軟件作為子程序調(diào)用,利用ANSYS的結(jié)構(gòu)分析功能以及算法來實(shí)現(xiàn)結(jié)構(gòu)的參數(shù)化設(shè)計。
系統(tǒng)設(shè)計主要以方便、易用、可靠為目標(biāo)。工程技術(shù)人員只需在L型門式起重機(jī)門架的分析過程中在相應(yīng)的模塊輸入相應(yīng)的參數(shù),就可以進(jìn)行三維模型的建立、劃分網(wǎng)格、施加載荷、計算及查看結(jié)果等操作。VC++把ANSYS的重要計算內(nèi)容封裝在編程軟件的后臺,這就保證了計算和分析的可信性。該系統(tǒng)的可移植性也比較好,尤其是不受具體硬件的約束,只要是安裝了ANSYS和VC++6.0軟件的計算機(jī)都能使用本系統(tǒng),確保了程序使用的普遍性。系統(tǒng)的程序運(yùn)行流程如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)流程圖
由圖1可以看出工程技術(shù)人員首先進(jìn)入ANSYS與VC++交互的圖形用戶界面,然后點(diǎn)擊操作按鈕在彈出的對話框中輸入相應(yīng)的參數(shù),通過VC++和APDL命令流的嵌套生成相對應(yīng)的宏文件,并最終形成批處理文件,利用VC++和ANSYS的接口調(diào)用批處理文件進(jìn)行計算,最后查看分析計算結(jié)果。
該系統(tǒng)能夠給工程技術(shù)人員更簡便、更明了的展現(xiàn)VC++軟件調(diào)用ANSYS分析計算的過程。其中VC++主要完成3個功能:實(shí)現(xiàn)友好的交互編程界面、向ANSYS命令窗口傳遞函數(shù)和調(diào)用封裝在后臺的APDL語言。為了建立高效的分析平臺,需要通過VC++封裝的APDL宏文件來進(jìn)行信息傳遞。
解決ANSYS和VC++的接口問題是實(shí)現(xiàn)此系統(tǒng)的關(guān)鍵。通過以下兩種方法可以實(shí)現(xiàn)VC++對ANSYS的自動調(diào)用[2]。
方法一:
::WinExec(“E:\ansys10.0\v100\commonfiles\TCL\bin\intel\wish.exe –b –p ansys_product_feature –i input_file –o output_file”, SW_SHOWNORMAL);
方法二:
//Test.cpp
#include “stdio.h”
#include “process.h"
void main()
{
int res;
printf(“Solving…”);
res=system(“E:\ansys10.0\v100\commonfiles\TCL\bin\intel\wish.exe –b –p ansysul–i test.txt –o test.out”);
printf(“Solution finished…”);
}
說明:input_file和text.txt為用APDL語言編寫的ANSYS輸入文件。ansys_product_feature和ansysul為ANSYS產(chǎn)品特征代碼。需要注意的是,在VC中調(diào)用ANSYS時,需要加一條判斷語句,以確定ANSYS已經(jīng)執(zhí)行完畢。判斷方法很簡單,只需要判斷錯誤文件file.err是否可寫,因?yàn)楫?dāng)ANSYS運(yùn)行時,file.err是不可寫的,只有當(dāng)它運(yùn)行完畢,此文件才可寫[3]。其中“E:\ansys10.0\v100\commonfiles\TCL\bin\intel\wish.exe”為ANSYS程序安裝目錄里面的執(zhí)行文件,可根據(jù)實(shí)際安裝情況更改。
參數(shù)化設(shè)計的基本思想是生成一個包含ANSYS命令記錄的宏文件,需要計算時,只要執(zhí)行這個宏文件即可,需要修改時,只用修改宏文件里的相關(guān)參數(shù),剩下的由計算機(jī)自動完成。宏文件就是一系列ANSYS命令貯存在一個文本文件里,以“.mac”為后綴名,這樣就可以使ANSYS在執(zhí)行該宏時,能夠識別宏,并且將其當(dāng)作一個內(nèi)部命令使用[3]。整個系統(tǒng)要能夠成功的實(shí)現(xiàn),關(guān)鍵在于宏文件是否能夠正確的生成和導(dǎo)入。通過實(shí)現(xiàn)VC++和APDL的嵌套來生成宏文件,然后在宏文件里傳遞ANSYS命令形成完整的命令流文件。例如定義劃分網(wǎng)格命令的代碼如下:
FILE *file;
if((file=fopen("F:\CraneCAE\onmesh.mac","w"))!=NULL)//創(chuàng)建宏文件
{
fprintf(file,"AESIZE,ALL,%d ",esize);//定義單元尺寸
fprintf(file,"AMESH,ALL");//劃分所有面
} else
{
MessageBox("劃分網(wǎng)格失敗!","注意",MB_ICONASTERISK|MB_OK);
}
執(zhí)行完以上VC++程序就可以生成一個以onmesh為文件名的宏文件,然后ANSYS軟件調(diào)用此宏文件進(jìn)行分析計算。導(dǎo)入宏文件的語句格式為:/INPUT, ‘onmesh’, ‘mac’,‘F:\CraneCAE\’,, 0,其中‘onmesh’為宏文件名,‘mac’代表此文件為宏文件,‘F:\CraneCAE\’表示生成的宏文件存儲的位置。
在ANSYS批處理模式下運(yùn)算完畢以后,進(jìn)入后處理選項(xiàng),選擇不同的處理選項(xiàng)得到需要的計算結(jié)果,并且通過APDL命令流編程可以輸出JPEG圖片文件及設(shè)置其存儲位置。查看計算結(jié)果的部分程序如下:
Message(hAnsMultiWin,"FINISH"); //完成計算,hAnsMultiWin為ANSYS主窗口句柄
Message(hAnsMultiWin,"/POST1");//進(jìn)入后處理
int Radio;//定義一個整型變量
Radio=GetCheckedRadioButton(IDC_ X,IDC _Y);//定義單選按鈕
if(Radio==IDC_ X)
{
Message(hAnsMultiWin,"/EFACET,1");//指定每個單元邊界的面號
Message(hAnsMultiWin,"PLNSOL,S,X,0,1.0");//顯示應(yīng)力的X分量值
}
圖片生成及存儲的部分程序如下:
SHOW,JPEG,,0;//確定圖形顯示的設(shè)備及其他參數(shù)
JPEG,QUAL,75;
JPEG,ORIENT,HORIZ;
JPEG,COLOR,2;
JPEG,TMOD,1;
GFILE,800;
CMAP,_TEMPCMAP_,CMP,,SAVE;//對圖片進(jìn)行存儲,默認(rèn)為C:\Documents and Settings\Administrator目錄下
利用對話框作為人機(jī)交互界面,建立L型門式起重機(jī)門架有限元分析平臺操作界面,如圖2所示。
圖2 系統(tǒng)交互界面
工程技術(shù)人員通過這個友好的交互界面來調(diào)用ANSYS軟件進(jìn)行三維建模、劃分網(wǎng)格、施加載荷、求解及后處理等操作,具有簡單方便的特點(diǎn)。
該系統(tǒng)以ANSYS為平臺,以VC++6.0為編程手段,利用面向?qū)ο蟮某绦蛟O(shè)計方法,能進(jìn)行大部分L型門式起重機(jī)門架有限元分析計算。該系統(tǒng)的功能主要包含以下幾個方面:
1)設(shè)計人員可以根據(jù)實(shí)際的計算情況,在對話框中輸入相應(yīng)參數(shù)進(jìn)行三維建模,主要包括主梁、支腿、下橫梁的尺寸參數(shù)以及主梁有效懸臂長、大車輪距、跨度等,三維模型建立好后,輸入單元尺寸自動進(jìn)行劃分網(wǎng)格。支腿參數(shù)的設(shè)置界面如圖3所示。
圖3 支腿參數(shù)設(shè)置界面
2)將門架分為支腿平面和門架平面,分別施加載荷計算。支腿平面需要考慮主梁、支腿及下橫梁自重引起的均布載荷和大車制動主梁、支腿、下橫梁、貨物及小車自重引起的慣性力,還有作用于主梁、支腿、下橫梁、貨物及小車上的風(fēng)載荷,大車運(yùn)行機(jī)構(gòu)、司機(jī)室和小車自重及起重量等;門架平面需要考慮主梁、支腿和下橫梁自重引起的均布載荷及小車制動時貨物和小車自重產(chǎn)生的慣性力,還有大車運(yùn)行機(jī)構(gòu)、司機(jī)室和小車自重及起重量等。載荷輸入界面如圖4所示。
圖4 載荷輸入界面
3)設(shè)計人員通過調(diào)用封裝在后臺的ANSYS宏文件進(jìn)行計算,然后對計算結(jié)果文件進(jìn)行后處理和分析,同時還能通過編程實(shí)現(xiàn)應(yīng)力云圖和位移云圖的圖片輸出。以某機(jī)械有限公司MGD(L)型單主梁門式起重機(jī)(10t×22m)門架結(jié)構(gòu)分析為例,起升高度為10m,起升速度為9m/min,小車運(yùn)行速度為35m/min,大車運(yùn)行速度為30m/min,工作級別為A5,在支腿平面施加載荷,計算結(jié)果如圖5、圖6所示。
圖5 靜剛度計算結(jié)果
經(jīng)過該系統(tǒng)建模計算得到的主梁危險截面最大應(yīng)力為161.1MPa,門架靜剛度為13.7mm,即σ=1 6 1.1 M P a<[σ]=1 7 2.9 M P a, fj求。
圖6 應(yīng)力計算結(jié)果
本系統(tǒng)通過使用VC++面向?qū)ο缶幊碳夹g(shù),有效的實(shí)現(xiàn)了對ANSYS有限元分析軟件的封裝,利用ANSYS的參數(shù)化設(shè)計語言APDL,實(shí)現(xiàn)了門架結(jié)構(gòu)的參數(shù)化建模、參數(shù)化劃分網(wǎng)格、參數(shù)化施加載荷和參數(shù)化計算及參數(shù)化后處理的功能。結(jié)合對話框編程技術(shù),實(shí)現(xiàn)了整個分析過程的可視化,使工程技術(shù)人員在對話框指引下正確的完成整個分析流程,并且可以方便的進(jìn)行參數(shù)的修改。使用它可以提高產(chǎn)品分析速度,縮短產(chǎn)品研發(fā)周期,對于不熟悉ANSYS軟件和有限元分析技術(shù)的工程技術(shù)人員也可以方便的使用該系統(tǒng)。
[1] 博弈創(chuàng)作室.APDL參數(shù)化有限元分析技術(shù)及其應(yīng)用實(shí)例[M].北京:中國水利水電出版社,2004.
[2] 祝效華,廖偉志,等. CAD/CAE/CFD/VPT/SC軟件協(xié)作技術(shù)[M].北京:中國水利水電出版社,2004.
[3] 龔曙光,謝桂蘭,等.ANSYS參數(shù)化編程與命令手冊[M].北京:機(jī)械工業(yè)出版社,2009.
[4] 陳道南,盛漢中.起重機(jī)課程設(shè)計[M].北京:冶金工業(yè)出版社,2000.
[5] 張質(zhì)文,虞和謙,等.起重機(jī)設(shè)計手冊[M].北京:中國鐵道出版社,2001.