易輝成 易 杰,2* 葉桂林
1(湖南工業(yè)職業(yè)技術(shù)學(xué)院汽車工程學(xué)院 湖南 長沙 410208)2(復(fù)雜薄壁精密零件智能柔性加工技術(shù)湖南省工程研究中心 湖南 長沙 410208)3(泰富重裝集團(tuán)有限公司 湖南 湘潭 411201)
常規(guī)的鋼結(jié)構(gòu)設(shè)計(jì)流程是:結(jié)構(gòu)設(shè)計(jì)工程師初步完成結(jié)構(gòu)設(shè)計(jì)并交由有限元工程師進(jìn)行力學(xué)校核;有限元工程師完成結(jié)構(gòu)力學(xué)計(jì)算,并將計(jì)算結(jié)果和修改意見反饋給設(shè)計(jì)工程師。整個(gè)設(shè)計(jì)流程存在設(shè)計(jì)→分析→設(shè)計(jì)的反復(fù)迭代過程。設(shè)計(jì)過程中,設(shè)計(jì)工程師往往不能第一時(shí)間知道有限元分析結(jié)果,因此造成整個(gè)設(shè)計(jì)流程效率低下。
為解決這一問題,許多研究者提出了參數(shù)化有限元分析方法,針對特定產(chǎn)品開發(fā)具有友好交互界面的參數(shù)化有限元分析程序。通過這些程序,設(shè)計(jì)工程師可快速對設(shè)計(jì)方案進(jìn)行有限元計(jì)算,再根據(jù)分析結(jié)果修改設(shè)計(jì)。該過程操作簡單,處理高效,符合現(xiàn)代設(shè)計(jì)理念。例如:文獻(xiàn)[1-3]基于ANSYS平臺,應(yīng)用C#、VB.NET等語言開發(fā)了各種不同結(jié)構(gòu)形式的起重機(jī)鋼結(jié)構(gòu)參數(shù)化有限元分析系統(tǒng)。董迎暉等[4]基于HyperWorks軟件平臺,應(yīng)用VB.NET開發(fā)了一個(gè)軸類零件參數(shù)化有限元分析平臺。葛邵飛等[5]應(yīng)用APDL對橋梁結(jié)構(gòu)進(jìn)行了參數(shù)化有限元分析。這些程序一般不能自由更改拓?fù)浣Y(jié)構(gòu),不同類型的產(chǎn)品需要不同的程序。因此,針對類同斗輪堆取料機(jī)、帶式輸送機(jī)這種非標(biāo)準(zhǔn)化重型設(shè)備而言很難滿足要求。
為解決上述問題,提高工作效率,本文基于EXCEL、ANSYS和VB.NET開發(fā)出一套簡單易用、拓?fù)浣Y(jié)構(gòu)可自由更改的參數(shù)化有限元分析系統(tǒng)。
該程序的開發(fā)涉及到數(shù)據(jù)平臺、有限元軟件平臺、數(shù)據(jù)交流平臺三個(gè)軟件平臺,分別選擇EXCEL、ANSYS和VB.NET。三個(gè)軟件平臺之間的數(shù)據(jù)交互關(guān)系和程序流程如圖1所示。
圖1 軟件平臺間的數(shù)據(jù)交互和程序流程
選擇EXCEL作為數(shù)據(jù)平臺。EXCEL具備強(qiáng)大的數(shù)據(jù)處理能力,大多數(shù)機(jī)械工程師也常采用EXCEL軟件進(jìn)行設(shè)計(jì)計(jì)算,選擇EXCEL作為數(shù)據(jù)平臺很符合機(jī)械工程師的使用習(xí)慣。
選擇ANSYS作為有限元軟件平臺。ANSYS作為當(dāng)前應(yīng)用最為廣泛的有限元分析軟件,其獨(dú)有的參數(shù)化設(shè)計(jì)語言(APDL)非常適合用于參數(shù)化有限元分析。
選擇VB.NET作為EXCEL和ANSYS之間的數(shù)據(jù)交流平臺。VB.NET與這兩個(gè)軟件之間的混合式程序設(shè)計(jì)理論比較成熟,技術(shù)難度較小[6]。
數(shù)據(jù)表由分析數(shù)據(jù)和分析報(bào)告兩部分組成。分析數(shù)據(jù)由設(shè)計(jì)者輸入,分析報(bào)告由程序自動生成。
分析數(shù)據(jù)包含結(jié)構(gòu)的幾何參數(shù)和物理參數(shù),具體包括:截面參數(shù)表、點(diǎn)參數(shù)表、線參數(shù)表、耦合參數(shù)表和載荷參數(shù)表等。所有分析數(shù)據(jù)表的開始行和結(jié)束行均為關(guān)鍵字,程序?qū)ㄟ^關(guān)鍵字準(zhǔn)確定位參數(shù)表的首尾行,從而可以通過參數(shù)表數(shù)據(jù)行的增多和減少、參數(shù)表數(shù)據(jù)的更改來改變產(chǎn)品結(jié)構(gòu)的計(jì)算數(shù)據(jù)。
分析報(bào)告包括部件應(yīng)力輸出表、局部應(yīng)力輸出表、部件位移輸出表、軸向力圖輸出表、剪切力圖輸出表和彎矩圖輸出表等。
程序運(yùn)行時(shí),首先由VB.NET讀取EXCEL表格中的分析數(shù)據(jù),并將其轉(zhuǎn)換為APDL代碼;然后VB.NET在后臺調(diào)用ANSYS對所生成的APDL代碼進(jìn)行求解并保存分析結(jié)果;最后應(yīng)用VB.NET對有限元分析結(jié)果進(jìn)行歸類和整理,按照預(yù)先設(shè)計(jì)的格式編輯成分析報(bào)告。
為適應(yīng)常用鋼結(jié)構(gòu)材料的線彈性靜力學(xué)計(jì)算,默認(rèn)材料選用Q235或Q345,其材料參數(shù)為:彈性模量E=210 000 MPa,泊松比θ=0.3,材料密度為ρ=7.8×103kg/m3,設(shè)定力的單位為N,力矩的單位為N·mm。
應(yīng)用VB.NET的WriteLine命令生成APDL代碼定義材料參數(shù),如下[7-8]:
*SET,DEN1,7.8e-6
MP,EX,1,210000
MP,NUXY,1,0.3
MP,DENS,1,DEN1
截面參數(shù)表包含矩形鋼(RECT)、工字鋼(I)、槽鋼(CHAN)、圓鋼(CTUBE)、角鋼(L)等9種工程常用的型鋼截面,能滿足絕大多數(shù)工程實(shí)際需求。截面參數(shù)表包含截面編號(SECID)、截面名稱(Name)、截面類型(Subtype)及7個(gè)幾何參數(shù)(w1,w2,w3,t1,t2,t3,t4),如表1所示。其中:幾何參數(shù)需要與ANSYS截面庫中對應(yīng)的截面參數(shù)保持一致;△y和△z數(shù)據(jù)用于修改截面原點(diǎn)位置。
表1 截面參數(shù)輸入表
應(yīng)用VB.NET逐行讀取截面參數(shù)表中的數(shù)據(jù),并在.txt文件中循環(huán)寫入以下APDL命令:
SECTYPE,SECID,Beam,Subtype,Name
SECOFFSET,USER,△y,△z
SECDATA,w1,w2,w3,t1,t2,t3,t4
點(diǎn)參數(shù)表包括關(guān)鍵點(diǎn)、截面方向點(diǎn)和耦合點(diǎn)等三種表格,均包含了點(diǎn)編號(NPT)、點(diǎn)的坐標(biāo)值(X,Y,Z)等參數(shù),如表2所示,不同之處在于三種表格的起始關(guān)鍵字和結(jié)束關(guān)鍵字不同。
表2 關(guān)鍵點(diǎn)參數(shù)輸入表
關(guān)鍵點(diǎn)主要用于定義幾何拓?fù)湫畔?,例如梁的端點(diǎn)、鉸接、螺栓連接等。
截面方向點(diǎn)用于定義梁截面的方向。梁方向的定義規(guī)則如圖2所示,圖中K點(diǎn)為梁截面原點(diǎn),I點(diǎn)至J點(diǎn)方向?yàn)榱旱膞軸線,L點(diǎn)在梁截面的z軸方向上。
圖2 截面方向點(diǎn)示意圖
耦合點(diǎn)則用來定義遠(yuǎn)程加載或遠(yuǎn)程連接,如圖3所示。程序中可實(shí)現(xiàn)點(diǎn)點(diǎn)耦合和點(diǎn)線耦合兩種耦合形式。
圖3 耦合點(diǎn)示意圖
應(yīng)用VB.NET逐行讀取點(diǎn)參數(shù)表中的數(shù)據(jù),并在.txt文件中循環(huán)寫入以下APDL代碼:
K,NPT,X,Y,Z
線參數(shù)表包括常截面梁、變截面梁和桿單元三種表格。常截面梁參數(shù)表包含線編號(LID)、線的兩個(gè)端點(diǎn)編號(KI,KJ)、截面方向點(diǎn)編號(KL)、梁的截面編號(SecID)等參數(shù),如表3所示。
表3 常截面梁參數(shù)輸入表
應(yīng)用VB.NET逐行讀取常截面梁參數(shù)表中的數(shù)據(jù),并在txt文件中循環(huán)寫入APDL命令:
NUMSTR,LINE,LID
L,KI,KJ
LATT,MAT,,,,KL,,SecID
LESIZE,LID,SIZE,,
LMESH,ALL
其中:MAT指材料編號,程序計(jì)算中只有鋼材一種材料,編號為1;SIZE為網(wǎng)格劃分大小,可默認(rèn)設(shè)置為100。
變截面梁參數(shù)表包含線編號(LID)、線的兩個(gè)端點(diǎn)編號(KI,KJ)、截面方向點(diǎn)編號(KL)、梁的截面編號(SecID)、I點(diǎn)處的截面編號(SecID-I)、J點(diǎn)處的截面編號(SecID-J)等信息,如表4所示。
表4 變截面梁參數(shù)輸入表
定義變截面梁的APDL代碼與定義常截面梁的APDL代碼一樣,但首先需要定義變截面梁的屬性,其APDL命令如下:
SECTYPE,SecID,TAPER,,,
SECDATA,SecID-I,KX(Ix),KY(Iy),KZ(Iz)
SECDATA,SecID-J,KX(Jx),KY(Jy),KZ(Jz)
其中:KX(Ix)、KY(Iy)、KZ(Iz)為變截面梁端點(diǎn)I處的坐標(biāo)值;KX(Jx)、KY(Jy)、KZ(Jz)為變截面梁端點(diǎn)J處的坐標(biāo)值。這需要應(yīng)用VB.NET去查詢點(diǎn)參數(shù)表獲得。
二力桿用桿參數(shù)表來定義,其力學(xué)特性是只能承受軸向拉壓,不能承受彎曲。桿參數(shù)表主要包含線編號(LID)、線的兩個(gè)端點(diǎn)編號(KI,KJ)、截面方向點(diǎn)編號(KL)、截面面積(SecA)等信息,如表5所示。
表5 桿單元參數(shù)輸入表
定義二力桿的代碼與定義常截面梁的代碼一樣,但需要先定義截面面積,其APDL代碼如下:
R,LID,SecA
耦合參數(shù)表包括了鉸接點(diǎn)、點(diǎn)點(diǎn)耦合和點(diǎn)線耦合三種表格。
鉸接點(diǎn)參數(shù)表用于定義鋼結(jié)構(gòu)中鉸接的位置和自由度??赏瑫r(shí)定義鉸接處的6個(gè)自由度(UX,UY,UZ,ROTX,ROTY,ROTZ),不同自由度之間用“,”連接。鉸接點(diǎn)參數(shù)表包含點(diǎn)編號(NPT)和釋放自由度(RF)兩類信息,如表6所示。
表6 鉸接點(diǎn)參數(shù)輸入表
應(yīng)用VB.NET逐行讀取鉸接參數(shù)表中的數(shù)據(jù),并在.txt文件中循環(huán)寫入以下APDL代碼:
KSEL,S,KP,,NPT,,,1
NSLK,S,
ESLN,S,,
ENDRELEASE,,-1,ROTZ
點(diǎn)點(diǎn)耦合和點(diǎn)線耦合則用于定義遠(yuǎn)程加載或遠(yuǎn)程連接。同一個(gè)點(diǎn)或同一條線只能與唯一的耦合主點(diǎn)相耦合,且每次只能耦合一個(gè)自由度,若需要耦合多個(gè)自由度則需要分多步進(jìn)行,也可用“ALL”關(guān)鍵字來耦合所有自由度。
點(diǎn)點(diǎn)耦合參數(shù)表包含耦合主點(diǎn)編號(NPTM)、耦合從點(diǎn)編號(NPTS)、耦合自由度(CF)等信息,如表7所示。
表7 點(diǎn)點(diǎn)耦合參數(shù)輸入表
應(yīng)用VB.NET逐行讀取點(diǎn)點(diǎn)耦合參數(shù)表中的數(shù)據(jù),并在.txt文件中循環(huán)寫入APDL代碼:
ALLSEL
KSEL,S,,,NPTM
NSLK,S
*GET,MN,NPTM,NODE,0,NUM,MAX
ALLSEL
KSEL,S,,,NPTS
NSLK,S
*GET,SN,NPTS,NODE,0,NUM,MAX
ALLSEL
CERIG,MN,NPTM,SN,NPTS,CF
點(diǎn)線耦合參數(shù)表包含耦合點(diǎn)編號(NPT)、耦合線編號(LID)、耦合自由度(CF)等信息,如表8所示。
表8 點(diǎn)線耦合參數(shù)輸入表
點(diǎn)線耦合實(shí)際是點(diǎn)點(diǎn)耦合的疊加,即耦合主點(diǎn)與線上所有的節(jié)點(diǎn)進(jìn)行耦合,因此點(diǎn)線耦合的APDL代碼與點(diǎn)點(diǎn)耦合的代碼一樣,但為了防止線兩端處的節(jié)點(diǎn)與其他耦合主點(diǎn)重復(fù)耦合,需要將線端點(diǎn)處的節(jié)點(diǎn)去除掉,其APDL代碼如下:
*GET,NOUT1,KP,NPT-i,ATTR,NODE
*GET,NOUT1,KP,NPT-j,ATTR,NODE
LSEL,S,LINE,,LID,,0,0
ESLL,S
NSLE,S,ACTIVE
NSEL,U,,,NOUT1
NSEL,U,,,NOUT2
其中:NPT-i、NPT-j分別為耦合線的兩個(gè)端點(diǎn),需要應(yīng)用VB.NET查詢線參數(shù)表得到。
載荷參數(shù)表包括了重力載荷、點(diǎn)載荷、線載荷、點(diǎn)約束和線約束等5種表格。
重力加速度可定義X、Y、Z三個(gè)方向,默認(rèn)單位為m/s2,如表9所示。
表9 重力加速度參數(shù)輸入表 單位:m/s2
應(yīng)用ANSYS進(jìn)行有限元計(jì)算時(shí),ANSYS會根據(jù)結(jié)構(gòu)尺寸、截面參數(shù)、材料密度等自動計(jì)算結(jié)構(gòu)的重量。但大多數(shù)情況下,采用梁單元建立的鋼結(jié)構(gòu)有限元模型重量與實(shí)際重量會有所偏差,可適當(dāng)放大重力加速度值對其進(jìn)行修正。
應(yīng)用VB.NET讀取重力加速度參數(shù)表中的數(shù)據(jù),并在.txt文件中寫入以下APDL代碼:
ACEL,ACEL-X,ACEL-Y,ACEL-Z
點(diǎn)載荷參數(shù)表用于定義關(guān)鍵點(diǎn)或耦合點(diǎn)上的載荷,可定義FX、FY、FZ、MX、MY、MZ六個(gè)載荷方向,前三個(gè)表示加載的力,默認(rèn)單位為t,后三個(gè)表示加載的力矩,默認(rèn)單位為N·m。每次只能定義一個(gè)方向的載荷,但可在同一加載點(diǎn)上進(jìn)行重復(fù)加載。點(diǎn)載荷參數(shù)表包含載荷名稱(Name)、點(diǎn)編號(NPT)、載荷類別(Lab)和載荷值(Value)等信息,如表10所示。
表10 點(diǎn)載荷參數(shù)輸入表
應(yīng)用VB.NET逐行讀取點(diǎn)載荷參數(shù)表中的數(shù)據(jù),并在.txt文件中循環(huán)寫入APDL代碼:
ALLSEL
KSEL,S,,,NPT
NSLK,S
F,ALL,Lab,Value
程序中,線載荷的加載在最終會轉(zhuǎn)化為點(diǎn)載荷均分在線上的各個(gè)節(jié)點(diǎn)上,因此線載荷的加載規(guī)則與點(diǎn)載荷的加載規(guī)則相似,其默認(rèn)單位為kg/m。線載荷參數(shù)表包含載荷名稱(Name)、線編號(LID)、載荷類別(Lab)和載荷值(Value)等信息,如表11所示。
表11 線載荷參數(shù)輸入表
應(yīng)用VB.NET逐行讀取線載荷參數(shù)表中的數(shù)據(jù),并在.txt文件中循環(huán)寫入APDL代碼:
LSEL,S,LINE,,LID,,0,0
ESLL,S
NSLE,S,ACTIVE
*GET,LL(LID),LINE,LID,LENG
*GET,NN,NODE,0,COUNT
F,ALL,Lab,Value*LL(LID)/NN
其中:LL(LID)為LID編號梁的長度;NN為LID編號梁上的節(jié)點(diǎn)數(shù)量;這兩個(gè)參數(shù)均可采用APDL的*GET函數(shù)求解得到。
點(diǎn)約束參數(shù)表用于約束關(guān)鍵點(diǎn)的自由度,包含點(diǎn)編號(NPT)、方向(Labels)、數(shù)值(Value)等信息,其起始關(guān)鍵字為“開始輸入點(diǎn)約束”,如表12所示。其可同時(shí)對同一個(gè)點(diǎn)的多個(gè)自由度進(jìn)行約束,不同自由度之間需要用“,”分隔,例如:UX,UY,UZ,ROTX,ROTY,ROTZ。
表12 點(diǎn)約束參數(shù)輸入表
約束也可轉(zhuǎn)化為位移載荷,例如:約束方向?yàn)閁X,數(shù)值設(shè)為20,表示該點(diǎn)沿正X方向偏移20 mm。
應(yīng)用VB.NET逐行讀取點(diǎn)約束參數(shù)表中的數(shù)據(jù),并在.txt文件中循環(huán)寫入APDL代碼:
ALLSEL
KSEL,S,,,NPT
NSLK,S
D,ALL,,Value,,,,Labels
與線載荷表類似,線約束在程序中最終也會轉(zhuǎn)換為點(diǎn)約束,因此線約束的規(guī)則與點(diǎn)約束的規(guī)則類似。線約束參數(shù)表包含線編號(LID)、方向(Labels)和數(shù)值(Value),如表13所示。
表13 線約束參數(shù)輸入表
應(yīng)用VB.NET逐行讀取線約束參數(shù)表中的數(shù)據(jù),并在.txt文件中循環(huán)寫入APDL代碼:
LSEL,S,LINE,,LID,,0,1
NSLL,S,0
D,ALL,,Value,,,,Labels
VB.NET在調(diào)用ANSYS運(yùn)行APDL代碼時(shí),會按照一定的命名規(guī)則保存部件應(yīng)力云圖、部件局部應(yīng)力云圖、部件位移云圖、梁的彎矩圖、梁的剪力圖、桿的軸向力圖等分析結(jié)果。其中,部件的局部應(yīng)力結(jié)果主要截取局部應(yīng)力大于一定值的梁單元的應(yīng)力云圖,默認(rèn)值為150 MPa,用戶可自己設(shè)定該值。求解完成后,VB.NET按照預(yù)定的格式編輯分析報(bào)告并保存。
泰富重裝集團(tuán)基于該程序開發(fā)了斗輪堆取料機(jī)、帶式輸送機(jī)等一系列非標(biāo)產(chǎn)品的鋼結(jié)構(gòu)參數(shù)化有限元計(jì)算表格。TF.DQLZ.1系列的斗輪堆取料機(jī)參數(shù)化有限元分析表格如圖4所示。
圖4 TF.DQLZ.1斗輪堆取料機(jī)計(jì)算數(shù)據(jù)表
分析表格在保證核心數(shù)據(jù)結(jié)構(gòu)形式不變的情況下,添加了產(chǎn)品結(jié)構(gòu)參數(shù),用于定義結(jié)構(gòu)的幾何尺寸、載荷條件等參數(shù),并將其與后面的點(diǎn)、線、載荷等表格中的參數(shù)進(jìn)行關(guān)聯(lián),從而使結(jié)構(gòu)的調(diào)整更加直觀、快捷,如圖5所示。
圖5 TF.DQLZ.1斗輪堆取料機(jī)上部結(jié)構(gòu)參數(shù)
將該TF.DQLZ.1斗輪堆取料機(jī)有限元計(jì)算參數(shù)表導(dǎo)入程序中運(yùn)行,得到相應(yīng)的有限元分析計(jì)算結(jié)果和分析報(bào)告如圖6所示。
圖6 TF.DQLZ.1斗輪堆取料機(jī)有限元分析報(bào)告
壓桿穩(wěn)定性計(jì)算是鋼結(jié)構(gòu)計(jì)算中經(jīng)常需要進(jìn)行的校核計(jì)算,因此機(jī)械設(shè)計(jì)工程師可依據(jù)梁單元的軸向力分析結(jié)果添加壓桿穩(wěn)定性計(jì)算函數(shù),如圖7所示。使用者也可自行添加其他的機(jī)械常用設(shè)計(jì)計(jì)算函數(shù)。
圖7 壓桿穩(wěn)定性計(jì)算表
基于EXCEL、ANSYS和VB.NET開發(fā)的鋼結(jié)構(gòu)參數(shù)化有限元分析系統(tǒng)具有以下特點(diǎn):
1) 具備很強(qiáng)的通用性。針對不同的鋼結(jié)構(gòu)產(chǎn)品,工程師不需要單獨(dú)開發(fā)程序,只要保證分析數(shù)據(jù)表格的體系、格式和關(guān)鍵字不變,重新編輯EXCEL分析數(shù)據(jù)表,即可完成特定產(chǎn)品的鋼結(jié)構(gòu)計(jì)算模板定制,因此非常適合非標(biāo)準(zhǔn)化重型機(jī)械產(chǎn)品的鋼結(jié)構(gòu)參數(shù)化有限元計(jì)算。
2) 具有很好的可擴(kuò)展性。工程師可在鋼結(jié)構(gòu)有限元分析結(jié)果的基礎(chǔ)上,添加機(jī)械設(shè)計(jì)常用的計(jì)算功能,例如螺栓聯(lián)接計(jì)算、壓桿穩(wěn)定計(jì)算、優(yōu)化計(jì)算等,擴(kuò)展該系統(tǒng)的計(jì)算能力。
目前,泰富重裝集團(tuán)有限公司在該系統(tǒng)的基礎(chǔ)上,已開發(fā)了斗輪堆取料機(jī)、帶式輸送機(jī)等一系列非標(biāo)準(zhǔn)化產(chǎn)品的鋼結(jié)構(gòu)參數(shù)化有限元計(jì)算模板。從運(yùn)行結(jié)果來看,該系統(tǒng)的運(yùn)用大約縮短了50%的產(chǎn)品開發(fā)時(shí)間,提高了產(chǎn)品開發(fā)效率,增強(qiáng)了企業(yè)競爭力。