本來還想繼續把MBD有關程式碼生成的開發的細節再講講,後來我的“產品經理”炸了,開始催更物理模型的文章了,那就先來說說物理模型的話題,後面再去補全程式碼生成的部分。

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

那首先來說說為什麼要建立物理模型,物理模型一方面可以快速建立被控物件的模型,去支援演算法和功能的模擬。另一方面物理模型也可以用來支援Mil / Hil測試,對於真實刷寫到XCU中的演算法程式碼進行驗證。 本文先從0D/1D的系統模擬的層面介紹物理模型的搭建。

首先從系統層面來看,車輛系統級別的需求是整車需要有正常行駛的功能,分解到下一個級別的需求就是,車需要有電機,發動機,電池,變速箱等部件去使車輛能夠執行起來。所以整車動力系統級別的物理模型的架構基本就搭建出來了。如下圖所示,此處做個說明,圖中所示的並未顯示出feedback的訊號,具體的架構以後續的具體模型為準。

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

本文所使用的是Simscape的工具箱,有人可能會問對於系統級別的模擬來說,用Excel表格或者簡單的公式列出用simulink搭建不就可以了,為什麼還要使用工具箱?首先從時間成本上考慮,汽車縱向動力學的基本公式simscape已經封裝在了模型中,直接使用能夠省去simulink搭建模型和除錯的時間,更為重要的方面來說,對於動力系統開發和模擬,後續對於精度更高的功能更全的物理模型,可能還需要熱模擬和液壓以及電力電子的模擬。目前來說Mathworks的工具箱中已經有這些方面的工具可以使用諸如 Simdriveline, SimFlulid, SimElectrical以及Thermal的模組,在做聯合模擬的時候可以得到更為精確的模擬模型,也使得模擬的精度更高。

這個系列的第一篇文章主要就是實現汽車動起來的功能,為了方便闡述,接下來選擇使用單動力源去驅動車輛的最簡單的模型來做一個說明。也算是Simscape的一個基礎的講解。

首先我們以matlab2018b為例在Simscape的庫中找到Tires & Vehicle

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

如上圖所示,建立車輛與輪胎的模型,這裡使用的是魔術輪胎和車輛模型的連線。在輪胎模型中可以設定輪胎相關的引數,實際工程中最實用的除了設定輪胎的半徑之外,最重要的就是滑阻的設定,一般來說在系統模擬階段都會有對標車型的滑阻資料,輸入後就可以進行動力性模擬。

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

引數的具體說明,在help文件中做了很清楚的介紹。這樣透過實驗所得的滑阻曲線進行模擬會比傳統的阻力建模的模型更加精確。

說完引數再來介紹下具體的連線,A埠是機械連線的輸入所以連線port_A,在完整的車輛模型中A的外層連線的就是差速器或者減速器。A端連線後與車輛模型的NR或者NF相連,NR和NF分別表示的是前驅或者後驅的模式,如果是四輪驅動那麼可以在這裡再新增兩個輪胎連線到NF端,做一個四驅模擬的模型。H端就是起到一個車橋的作用,兩輪連線後同時連線到車輛的H端。S埠可以用來測量車輛運動後輪胎的滑移率,從而來判斷輪胎是否出現打滑的現象。

說完車輪,再來說整車部分。在整車部分Simscape就提出了一個整車模型,

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

在模型中可以輸入圖中所示的引數,引數越準確越能夠在模擬結果中看到更加準確的經濟型和動力性的資料。通常在工程上表格中的資料可以用引數定義,然後在M指令碼中進行具體數值的定義。舉個例子,這樣的好處是可以實現多個不同車輛的自動化模擬,對於模擬或者系統工程師來說省事很多,不需要每模擬一個車型就要開啟模型進行一個引數設定。

這個封裝模型的具體方程在help文件中也有具體的解釋和推導,對工程師來說工具用起來都是簡單的,但是具體引數為什麼要這麼設定,還是要從源頭上進行思考的。

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

上面介紹的時候已經提到輪胎模型中設定了具體的滑阻,所以風速在這裡可以設定為0,道路的坡度在正常動力性模擬中可以設定為0,如果後期在做爬坡度模擬的時候可以在這裡進行設定。

這樣我們的整車和輪胎模型已經搭建完成。這時候可能有人會提出問題,simulink和simscape怎麼進行互動,其實在模型裡面已經出現了這個模組,

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

2018b中這個模組已經被改的很小了不是很起眼,

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

圖示“PS-S”,PS表示的是物理模型,s代表simulink。PS-S自然是物理模型轉換到simulink進行輸出,如果是S-PS則表示的是simulink訊號轉換到物理模型進行輸入。在上圖所示中很重要的一點就是物理量意義的轉換,無論是S-PS 還是PS-S都需要進行物理意義也就是單位的設定,這樣在模擬的時候才不會出錯。

接下來要介紹的就是下圖所示的ideal torque source的部分,

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

在這個模組的上方,我也同時列出了ideal angular velocity source的模組。這兩個模組都可以用來簡單的表示一個動力源,從名稱上也很容易看出,torque source表示的是對系統進行扭矩的輸入,而angular source則是輸入的轉速。對於整車模擬來說通常邏輯部分是駕駛員有踏板輸入轉換到動力源的扭矩輸出,所以在整車的模擬中通常使用torque source作為動力源的輸入,這樣將這個模組暫時替代掉port A作為系統輸入。這時候如果進行模擬很容易出現如下的報錯,

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

在整個模型中,還忽略掉了最重要的一點,需要進行求解器的配置,simscape模組有自己的求解器,新增過後如下圖所示。

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

對於Simscape模組,可以獨立於simulink的模擬模組獨立設定自己的模擬求解器。這樣就完成了整車部分的物理模組的建模。這時候就可以點選RUN看一下模擬結果,

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

模擬結果表明,我們在給了100Nm的輸入後系統是可以給出位移和車輛速度的輸出,證明整車模型的建模沒有問題。在下一篇文章中,我們新增完整的動力源和變速箱後就可以完成整車模型的建模了。

部分圖片來自於Mathworks官網如有侵權請和本文作者聯絡,文中難免有疏忽的地方,歡迎大家交流指正。

從0開始建立車輛模擬模型 – 車輛和輪胎模型的建立

同時歡迎大家關注我的公眾號:踱步在六月十七大街

如有問題也可以和我本人聯絡,歡迎大家一起交流。