999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

懸架零部件運動間隙自動測量程序開發

2022-04-02 06:25:44
汽車實用技術 2022年6期
關鍵詞:測量方法

段 維

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

在設計汽車底盤懸架時,當性能輸出懸架硬點后,工程部門會根據硬點設計相關零部件的具體結構,從而判斷該硬點是否可以工程化。其中一個重要步驟便是校核懸架零部件在運動過程中是否存在干涉的可能。以前懸架雙叉臂,后懸架五連桿為例,需要判斷零部件之間的運動間隙約有70項。需得到每一項運動間隙的變化曲線,并獲取每一項的最小空間間隙,形成規范化的報告,作為該硬點和零件結構設計的工程化是否可行的設計過程文檔。而且,每一次階段性更改硬點或者零件結構,都將相應的更新該文檔,工作量很大。

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

本文基于程序設計語言(Visual Basic, VB)對CATIA進行二次開發,將上述手動操作過程固化為程序流程,用戶僅需要選擇測量的零件即可獲取零件之間的間隙隨懸架運動的變化曲線,以及最小間隙的具體值和對應的懸架狀態。這樣,簡化了人工參與的部分,使犯錯率下降,同時,增加了圖像的可讀性和實用性。可以為設計變更提供較為清晰的方向。

1 程序開發的工具和方法

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

在CATIA目錄下可以找到用于開發的幫助文件《V5Automation.chm》。該文件提供了二次開發所需的幾乎所有的對象、屬性和方法,用編程語言調用其中的對象、使用其方法,查看和修改其屬性,便可以定制我們想要的功能。《V5Automation.chm》文件提供了一個樹狀的目錄查詢結構,我們可以根據該樹狀的結構依次去查詢我們所需要的對象和方法,如圖1所示。

圖1 CATIA幫助文件目錄結構

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

本文便是利用上述方法,在一個已有的CATIA懸架DMU運動模型基礎上,運用VB創建一個自動測量零件與零件之間運動間隙的可視化程序。其輸入輸出界面如圖2所示。

圖2 程序輸入輸出界面

在“懸架及位置信息”框架中選擇懸架的位置,確認后,將在“行程信息顯示”框架中顯示懸架跳動的轉向行程和輪跳行程(后懸無轉向行程),緊接著,在測量零件信息中選擇需要測量的兩個零件。點擊“選擇并生成”按鈕后,將自動進行測量并將最終結果顯示在輸出界面,包含最小間隙和最小間隙對應的懸架狀態,以及間隙隨懸架運動的圖像。

2 使用VB進行程序開發

2.1 開發前準備和開發流程

在進行開發之前,我們需要將懸架的電子樣機(Digital Mock-Up, DMU)運動模型搭建好。本文以前懸為例,前懸架包含一個轉向齒條驅動和左、右輪跳驅動。因不同場景和使用方法不同,某些情況下可能僅包含左側輪跳,或者輪跳驅動更改為減震器驅動。

此外,啟動VB,創建一個“標準EXE”工程后,需要對CATIA的所有類庫進行引用,這樣才能在VB中使用CATIA的所有對象的屬性和方法。

完成準備后,首先,需要遍歷運動模型的所有運動零件和運動副,獲取驅動值;然后,通過交互選擇得到需要測量的零件;之后,按照一定的規則使機構分步運動起來,并記錄每一步測量零件的間隙值,同時比較更新最小間隙值;最后將記錄的每一步間隙值繪制成圖形。相應的開發流程如圖3所示。

圖3 程序流程圖

2.2 獲取DMU對象和相應信息

在打開運動模擬機構后,首先需要用 VB獲取當前的CATIA對象。

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

獲取 CATIA對象后,便可以根據《V5Automation.chm》文件提供的目錄結構獲取運動機構對象。它存在于產品文件對象下的 Technological Object中,相應的代碼如下:

我們同時獲取了當前運動機構的產品文件對象(oRootproduct)和機構對象(Mec)。我們遍歷oRootproduct對象下的子零件,然后將其子零件的名稱存入到組合框列表中(combo),相應的代碼如下:

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

獲取運動副的驅動上下極限值的方法用Joint.LowerLimit1和Joint. UpperLimit1。相應的代碼如下:

2.3 測量運動間隙

2.3.1 定義測量對象

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

2.3.2 運動方式

本文目的是測量兩個零件在隨懸架運動的過程中的間隙。我們無法測量所有狀態的間隙,也只能測量離散狀態的間隙。因此,必須考慮用某種運動方式來盡量精確代表零件間的運動間隙,而且不要錯過最小位置。業內主要使用“矩形運動”的方法,如圖4所示。

圖4 懸架“矩形運動”示意圖

矩形的橫軸代表轉向,縱軸代表輪跳。矩形及矩形內的一個點代表懸架的一個狀態。將所有的狀態都進行測量是不可能的。我們的做法是僅選取矩形邊框上的點,它們代表了懸架所有的極限狀態。我們認為,懸架零件在運動過程中的最小的間隙一般都在這些極限位置中。但是,矩形邊框上的點也是無窮多的。我們需要將其離散成有限數量的點。

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

用VB執行“矩形運動”的代碼如下:

其中,Acc_Num_Sum是采取的總點數,此處為 41;Acc_Num 表示每一條邊線采取的點的數量,此處為10;Neg_TurnValue和Pos_Turn_Value分別是轉向齒條總行程的一半,前者為負,表示內轉向;UpValue和LowValue分別是輪跳的上、下極限值,后者為負值。我們將每一個對應的轉向、輪跳行程驅動值賦值到數組dValcmd()中,使用的代碼如下:

Mec是獲取的運動機構對象。使用它的 Put CommandValues方法將數組dValcmd()中的驅動值傳給運動機構,就能使懸架運動到指定的狀態下。

2.3.3 在運動中測量

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

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

將計算得出的值保存到 DistanceValu()數組中,并和最小間隙值 MinDistance和最大間隙值MaxDistance進行比較。如果過程值比MinDistance小,則用過程值替換掉MinDistance;如果過程值比 MaxDistance大,則用過程值替換掉 Max Distance。同時用另外一個數組Mincmd()儲存下最小間隙值對應的驅動值dValcmd()。如此迭代,保證最后運行完成之后能得到最大間隙值和最小間隙值及其對應的驅動值,以便之后輸出。

值得注意的是,在完成一個“矩形運動”后,我們獲得了兩個零件的測量信息。此時,需要將過程信息刪除,以便為下一次測量提供足夠的內存。此處,刪除所有的組和 Distance結果,代碼如下:

2.4 結果輸出

2.4.1 最小值輸出

要將計算的結果輸出到窗格中,只需要將對應的 label用 2.3中的 MinDistance和對應的Mincmd()替換輸出即可。

此外,本文添加了一個最小值查看功能。即“goto”按鈕。點擊該按鈕,便可以將懸架模型驅動到最小值對應的狀態,并顯示最小間隙值的位置。由于我們已經存儲了最小間隙值對應的驅動值數組Mincmd(),因此只需要將此值賦值給懸架運動模型即可。而要顯示最小值,可以將3.3中所述兩個零件的測量過程重新運行一次即可,這里不再贅述。

其間需要注意一點的是在程序和CATIA窗口之間的視點切換問題。啟動程序時,我們需要將視點固定在CATIA窗口中,以便查看其測量是否正常;完成測量后,視點需要切換到程序界面以查看結果;點擊“goto”時,又需要切換回CATIA窗口。

切換到CATIA視點代碼:

AppActivate "catia", wait

切換到程序視點代碼:

AppActivate "測量懸架桿系運動間隙", wait

2.4.2 圖像繪制前準備

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

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

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

(2)軸的刻度數量最大為10個;

(3)軸刻度從0開始。

從2.3中,我們可以獲得零件在運動過程中的最大間隙值 MaxDistance和最小間隙值 MinDistance。對于任何最大間隙值,都可以用科學計數法來表示:

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

坐標軸的單位長度也用科學計數法表示:

式中,iStep是軸的單位長度;是其有效數字,0<<10。

為了獲取較為合適的單位長度,這里約定:

若/0.25<10,則=0.25;

若/0.5<10,則=0.5;

若/1<10,則=1;

如此,我們便根據最大值求出了較為合適的軸單位長度。進而,我們可以得到軸的最大刻度值,對應代碼如下:

2.4.3 繪制坐標軸和曲線

有了、軸的單位長度和最大刻度,便可以通過VB的PictureBox中的line方法繪制坐標軸。

首先需要對控件“Picture”設置畫布的坐標范圍。采用Picture中的scale方法。scale方法參數是兩個點,以此形成一個矩形區域。第一個點是矩形的左上角,第二個點是矩形的右下角。

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

然后在該矩形區域內繪制坐標軸:

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

繪制曲線的圖像,僅需要使用Picture.Line方法依次將各個間隙點連接起來即可。繪制坐標軸、軸標題和曲線的相關代碼如下:

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

3 結束語

本文使用VB連接CATIA開發接口,用VB程序調用CATIA各個自動化對象,實現了自動對CATIA懸架運動模型中的零部件之間的運動間隙的測量,并根據結果利用 VB自帶的控件自動繪制圖形。此方法在處理DMU運動間隙校核方面首次被提出,符合業內對懸架運動機構零件的測量方法,圖形繪制滿足業內需求。

猜你喜歡
測量方法
把握四個“三” 測量變簡單
學習方法
滑動摩擦力的測量和計算
滑動摩擦力的測量與計算
測量的樂趣
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
測量
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 欧美人人干| 国产福利不卡视频| 91福利一区二区三区| 亚洲αv毛片| 中文字幕永久在线看| 国产欧美高清| 国产成人久视频免费| 亚洲成在线观看| 日韩欧美国产三级| 欧美在线视频不卡第一页| av一区二区三区高清久久| 久久成人18免费| 久久久久久久蜜桃| 69av免费视频| 国产 日韩 欧美 第二页| 国产av无码日韩av无码网站| 香蕉久人久人青草青草| 日本精品视频一区二区| 午夜国产理论| Aⅴ无码专区在线观看| 制服丝袜国产精品| 91成人精品视频| 久久99国产综合精品1| 国内精品视频区在线2021| 欧美在线网| 77777亚洲午夜久久多人| 99re免费视频| 国产成人久久777777| 中国一级毛片免费观看| 国产麻豆福利av在线播放| 亚洲精品福利网站| 一级毛片在线播放免费| 亚洲国产成人麻豆精品| 四虎精品黑人视频| 香蕉视频在线观看www| 国产麻豆精品久久一二三| 精品少妇人妻无码久久| 精品欧美视频| 国产精品真实对白精彩久久| 久久国产精品嫖妓| 在线精品视频成人网| 91精选国产大片| 一本综合久久| 国产91高清视频| 国产精品成人一区二区不卡| 国产最新无码专区在线| 国产91视频观看| 日韩国产精品无码一区二区三区| 久久精品亚洲专区| 国产欧美日韩精品综合在线| 亚洲人成网站18禁动漫无码| 强乱中文字幕在线播放不卡| 亚洲免费成人网| 欧美一级片在线| 国产精品冒白浆免费视频| 日本在线国产| 2021天堂在线亚洲精品专区| 老司机午夜精品视频你懂的| 中文字幕佐山爱一区二区免费| 91免费片| 欧美三級片黃色三級片黃色1| 日韩免费成人| 精品久久久久成人码免费动漫| yy6080理论大片一级久久| 无码高潮喷水在线观看| 理论片一区| 成年人国产网站| 国产欧美又粗又猛又爽老| 人妻免费无码不卡视频| 婷婷成人综合| 一级毛片免费高清视频| 国产日韩欧美精品区性色| 久久永久免费人妻精品| 高清免费毛片| 国产打屁股免费区网站| 五月婷婷欧美| 天堂在线www网亚洲| 国产成人AV综合久久| 天天操天天噜| 日韩天堂视频| 亚洲欧美精品日韩欧美| 亚洲三级电影在线播放|