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
賺錢方法
捕魚
主站蜘蛛池模板: 亚洲毛片一级带毛片基地| 免费jizz在线播放| 日本高清免费一本在线观看| 热久久综合这里只有精品电影| 欧美亚洲一区二区三区在线| 精品国产美女福到在线不卡f| 精品一区二区三区水蜜桃| 成人夜夜嗨| 久久毛片网| 国产成人一区二区| 国产免费久久精品99re丫丫一| 香蕉网久久| 国产精品手机在线播放| 在线播放国产一区| 人人91人人澡人人妻人人爽 | 久久国语对白| 国产屁屁影院| 欧美中文字幕第一页线路一| 久久中文电影| 日韩乱码免费一区二区三区| 一级毛片免费不卡在线视频| 精品国产自在在线在线观看| 精品国产女同疯狂摩擦2| 欧美国产在线精品17p| 亚洲天堂网在线视频| www.99在线观看| 在线精品自拍| 国产在线日本| a级毛片免费看| 91视频日本| 精品国产Av电影无码久久久| 六月婷婷综合| 美美女高清毛片视频免费观看| 亚洲女同欧美在线| 亚洲无卡视频| 波多野结衣亚洲一区| 99在线视频免费| 精品久久国产综合精麻豆| 久久99精品久久久久久不卡| 看你懂的巨臀中文字幕一区二区| 国产手机在线小视频免费观看| 亚洲三级a| 国产伦精品一区二区三区视频优播 | 成年片色大黄全免费网站久久| 高清码无在线看| 国内老司机精品视频在线播出| 99视频只有精品| 国产裸舞福利在线视频合集| 国产精选小视频在线观看| 国内精品视频| 亚洲狼网站狼狼鲁亚洲下载| 天天色天天综合网| 制服丝袜一区| 久视频免费精品6| 91福利一区二区三区| 亚洲国产精品无码AV| 欧美成人影院亚洲综合图| www中文字幕在线观看| 久久中文字幕不卡一二区| 亚洲高清资源| 男女性午夜福利网站| 一级高清毛片免费a级高清毛片| 婷婷六月在线| 中国毛片网| 青青草国产在线视频| 精品福利视频导航| 国产精品免费久久久久影院无码| 六月婷婷综合| 亚洲精品自产拍在线观看APP| 亚洲区第一页| 国产精品九九视频| 性色一区| 国产欧美日韩精品综合在线| 免费在线看黄网址| 三上悠亚在线精品二区| 国产精品不卡片视频免费观看| 亚洲第七页| 99久久国产精品无码| 五月激情综合网| 国产黄色片在线看| 日本高清免费一本在线观看 | 国产不卡国语在线|