ADAMS精華心得(五)
ADAMS2005版View下李軍整車模型建模經驗總結
作者:john152
大多數初學者都會從李軍的《ADAMS實例教程》開始學起,我也不例外。但李軍在書中使用的是2003版的adams,而我們大多數開始使用2005版的,中間存在著一些差異,而就是這些差異導致了我們很多初學者不能建模成功。我也經歷了這些過程,經過不斷的探索,在Simwe論壇各網友的幫助下成功地獨立建成整車模型,并能正常運行。下面就建模過程中存在的問題總結一下:
1.反復修改約束。建模過程中容易出現約束問題了,因為它考慮的因素較多,其中方向最容易出錯。因此,在仿真時若出現關于約束的出錯信息時,建議將約束刪掉重新添加;
2.輪胎的添加。Adams2005版的輪胎和路面的添加最容易出現問題,因為05版的添加界面和2003版有較大差異。首先將輪胎文件mdi_fiala01.tir(注意是.tir,而不是李軍書中的.tpf,因為要添加的是fiala輪胎而不是UA輪胎,在安裝路徑:\MSC.Software\MSC.ADAMS\2005r2\achassis\examples\tir下)和路面文件mdi_2d_flat.rdf(在安裝路徑:\MSC.Software\MSC.ADAMS\2005r2\achassis\examples\rdf下)拷貝到你的工作目錄下。然后在左邊工具欄中點選力元“Special Force:Tire”,填入輪胎質量和轉動慣量(同李軍書),在“Tire Property File”中添加工作目錄下輪胎文件的工作路徑(注意路徑中不能有漢字),然后在Location后輸入添加輪胎所在懸架處的Maker點坐標,如(-1335.0, 375.0, 825.0),最后在Road空欄處點擊右建,選擇“vpg_road/create”進入路面添加界面。
3.路面的添加。在此界面,“Part”選擇Ground,“Property File”后添加工作目錄中路面文件的路徑(路徑中不能有漢字),在“Location”中填寫(0,0,0)坐標,但若沒有修改輪胎文件中的輪胎半徑,添加成功后,車輪和路面之間存在一定距離,因此我把此坐標改為(0.0, 85.0, 0.0),具體多少根據個人輪胎半徑大小而異。最后Eular Angle為(0.0, 270.0, 0.0),如果改為(0.0,0.0,0.0)就是將路面反轉,仿真時小車會掉下來(請在仿真時及時修改)。逐次點擊OK后輪胎和路面就建立成功了。當然你可以根據個人情況修改輪胎和路面文件的具體參數,這里就不太細述。
4.輪胎和車體之間的約束。這個問題在李軍的書中沒有提到,但若不添加約束,會導致仿真開始時輪胎和車身脫離。常用方法是在車輪和懸架之間添加旋轉副(Revolute Joint),選擇“1 location”和“Normal To Grid”,注意要保證旋轉副的旋轉方向和車輪轉動方向一致。
5.輪胎旋轉力矩的添加。為了能使小車動起來,需要在兩后輪胎上添加力矩。具體方法是:首先點選工具箱中的力元Torque Force,再選擇輪胎為主動物體,Left_RCA為受動物體(以左后輪胎為例),接下來選擇Right_RCA_MARKER_89為主動點,Ground_Left_RCA_outer為受動點。(總之,要保證部件要一個選Tire,一個選RCA,Marker點一個選Ground上的點,一個選RCA上的點,道理很簡單:把力矩添加在同一部件上是起不到作用的。)
6.最后在仿真之前,最好修改一下誤差才能保證仿真順利進行:Settings/Solver/Dynamics/將Error改為0.1或更高。
7.這些都是經驗之談,如有錯誤之處還請多多見諒,還有問題請在后面留言。歡迎網友補充。
ADAMS/View 和ADAMS/Car的基礎操作和心得
1、如何永久改變ADAMS的啟動路徑?
在ADAMS啟動后,每次更改路徑很費時,我們習慣將自己的文件存在某一文件夾下;事實上,在Adams的快捷方式上右擊鼠標,選屬性,再在起始位置上輸入你想要得路徑就可以了。
2、如何將回放過程保存為AVI格式的電影文件,以便在其他場合使用?
點擊plotting(或F8)進入postprocessor ,右鍵--load ANIMATION,點擊"play"開始仿真,點擊"record"開始錄制動畫。
3、a/car Template Builder.為什么我看不見這個菜單選項??
答:需要改一下的!在你的系統盤下去面。例如我的C:\Documents and Settings\rickytang(rickytang為我的用戶名)下面有一個.acar文件,用記事本打開,然后將
! Desired user mode (standard/expert)
ENVIRONMENT MDI_ACAR_USERMODE standard
改為:! Desired user mode (standard/expert)
ENVIRONMENT MDI_ACAR_USERMODE expert
再啟動car就可以看見選項了!
進入car后按F9或者在tools下面選第一項就可以在模板與標準界面之間切換!
4、關于communicator
communicator的出現是由于car是分塊建模(子系統)為基礎,而communicator告訴ADAMS軟件子系統之間如何連接,所以communicator的名字要完全一樣才行,而且對于某一特定的子系統而言,有多少與外部系統、testrig的連接就需要有多少個communicator。
suspension parameter代表懸架特性反映,可參考公用模板中_trailing_arm.tpl和_multi_link.tpl。communicator表示數據傳遞的。縱臂、螺旋彈簧、減震器有一端是外部連接,需要建立mount,然后會自動產生輸入communicator.
輸出communicator一般有以下8個:(它主要是把數據傳遞給輪胎的)
co[lr]_camber_angle
co[lr]_suspension_mount
co[lr]_suspension_upright
co[lr]_toe_angle
co[lr]_tripot_to_differential
co[lr]_wheel_center
cos_driveline_active
cos_suspension_parameters_ARRAY
可參考公用模板中的懸架模型來建立。
5、test-rig是做什么用的??
CAR中共有兩種試驗臺(TEST_RIG),一種是MDI_SUSPENSION_TESTRIG,另一種是MDI_SDI_TESTRIG,前者用于懸架仿真,后者用于整車仿真,試驗臺是通過COMMUNICATOR與其它子系統鏈接的,請仔細閱讀有關COMMUNICATOR的幫助。
6、ADAMS和MATLAB聯合仿真經驗談
論壇中有關adams和simulink聯合仿真的帖子不少,部分是成功者的經驗,多數是初學者的疑惑。怎么安裝和找到control模塊,怎么在control中生成必需的中間文件,為什么仿真會失敗?本人也曾對這些問題困惑過,經過一番摸索,積累了一點經驗,愿與大家商討。
對于第一個問題,control是adams的一個可以選擇是否加載的模塊,可通過tools下拉菜單中的plugin選擇是否顯示在菜單欄中我想就不必多說了。對于第二個問題可以參考鄭建榮的ADAMS虛擬樣機技術入門與提高第十三章機電一體化系統仿真部分,書中有兩個問題需要注意:(1)書中介紹的ADAMS版本好像是10.0的,對于使用12.0的有一些差異:在Plant Export設置中無法直接選擇輸入輸出變量control_torque、azimuth_position、rotor_velocity,它們分別由專門的宏tmp_MDI_PINPUT和tmp_MDI_POUTPUT表示。(2)天線仰角的方位角似乎應該是elevation_position,而不是azimuth_position,后者是天線支撐的轉角。其它按文中所述步驟進行,File Prefix欄可隨便寫,不必一定用ant_test,最后在ADAMS的當前目錄下生成四個文件:
ant_test.cmd
ant_test.adm
ant_test.acf
ant_test.m
第三個問題基本上是由于沒有正確設置路徑,找不到所需的文件造成的,這也說明了control模塊在設計時沒有很好地考慮健壯性問題。具體來說simulink在開始仿真時要找到以下這些文件:
1、上述生成的文件,主要是ant_test.m和ant_test.cmd,ant_test.m用于在simulink中對control模塊環境和一些參數進行初始化,它必須在仿真前執行;ant_test.cmd是天線模型定義文件,由于這里ADAMS是作為simulink創建的一個子進程而被啟動的,它所需的模型文件名由simulink的調用參數傳過來的,所以simulink要能夠定位ant_test.cmd(我一開始把它放到adams當前目錄下,頻頻失敗)。
2、adams_plant.dll,它其實就是adams_sub的核心,ADAMS提供一個S函數,用于adams和simulink聯合仿真的調度和通訊,如果simulink找不到它,則仿真就不能進行。adams_plant.dll位于\ADAMS12\controls下。
解決方法是在simulink中設置好上述文件所在的路徑,但一個更方便的方法是把它們都拷到matlab的當前工作目錄下,一般是\MATLAB6p1\work。經過以上設置,應該不會再出現仿真失敗的對話框了吧。另外,如果因為一些原因仿真失敗,需重啟matlab,否則的話因為一些運行庫的錯誤信息還保留在系統中,即便改正了錯誤仿真也會失敗,只有重新啟動初始化這些庫。
我用的是adams12和matlab6.1,以前流傳它們之間存在不兼容的問題,其實都是上述原因造成的,不存在版本兼容的問題,adams和matlab都是成功的商業軟件,在發布前經過了大量的測試,如果不兼容他們不會置若罔聞,現在好像還沒有他們的官方聲明吧。
確實,大部分的失敗是由于沒有正確設置工作路徑而造成的,我想既然是針對一個項目進行仿真,那干脆為自己的項目建立一個文件夾,使ADAMS和MATLAB的工作區都相同,如發現有時仿真不成,可把adams_plant.dll也事先拷貝到同一文件夾里,這樣方便又不會出大錯。
另外,對于還不大熟悉MATLAB的來說,在重仿時最好重ADAMS里重新導入MATLAB,并且必須在MATLAB里重新運行(很多時候MATLAB原來產生的變量被替換了),而不能只是簡單的重新運行MATLAAB里建立
的SIMULINK模型。
總的來說,我感覺兩者的聯合仿真,困難之處不在于兩者的接口問題,更關鍵的是我們所建立的機械系統的數學模型能否正確的建立,這將直接影響我們能否實現預想的控制目的,因為之所以要聯合MATLAB,就是因為系統里各個量關系不好確定,要是容易確定的直接用ADAMS 里的函數等也可以控制了,對吧?所以要想更順利的實現兩者聯合仿真的成功率,也需要對模型有準確的把握,不知道各位能否就機械方面較常見的系統歸納一下它們的數學模型,結合ADAMS實現更好的控制。
7、關于轉動問題,如何判斷轉動副的方向?
初學時,對轉動副的運動容易糊涂,下面以圖說明。
圖1,構件4固定在地面上,在構件1和構件2上加了一個轉動副。
1)
轉動副中構件繞軸轉動的方向,符合右手法則,其中First body 繞Second body 轉動;
2)
圖一中,構件1為first body,構件2為Second Body,則構件1相對于構件2逆時針轉動,圖2為轉動后某時刻的圖像;
3)
若修改轉動副,構件2為first body,構件1為Second Body,則構件2相對于構件1逆時針轉動,圖3為轉動后某時刻的圖像,與2)恰相反;
4)
有趣的是,假設轉動副加在構件1與4上,構件4為first body,構件1為Second Body,則構件4應該相對于構件1逆時針轉動,但由于構件4固定在地面上,無法運動,由相對運動可知,此時運動等價于構件1相對于構件4順時針轉動,事實如此,圖4為轉動后某時刻的圖像。
8、關于路普
路譜是高度保密的東西,我們可以找一個已經有的輪胎特性文件,*.tpf文件,然后在稍微修改一下,
安裝目錄下 12.0\solver\tire_dat 里有輪胎文件。
9、運動學仿真后,如何測量驅動力矩或者其他的物理量?
我們在做機器人運動規劃時,往往根據規劃給出各個關節的運動軌跡,進行運動學分析,如果要查看實現該運動各個關節需要加的驅動力矩,可以右鍵單擊相應的motion,然后在下拉菜單選擇measure,在出現的界面里面選擇Torque,點ok就出來力矩曲線了,其他物理量類同。
10、Marker點與Pointer點區別
Marker:具有方向性,
大部分情況都是伴隨物件自動產生的,而 Point不具有方向性,
都是用戶自己建立的;Marker點可以用來定義構件的幾何形狀和方向,定義約束與運動的方向等,而Point點常用來作為參數化的參考點,若構件與參考點相連,當修改參考點的位置時,其所關聯的物體也會一起移動或改變。
11、如何在ADAMS下由數據生成樣條曲線?
在tools->command navigator....->Data element->create->spring line 后,會出現一個輸入window窗口,選擇numerical將xyz數值copy到xyz各自的表格上.......
12、對ADAMS/CONTROLS的總結:
1)
應用ADAMS/VIEW建立被控系統的ADAMS模型;
2)
對建立好的模型增加主動力;
3)
在模型中增加輸入和輸出狀態變量,即輸入函數;(現在這一部分還是不懂)
4)
在ADAMS/VIEW中通過tool/plug in項將ADAMS/CONTROLS控制模塊LOAD;
5)
在controls項對plant export進行設置;
6)
點擊ok即可在目錄上生成控制仿真所需的文件;
7)
啟動MATLAB,將路徑設為adams所生成的文件所在目錄上;
8)
在matlab的命令窗口輸入生成的adams模型生成的m文件名稱,將此m文件調進當前工作空間中;
9)
在MATLAB的命令窗口輸入adams_sys,將生成adams模型的simulink仿真模型;
10)
建立控制系統得simulink模型;
11)
這樣就可以對系統進行仿真;
12)
在matlab繪制仿真曲線;
13、ADAMS/VIEW中輸入、輸出狀態變量的設定方法:
1)
在build/system elements/state variable/new建立系統的狀態變量,其函數根據函數編輯器進行編輯,不同類型的變量選擇不同的表達式。
14、
ADAMS/VIEW中的輸入函數的指定方法:輸入函數是指從輸入狀態變量取值的時間函數。 只需在所建立的模型中在需要進行控制的部件施加一定的力或力矩,然后對其進行函數化:其函數的自變量為所指定的輸入狀態變量。這樣所建立的模型就是受輸入控制的系統。
15、
在設計輸入函數時,當輸入函數表達的為力,而其自變量為其它的量,則通過指定adams函數來定義這一輸入量。
16、
現在還有兩個問題沒有解決:力與運動是什么關系,在ADAMS------MATLAB/SIMULINK仿真過程中需要設定的參數:PLANT EXPORT及SIMULINK仿真模塊的ADAMS--SUB參數。
17、力與驅動的關系:驅動包括直線驅動和旋轉驅動,他們配合約束副使用。驅動就是指使所定義的約束副的運動按照所設定的驅動方程運動;而力指在模型中某一構件上所施加的力,其運動方向及速度要根據力的函數決定。如,在建立汽車模型時,地面的垂直不平度可以取為上下運動的驅動;而驅動輪的轉動通常要通過輸入其的力矩定義。在進行ADAMS-SIMULINK聯合仿真時,需要將通過simulink控制模塊決定的運動構件的驅動去掉,增加一力或力矩,其為系統設定的輸入狀態變量的函數。
18、
增加驅動就已經知道構件的運動形式,而增加力則不能具體確定構建的運動形式。
19、可以設定所研究車輛的輪胎模型(編制輪胎模型文件及道路輸入文件),參考e/安裝文件/adams幫助文檔/tire
20、Car模塊中的標準用戶和超級用戶間的差別:
Expert user 可以建立和修改模版,適于有經驗的高級用戶
Standard user只是用于設計人員和檢測人員,要進行仿真必須在這個環境下進行。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















