王瑞波 姚曉東
(浙江吉利新能源商用車(chē)集團(tuán)有限公司)
懸架是汽車(chē)的重要組成部分,對(duì)汽車(chē)的行駛平順性和操縱穩(wěn)定性有著決定性影響。懸架系統(tǒng)的運(yùn)動(dòng)學(xué)分析不僅能展現(xiàn)各零件間的運(yùn)動(dòng)狀態(tài),而且還能評(píng)判懸架系統(tǒng)的優(yōu)劣。要優(yōu)化汽車(chē)設(shè)計(jì)就必須對(duì)懸架運(yùn)動(dòng)學(xué)變化規(guī)律進(jìn)行針對(duì)性改善[1-2],所以在汽車(chē)設(shè)計(jì)過(guò)程中經(jīng)常依據(jù)不同的懸架硬點(diǎn)參數(shù)建立眾多的懸架運(yùn)動(dòng)學(xué)模型進(jìn)行對(duì)比分析和優(yōu)化驗(yàn)證。而懸架硬點(diǎn)參數(shù)等設(shè)計(jì)文件常使用Office 辦公軟件交流儲(chǔ)存,未與CAD 類工程設(shè)計(jì)軟件建立聯(lián)系。基于上述問(wèn)題,文章提出一種方法,在Office 辦公軟件和CAD 類工程設(shè)計(jì)軟件之間建立橋梁,實(shí)現(xiàn)自動(dòng)化建模,經(jīng)實(shí)例驗(yàn)證,達(dá)到設(shè)計(jì)預(yù)期。
VBA(Visual Basic for Applications)是 Visual Basic的一種宏語(yǔ)言,是微軟開(kāi)發(fā)出來(lái)在其桌面應(yīng)用程序中執(zhí)行通用的自動(dòng)化任務(wù)的編程語(yǔ)言[3-4]。VBA 提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法和相當(dāng)完整的程序設(shè)計(jì)語(yǔ)言,但必須寄生于已有的應(yīng)用程序。即VBA 的項(xiàng)目(Project) 僅由使用 VBA 的 Excel、Word、PowerPoint 等稱為宿主(Host)的應(yīng)用程序(Application)來(lái)調(diào)用。
CATIA 是CAD/CAE/CAM 一體化軟件,在世界CAD/CAE/CAM領(lǐng)域中處于領(lǐng)先地位。它的集成解決方案涵蓋了從產(chǎn)品造型設(shè)計(jì)、三維模型設(shè)計(jì)、運(yùn)動(dòng)仿真、有限元分析、人機(jī)工程、圖紙繪制到生產(chǎn)加工的全過(guò)程。CATIA 廣泛應(yīng)用于航空航天、汽車(chē)、機(jī)械、電子電器、船舶等諸多行業(yè)領(lǐng)域[5-12]。大部分世界主流的車(chē)企將CATIA 作為其核心設(shè)計(jì)軟件。
二次開(kāi)發(fā)是在現(xiàn)有軟件上進(jìn)行定制修改,實(shí)現(xiàn)功能擴(kuò)展。CATIA 為二次開(kāi)發(fā)提供了多種接口,外部程序可以將CATIA 作為一個(gè)OLE(Object Linking and Embedding)自動(dòng)化服務(wù)器,通過(guò) COM(Component Object Model)接口來(lái)訪問(wèn) CATIA 內(nèi)部的對(duì)象。Excel VBA 程序設(shè)計(jì)本質(zhì)上就是對(duì)Excel 的二次開(kāi)發(fā)。
在汽車(chē)設(shè)計(jì)研發(fā)過(guò)程中,需要不斷地對(duì)懸架零件結(jié)構(gòu)、硬點(diǎn)進(jìn)行調(diào)整優(yōu)化,某些時(shí)候甚至要進(jìn)行多方案對(duì)比驗(yàn)證。依據(jù)同種類型懸架拓?fù)浣Y(jié)構(gòu)相同或類似的特點(diǎn),使用懸架系統(tǒng)硬點(diǎn),應(yīng)用參數(shù)化的方法搭建懸架運(yùn)動(dòng)仿真模型成為常用的運(yùn)動(dòng)仿真分析方法[13]。
由于汽車(chē)懸架硬點(diǎn)坐標(biāo)直接確定了四輪定位參數(shù)、轉(zhuǎn)向梯形結(jié)構(gòu),直接影響了懸架的運(yùn)動(dòng)學(xué)特性、汽車(chē)的操縱穩(wěn)定性和行駛平順性,一直以來(lái)其都是汽車(chē)設(shè)計(jì)的重點(diǎn)。以汽車(chē)懸架的硬點(diǎn)和其他重要的安裝固定點(diǎn)建立懸架系統(tǒng)數(shù)學(xué)模型,麥弗遜式前懸架,如圖1 所示。
圖1 汽車(chē)麥弗遜懸架數(shù)學(xué)模型簡(jiǎn)化示意圖
CATIA 軟件的DMU Kinematics 模塊是專門(mén)用于建立DMU(Digital Mock Up)運(yùn)動(dòng)仿真的模塊。其建立的運(yùn)動(dòng)學(xué)懸架將懸架系統(tǒng)中的彈性元件(橡膠襯套、橫向穩(wěn)定桿等)理想化,使用運(yùn)動(dòng)副代替或轉(zhuǎn)化為剛性元件,運(yùn)動(dòng)仿真時(shí)不考慮彈性元件變形的影響[14]。在DMU中將橫向穩(wěn)定桿轉(zhuǎn)化成剛性元件后,橫向穩(wěn)定桿不再有彈性變形,為避免左右輪的上下跳動(dòng)相互影響,需將橫向穩(wěn)定桿從中間斷開(kāi)成2 個(gè)零件。麥弗遜式前懸架的運(yùn)動(dòng)副定義有多種組合形式,表1 示出了其中的一種。無(wú)論哪種組合形式,懸架機(jī)構(gòu)的自由度必須和驅(qū)動(dòng)的數(shù)量相同。在不存在虛約束和局部自由度的懸架系統(tǒng)中,可用空間機(jī)構(gòu)自由度計(jì)算公式計(jì)算懸架機(jī)構(gòu)自由度[15]。
式中:W——機(jī)構(gòu)的自由度;
m——機(jī)構(gòu)各構(gòu)件在運(yùn)動(dòng)時(shí)所受到的公共約束數(shù)(m 的值可依次取 0~4);
n——機(jī)構(gòu)的活動(dòng)構(gòu)件數(shù);
Pk——機(jī)構(gòu)的k 類運(yùn)動(dòng)副的數(shù)量;
k——機(jī)構(gòu)運(yùn)動(dòng)副的配合級(jí)別,由運(yùn)動(dòng)副所產(chǎn)生的約束數(shù)來(lái)決定,其數(shù)值相應(yīng) k=5、4、3、2、1。
表1 一種麥弗遜式前懸架的運(yùn)動(dòng)副定義
在編輯運(yùn)行程序以前,需要在VBAProject 引用對(duì)話框中引用所有的以“CATIA”開(kāi)頭的Object Library 類庫(kù)文件。引用后不但能使用VBA 代碼的自動(dòng)完成功能,而且還能在對(duì)象瀏覽器查看CATIA 的所有對(duì)象及其使用方法和屬性[16]。
可用如下代碼,通過(guò)COM 接口訪問(wèn)CATIA,并在初始化時(shí)新建產(chǎn)品文件:
需要注意的是,CATIA Automation 中 Product、Part-Document、part、Reference 等數(shù)據(jù)類型不能定義成為數(shù)組的數(shù)據(jù)類型,須以Variant 變體類型定義變量,尤其是函數(shù)中作為傳入?yún)?shù)的數(shù)組必須定義為Variant 變體類型,否則程序會(huì)出錯(cuò)。
在已經(jīng)建立好的Product 中,依據(jù)CATIA 文檔結(jié)構(gòu),通過(guò)API(Application Program Interface)逐級(jí)建立和獲取各層級(jí)對(duì)象。CATIA 中Application 對(duì)象的層級(jí)關(guān)系,與Product 文檔結(jié)構(gòu)樹(shù)的對(duì)照關(guān)系,如圖2 所示。零件建立完成后,再依據(jù)EXCEL 表格中的硬點(diǎn)坐標(biāo)數(shù)據(jù)建立點(diǎn)、線、面等模型,如此產(chǎn)品文檔中所有組件均使用整車(chē)坐標(biāo)系,免去了裝配過(guò)程中繁瑣的坐標(biāo)系轉(zhuǎn)換。
圖2 Application 對(duì)象與Product 結(jié)構(gòu)樹(shù)的對(duì)照關(guān)系界面示意圖
和CATIADMU Kinematics 模塊建立DMU 運(yùn)動(dòng)仿真模型一樣,VBA 程序的第一步也是建立Mechanism和固定車(chē)架組件。但建立運(yùn)動(dòng)副和驅(qū)動(dòng)命令,不同于工程設(shè)計(jì)人員在DMU Kinematics 模塊的操作,必須先提取用到的 Point、Line、Plane 的完整路徑,再在運(yùn)動(dòng)副建立的函數(shù)AddJoint()中引用這些路徑的Reference。
在mechanism 中添加運(yùn)動(dòng)副的AddJoint()函數(shù)不僅需要一個(gè)Reference 數(shù)組,還需要一個(gè)特殊字符串Type string 來(lái)確定運(yùn)動(dòng)副類型。表2 示出了懸架常用運(yùn)動(dòng)副和Type string、Reference 三者的對(duì)應(yīng)關(guān)系。
表2 懸架常用運(yùn)動(dòng)副和Type string、Reference 關(guān)系表
在CATIA 初始化并新建產(chǎn)品文件后,逐級(jí)建立和獲取Product、Documents、Part 等各層級(jí)對(duì)象。在零件幾何體Body 內(nèi)創(chuàng)建點(diǎn)、線、面等非基于草圖的特征元素需要啟用混合設(shè)計(jì)(HybridShapeFactory)模式,否則需將其建立在幾何圖形集HybridBody 內(nèi)。
讀取Excel 表單元格內(nèi)的硬點(diǎn)坐標(biāo),并在各Part 零件的‘零件幾何體’內(nèi)生成點(diǎn)、線、面等特征元素。
為在CATIA 程序界面看到三維圖形,所有特征模型建立完成后,必須激活所有端節(jié)點(diǎn)并啟動(dòng)設(shè)計(jì)模式。
新建機(jī)械裝置Mechanism,并固定車(chē)架組件oRoot-Product (1),再提取DMU 用到的所有元素的完整路徑名,建立提取的路徑名的Reference。
對(duì)于麥弗遜懸架的運(yùn)動(dòng)副,依據(jù)表1 和表2,AddJoint()函數(shù)的傳入?yún)?shù)用數(shù)組需要兩個(gè)元素或四個(gè)元素,分別定義擁有2 個(gè)一維數(shù)組就能滿足編程要求。
按需求添加運(yùn)動(dòng)副和命令既能完成模型建立,以下代碼列舉了定義車(chē)架和轉(zhuǎn)向齒條之間的運(yùn)動(dòng)副、驅(qū)動(dòng)命令的代碼。
在Excel 表格中輸入相關(guān)的硬點(diǎn)坐標(biāo)數(shù)據(jù),如圖3所示。在Excel 2013 和CATIA V5-6R2015 環(huán)境下實(shí)測(cè),點(diǎn)擊“建立DMU”命令按鈕后,程序執(zhí)行完成僅需兩秒,即完成運(yùn)動(dòng)仿真模型建立。相對(duì)于手工操作,節(jié)省了大量的時(shí)間,且避免了過(guò)程中的操作失誤。
圖3 Excel 表格程序操作界面示意圖
提出使用Excel-VBA 對(duì)CATIA 進(jìn)行二次開(kāi)發(fā),一鍵完成運(yùn)動(dòng)仿真模型建立,并開(kāi)發(fā)了相關(guān)軟件。以麥弗遜前懸架為實(shí)例,說(shuō)明了CATIA 懸架運(yùn)動(dòng)仿真模型的搭建方法,并給出了關(guān)鍵程序段,實(shí)際驗(yàn)證了程序的正確性及可行性,確定輸入硬點(diǎn)后,自動(dòng)完成懸架運(yùn)動(dòng)仿真模型建立,避免了繁瑣重復(fù)的操作,大幅度提高了工作效率。本方法可簡(jiǎn)單快捷地建立起汽車(chē)懸架參數(shù)化運(yùn)動(dòng)仿真模型,大幅提高工作效率,提升工作質(zhì)量,并且對(duì)其他機(jī)械機(jī)構(gòu)的運(yùn)動(dòng)仿真模型參數(shù)化建模也有參考和使用價(jià)值。