亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        懸架零部件運(yùn)動(dòng)間隙自動(dòng)測(cè)量程序開(kāi)發(fā)

        2022-04-02 06:25:44
        汽車(chē)實(shí)用技術(shù) 2022年6期
        關(guān)鍵詞:測(cè)量方法

        段 維

        (威馬汽車(chē)科技集團(tuán)有限公司 成都研究院,四川 成都 610100)

        在設(shè)計(jì)汽車(chē)底盤(pán)懸架時(shí),當(dāng)性能輸出懸架硬點(diǎn)后,工程部門(mén)會(huì)根據(jù)硬點(diǎn)設(shè)計(jì)相關(guān)零部件的具體結(jié)構(gòu),從而判斷該硬點(diǎn)是否可以工程化。其中一個(gè)重要步驟便是校核懸架零部件在運(yùn)動(dòng)過(guò)程中是否存在干涉的可能。以前懸架雙叉臂,后懸架五連桿為例,需要判斷零部件之間的運(yùn)動(dòng)間隙約有70項(xiàng)。需得到每一項(xiàng)運(yùn)動(dòng)間隙的變化曲線,并獲取每一項(xiàng)的最小空間間隙,形成規(guī)范化的報(bào)告,作為該硬點(diǎn)和零件結(jié)構(gòu)設(shè)計(jì)的工程化是否可行的設(shè)計(jì)過(guò)程文檔。而且,每一次階段性更改硬點(diǎn)或者零件結(jié)構(gòu),都將相應(yīng)的更新該文檔,工作量很大。

        CATIA作為一款強(qiáng)大計(jì)算機(jī)輔助設(shè)計(jì)軟件,在汽車(chē)行業(yè)被廣泛地使用。針對(duì)以上的問(wèn)題,目前普遍的做法是直接采用CATIA數(shù)字樣機(jī)內(nèi)置的“傳感器”功能。即先測(cè)量出兩個(gè)零件在任意狀態(tài)下的間隙,然后再用命令模擬中激活該測(cè)量的傳感器,進(jìn)而在更改驅(qū)動(dòng)命令值時(shí),該測(cè)量將隨之更新。再用CATIA內(nèi)置的功能導(dǎo)出一系列測(cè)量值或者直接生成曲線,最后找到最小值。該方法完全能滿足工作的需求。但是,也有較明顯的缺點(diǎn),一是操作繁瑣;二是結(jié)果圖表信息不友好,較難編輯,且無(wú)法顯示最小間隙對(duì)應(yīng)的懸架狀態(tài)。

        本文基于程序設(shè)計(jì)語(yǔ)言(Visual Basic, VB)對(duì)CATIA進(jìn)行二次開(kāi)發(fā),將上述手動(dòng)操作過(guò)程固化為程序流程,用戶僅需要選擇測(cè)量的零件即可獲取零件之間的間隙隨懸架運(yùn)動(dòng)的變化曲線,以及最小間隙的具體值和對(duì)應(yīng)的懸架狀態(tài)。這樣,簡(jiǎn)化了人工參與的部分,使犯錯(cuò)率下降,同時(shí),增加了圖像的可讀性和實(shí)用性??梢詾樵O(shè)計(jì)變更提供較為清晰的方向。

        1 程序開(kāi)發(fā)的工具和方法

        汽車(chē)行業(yè)的3D設(shè)計(jì)軟件有很多,如CATIA、UG、Pro-E等。其中CATIA是法國(guó)達(dá)索公司開(kāi)發(fā)的CAD/CAE/CAM一體化軟件,它不僅僅是一款優(yōu)秀的計(jì)算機(jī)輔助設(shè)計(jì)軟件,在為用戶提供了豐富功能的同時(shí),還為用戶提供了多種二次開(kāi)發(fā)的接口。如自動(dòng)化對(duì)象編程(V5 Automation)和開(kāi)放的基于組件的應(yīng)用程序編程(CAA)。本文所述程序便是利用 VB,在 CATIA的自動(dòng)化編程接口基礎(chǔ)上進(jìn)行的二次開(kāi)發(fā)。

        在CATIA目錄下可以找到用于開(kāi)發(fā)的幫助文件《V5Automation.chm》。該文件提供了二次開(kāi)發(fā)所需的幾乎所有的對(duì)象、屬性和方法,用編程語(yǔ)言調(diào)用其中的對(duì)象、使用其方法,查看和修改其屬性,便可以定制我們想要的功能。《V5Automation.chm》文件提供了一個(gè)樹(shù)狀的目錄查詢結(jié)構(gòu),我們可以根據(jù)該樹(shù)狀的結(jié)構(gòu)依次去查詢我們所需要的對(duì)象和方法,如圖1所示。

        圖1 CATIA幫助文件目錄結(jié)構(gòu)

        但由于其內(nèi)容過(guò)于繁雜,有時(shí)候無(wú)法確定我們所需的對(duì)象、方法。這時(shí)候可以使用CATIA的“錄制宏”功能。將我們的操作錄制為宏,然后查看宏代碼。宏代碼使用的是 VB語(yǔ)言。從中,我們可以找到整個(gè)操作使用的對(duì)象,以及如何使用該對(duì)象的屬性和方法。這對(duì)于快速獲取操作對(duì)象非常有幫助。

        本文便是利用上述方法,在一個(gè)已有的CATIA懸架DMU運(yùn)動(dòng)模型基礎(chǔ)上,運(yùn)用VB創(chuàng)建一個(gè)自動(dòng)測(cè)量零件與零件之間運(yùn)動(dòng)間隙的可視化程序。其輸入輸出界面如圖2所示。

        圖2 程序輸入輸出界面

        在“懸架及位置信息”框架中選擇懸架的位置,確認(rèn)后,將在“行程信息顯示”框架中顯示懸架跳動(dòng)的轉(zhuǎn)向行程和輪跳行程(后懸無(wú)轉(zhuǎn)向行程),緊接著,在測(cè)量零件信息中選擇需要測(cè)量的兩個(gè)零件。點(diǎn)擊“選擇并生成”按鈕后,將自動(dòng)進(jìn)行測(cè)量并將最終結(jié)果顯示在輸出界面,包含最小間隙和最小間隙對(duì)應(yīng)的懸架狀態(tài),以及間隙隨懸架運(yùn)動(dòng)的圖像。

        2 使用VB進(jìn)行程序開(kāi)發(fā)

        2.1 開(kāi)發(fā)前準(zhǔn)備和開(kāi)發(fā)流程

        在進(jìn)行開(kāi)發(fā)之前,我們需要將懸架的電子樣機(jī)(Digital Mock-Up, DMU)運(yùn)動(dòng)模型搭建好。本文以前懸為例,前懸架包含一個(gè)轉(zhuǎn)向齒條驅(qū)動(dòng)和左、右輪跳驅(qū)動(dòng)。因不同場(chǎng)景和使用方法不同,某些情況下可能僅包含左側(cè)輪跳,或者輪跳驅(qū)動(dòng)更改為減震器驅(qū)動(dòng)。

        此外,啟動(dòng)VB,創(chuàng)建一個(gè)“標(biāo)準(zhǔn)EXE”工程后,需要對(duì)CATIA的所有類庫(kù)進(jìn)行引用,這樣才能在VB中使用CATIA的所有對(duì)象的屬性和方法。

        完成準(zhǔn)備后,首先,需要遍歷運(yùn)動(dòng)模型的所有運(yùn)動(dòng)零件和運(yùn)動(dòng)副,獲取驅(qū)動(dòng)值;然后,通過(guò)交互選擇得到需要測(cè)量的零件;之后,按照一定的規(guī)則使機(jī)構(gòu)分步運(yùn)動(dòng)起來(lái),并記錄每一步測(cè)量零件的間隙值,同時(shí)比較更新最小間隙值;最后將記錄的每一步間隙值繪制成圖形。相應(yīng)的開(kāi)發(fā)流程如圖3所示。

        圖3 程序流程圖

        2.2 獲取DMU對(duì)象和相應(yīng)信息

        在打開(kāi)運(yùn)動(dòng)模擬機(jī)構(gòu)后,首先需要用 VB獲取當(dāng)前的CATIA對(duì)象。

        Set CATIA =GetObject(,"catia.Application")

        獲取 CATIA對(duì)象后,便可以根據(jù)《V5Automation.chm》文件提供的目錄結(jié)構(gòu)獲取運(yùn)動(dòng)機(jī)構(gòu)對(duì)象。它存在于產(chǎn)品文件對(duì)象下的 Technological Object中,相應(yīng)的代碼如下:

        我們同時(shí)獲取了當(dāng)前運(yùn)動(dòng)機(jī)構(gòu)的產(chǎn)品文件對(duì)象(oRootproduct)和機(jī)構(gòu)對(duì)象(Mec)。我們遍歷oRootproduct對(duì)象下的子零件,然后將其子零件的名稱存入到組合框列表中(combo),相應(yīng)的代碼如下:

        運(yùn)動(dòng)機(jī)構(gòu)的零部件是通過(guò)運(yùn)動(dòng)副(joint)來(lái)連接彼此的。在本文所述前懸架DMU中,輪跳和齒條的運(yùn)動(dòng)副均為“棱形副”,英文名稱為“prismatic”。同時(shí),還為輪跳和轉(zhuǎn)向齒條的運(yùn)動(dòng)副設(shè)置了驅(qū)動(dòng)值,以此來(lái)驅(qū)動(dòng)輪胎跳動(dòng)和進(jìn)行轉(zhuǎn)向,并帶動(dòng)相應(yīng)的零部件進(jìn)行運(yùn)動(dòng)。因此,為了獲取輪跳的上下極限行程和轉(zhuǎn)向齒條行程,只需要找到含有驅(qū)動(dòng)值的“棱形副”即可,并通過(guò)該運(yùn)動(dòng)副的屬性獲取相應(yīng)的極限值。但是,輪跳和轉(zhuǎn)向均為“棱形副”,我們需要將其區(qū)分開(kāi)。本文采用的方法是:若運(yùn)動(dòng)副的上下極限行程絕對(duì)值不同,則可以判斷為輪跳;反之,若上下極限行程絕對(duì)值是相等的,則可判斷為轉(zhuǎn)向。筆者目前還沒(méi)有見(jiàn)到過(guò)懸架上下行程精確相同的案例。

        獲取運(yùn)動(dòng)副的驅(qū)動(dòng)上下極限值的方法用Joint.LowerLimit1和Joint. UpperLimit1。相應(yīng)的代碼如下:

        2.3 測(cè)量運(yùn)動(dòng)間隙

        2.3.1 定義測(cè)量對(duì)象

        在2.2中,通過(guò)遍歷DMU運(yùn)動(dòng)產(chǎn)品文件的方法獲得了所有的運(yùn)動(dòng)子零件,并且將子零件的名稱全都儲(chǔ)存到form中的組合框列表中。因此,用戶無(wú)需在CATIA中選擇需要測(cè)量的零件,僅需要在組合框下拉列表中分別選擇“零件一”和“零件二”的零件名稱即可。

        2.3.2 運(yùn)動(dòng)方式

        本文目的是測(cè)量?jī)蓚€(gè)零件在隨懸架運(yùn)動(dòng)的過(guò)程中的間隙。我們無(wú)法測(cè)量所有狀態(tài)的間隙,也只能測(cè)量離散狀態(tài)的間隙。因此,必須考慮用某種運(yùn)動(dòng)方式來(lái)盡量精確代表零件間的運(yùn)動(dòng)間隙,而且不要錯(cuò)過(guò)最小位置。業(yè)內(nèi)主要使用“矩形運(yùn)動(dòng)”的方法,如圖4所示。

        圖4 懸架“矩形運(yùn)動(dòng)”示意圖

        矩形的橫軸代表轉(zhuǎn)向,縱軸代表輪跳。矩形及矩形內(nèi)的一個(gè)點(diǎn)代表懸架的一個(gè)狀態(tài)。將所有的狀態(tài)都進(jìn)行測(cè)量是不可能的。我們的做法是僅選取矩形邊框上的點(diǎn),它們代表了懸架所有的極限狀態(tài)。我們認(rèn)為,懸架零件在運(yùn)動(dòng)過(guò)程中的最小的間隙一般都在這些極限位置中。但是,矩形邊框上的點(diǎn)也是無(wú)窮多的。我們需要將其離散成有限數(shù)量的點(diǎn)。

        本文中,每一條邊等分取了10個(gè)點(diǎn),整個(gè)運(yùn)動(dòng)共41個(gè)點(diǎn)。將懸架分別運(yùn)動(dòng)到這些點(diǎn)中,再測(cè)量零件的間隙,最終便可以形成曲線,并找到最小值。當(dāng)然,其中每一條邊可以取更多的點(diǎn)以提高精度,視具體情況而定。

        用VB執(zhí)行“矩形運(yùn)動(dòng)”的代碼如下:

        其中,Acc_Num_Sum是采取的總點(diǎn)數(shù),此處為 41;Acc_Num 表示每一條邊線采取的點(diǎn)的數(shù)量,此處為10;Neg_TurnValue和Pos_Turn_Value分別是轉(zhuǎn)向齒條總行程的一半,前者為負(fù),表示內(nèi)轉(zhuǎn)向;UpValue和LowValue分別是輪跳的上、下極限值,后者為負(fù)值。我們將每一個(gè)對(duì)應(yīng)的轉(zhuǎn)向、輪跳行程驅(qū)動(dòng)值賦值到數(shù)組dValcmd()中,使用的代碼如下:

        Mec是獲取的運(yùn)動(dòng)機(jī)構(gòu)對(duì)象。使用它的 Put CommandValues方法將數(shù)組dValcmd()中的驅(qū)動(dòng)值傳給運(yùn)動(dòng)機(jī)構(gòu),就能使懸架運(yùn)動(dòng)到指定的狀態(tài)下。

        2.3.3 在運(yùn)動(dòng)中測(cè)量

        將懸架DMU運(yùn)動(dòng)按照“矩形運(yùn)動(dòng)”的規(guī)則運(yùn)動(dòng)到某一個(gè)狀態(tài)后,就需要在該狀態(tài)下測(cè)量對(duì)象零件間的間隙值。在日常使用CATIA中,我們直接用測(cè)量工具(Measure Between)來(lái)測(cè)量產(chǎn)品(Product)到產(chǎn)品(Product)的距離。在CATIA提供的《V5Automation.chm》文件中,我們很容易就聯(lián)想到使用 GetWorkbench方法獲取 SPAWorkbench對(duì)象,使用其中的 Measurable對(duì)象來(lái)進(jìn)行處理。但是,Measurable對(duì)象并不支持產(chǎn)品到產(chǎn)品的測(cè)量。而應(yīng)該使用Distance對(duì)象。并且,Distance對(duì)象也只能在根文件(root product)使用下面方法進(jìn)行調(diào)用:

        使用 Distance對(duì)象,我們需要先定義元素(Component),即零件對(duì)象;然后,將元素添加到組(Group)中;進(jìn)而給 Distance的 Firstgroup和Secondgroup進(jìn)行賦值,最后進(jìn)行計(jì)算。也即,Group中可以包含多個(gè)零件元素,能達(dá)到多產(chǎn)品與多產(chǎn)品之間的間隙測(cè)量。值得注意的是,如果零件處于隱藏狀態(tài),間隙測(cè)量是無(wú)法正確計(jì)算的,需要將隱藏的零件顯示。如下所示代碼是測(cè)量前的相關(guān)初始化工作。

        將計(jì)算得出的值保存到 DistanceValu()數(shù)組中,并和最小間隙值 MinDistance和最大間隙值MaxDistance進(jìn)行比較。如果過(guò)程值比MinDistance小,則用過(guò)程值替換掉MinDistance;如果過(guò)程值比 MaxDistance大,則用過(guò)程值替換掉 Max Distance。同時(shí)用另外一個(gè)數(shù)組Mincmd()儲(chǔ)存下最小間隙值對(duì)應(yīng)的驅(qū)動(dòng)值dValcmd()。如此迭代,保證最后運(yùn)行完成之后能得到最大間隙值和最小間隙值及其對(duì)應(yīng)的驅(qū)動(dòng)值,以便之后輸出。

        值得注意的是,在完成一個(gè)“矩形運(yùn)動(dòng)”后,我們獲得了兩個(gè)零件的測(cè)量信息。此時(shí),需要將過(guò)程信息刪除,以便為下一次測(cè)量提供足夠的內(nèi)存。此處,刪除所有的組和 Distance結(jié)果,代碼如下:

        2.4 結(jié)果輸出

        2.4.1 最小值輸出

        要將計(jì)算的結(jié)果輸出到窗格中,只需要將對(duì)應(yīng)的 label用 2.3中的 MinDistance和對(duì)應(yīng)的Mincmd()替換輸出即可。

        此外,本文添加了一個(gè)最小值查看功能。即“goto”按鈕。點(diǎn)擊該按鈕,便可以將懸架模型驅(qū)動(dòng)到最小值對(duì)應(yīng)的狀態(tài),并顯示最小間隙值的位置。由于我們已經(jīng)存儲(chǔ)了最小間隙值對(duì)應(yīng)的驅(qū)動(dòng)值數(shù)組Mincmd(),因此只需要將此值賦值給懸架運(yùn)動(dòng)模型即可。而要顯示最小值,可以將3.3中所述兩個(gè)零件的測(cè)量過(guò)程重新運(yùn)行一次即可,這里不再贅述。

        其間需要注意一點(diǎn)的是在程序和CATIA窗口之間的視點(diǎn)切換問(wèn)題。啟動(dòng)程序時(shí),我們需要將視點(diǎn)固定在CATIA窗口中,以便查看其測(cè)量是否正常;完成測(cè)量后,視點(diǎn)需要切換到程序界面以查看結(jié)果;點(diǎn)擊“goto”時(shí),又需要切換回CATIA窗口。

        切換到CATIA視點(diǎn)代碼:

        AppActivate "catia", wait

        切換到程序視點(diǎn)代碼:

        AppActivate "測(cè)量懸架桿系運(yùn)動(dòng)間隙", wait

        2.4.2 圖像繪制前準(zhǔn)備

        VB雖然提供了較為友好的可視化界面、豐富的控件。但是其在圖形繪制方面的功能卻顯得捉襟見(jiàn)肘。VB僅提供了點(diǎn)和線的繪制功能,并沒(méi)有提供坐標(biāo)軸的繪制模塊。因此,我們需要自己繪制坐標(biāo)軸。

        這里,我們使用“Picture”控件來(lái)繪制圖形。軸定義為“事件”,即測(cè)量的順次。我們一共測(cè)量了41次,因此最大值定義為45,每5次一個(gè)刻度;軸定義為間隙值,單位為mm。但是,由于每一對(duì)零件和零件的運(yùn)動(dòng)間隙最大值均不同,我們的坐標(biāo)刻度值必須兼容所有的情況。若將刻度最大值定義得過(guò)大,對(duì)于某一些間隙值較小的情況,圖像將顯得不協(xié)調(diào);反之,若將刻度值定義的較小,某些圖像將顯示不全。因此,我們的軸必須是動(dòng)態(tài)的,根據(jù)每一次操作得到的具體值重新繪制。為了滿足需求,我們做了以下三個(gè)約定和假設(shè)。

        (1)零部件之間的動(dòng)態(tài)間隙最大值和最小值不能差異過(guò)大,一般<200 mm;

        (2)軸的刻度數(shù)量最大為10個(gè);

        (3)軸刻度從0開(kāi)始。

        從2.3中,我們可以獲得零件在運(yùn)動(dòng)過(guò)程中的最大間隙值 MaxDistance和最小間隙值 MinDistance。對(duì)于任何最大間隙值,都可以用科學(xué)計(jì)數(shù)法來(lái)表示:

        式中,是間隙的最大值;是有效數(shù)字,0<<10;Level為指數(shù),為整數(shù)。

        坐標(biāo)軸的單位長(zhǎng)度也用科學(xué)計(jì)數(shù)法表示:

        式中,iStep是軸的單位長(zhǎng)度;是其有效數(shù)字,0<<10。

        為了獲取較為合適的單位長(zhǎng)度,這里約定:

        若/0.25<10,則=0.25;

        若/0.5<10,則=0.5;

        若/1<10,則=1;

        如此,我們便根據(jù)最大值求出了較為合適的軸單位長(zhǎng)度。進(jìn)而,我們可以得到軸的最大刻度值,對(duì)應(yīng)代碼如下:

        2.4.3 繪制坐標(biāo)軸和曲線

        有了、軸的單位長(zhǎng)度和最大刻度,便可以通過(guò)VB的PictureBox中的line方法繪制坐標(biāo)軸。

        首先需要對(duì)控件“Picture”設(shè)置畫(huà)布的坐標(biāo)范圍。采用Picture中的scale方法。scale方法參數(shù)是兩個(gè)點(diǎn),以此形成一個(gè)矩形區(qū)域。第一個(gè)點(diǎn)是矩形的左上角,第二個(gè)點(diǎn)是矩形的右下角。

        此處的范圍比2.4.3中所述最大值略大,比最小值略小,是需要在多出的空白部分可以添加刻度值和軸標(biāo)題。

        然后在該矩形區(qū)域內(nèi)繪制坐標(biāo)軸:

        要添加文字,首先需要使用 Picture.CurrentX和Picture.CurrentY方法定義文字的坐標(biāo)點(diǎn)。該坐標(biāo)點(diǎn)指代的是文本框的左上角的點(diǎn)。然后,使用Picture.Print功能添加具體的文字內(nèi)容。

        繪制曲線的圖像,僅需要使用Picture.Line方法依次將各個(gè)間隙點(diǎn)連接起來(lái)即可。繪制坐標(biāo)軸、軸標(biāo)題和曲線的相關(guān)代碼如下:

        至此,便可以獲得如圖2所示的結(jié)果圖形輸出。

        3 結(jié)束語(yǔ)

        本文使用VB連接CATIA開(kāi)發(fā)接口,用VB程序調(diào)用CATIA各個(gè)自動(dòng)化對(duì)象,實(shí)現(xiàn)了自動(dòng)對(duì)CATIA懸架運(yùn)動(dòng)模型中的零部件之間的運(yùn)動(dòng)間隙的測(cè)量,并根據(jù)結(jié)果利用 VB自帶的控件自動(dòng)繪制圖形。此方法在處理DMU運(yùn)動(dòng)間隙校核方面首次被提出,符合業(yè)內(nèi)對(duì)懸架運(yùn)動(dòng)機(jī)構(gòu)零件的測(cè)量方法,圖形繪制滿足業(yè)內(nèi)需求。

        猜你喜歡
        測(cè)量方法
        把握四個(gè)“三” 測(cè)量變簡(jiǎn)單
        學(xué)習(xí)方法
        滑動(dòng)摩擦力的測(cè)量和計(jì)算
        滑動(dòng)摩擦力的測(cè)量與計(jì)算
        測(cè)量的樂(lè)趣
        可能是方法不對(duì)
        用對(duì)方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        測(cè)量
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢(qián)方法
        全黄性性激高免费视频| 国产一级黄色av影片| 成a人片亚洲日本久久| 狠狠躁夜夜躁av网站中文字幕| 亚洲亚洲人成综合网络| 国产精品18禁久久久久久久久| 少妇被日到高潮的视频| 视频在线观看国产自拍| 无码成人一区二区 | 亚洲视频99| 女同久久精品国产99国产精| 丰满少妇按摩被扣逼高潮| 内射少妇36p亚洲区| 五月天国产精品| 日韩十八禁在线观看视频| 亚洲视频网站大全免费看| 国产高清在线精品一区二区三区| 日韩AV有码无码一区二区三区| 日韩中文字幕一区二十| 久久人妻av无码中文专区| 全免费a级毛片免费看网站| 中文字幕乱码无码人妻系列蜜桃| 日韩欧美在线综合网| 亚洲人成影院在线高清| 久久91精品国产一区二区| 97久久精品人妻人人搡人人玩 | 精品国产亚洲av久一区二区三区| 亚洲开心婷婷中文字幕| 亚洲欧美日韩中文在线制服| 国产精品久久久久免费a∨不卡| 大陆少妇一区二区三区| 免费a级毛片18禁网站app| 久久aⅴ无码av免费一区| 一区二区三区四区日韩亚洲| 亚洲精品国产一二三区| 99精品国产综合久久久久五月天| 亚洲中文无码精品久久不卡| 亚洲av乱码一区二区三区人人| 国产成人a在线观看视频免费| 国产精品自在线免费| 蜜桃av一区二区三区|