技術(shù)分享 | 使用TSMaster從零打造車(chē)輛控制器HIL實(shí)時(shí)仿真系列2-ECU嵌入式代碼生成與TSMaster小程序集成
今天繼續分享使用TSMaster從零打造車(chē)輛控制器HIL實(shí)時(shí)仿真系列第二章節。接下來(lái)我們親手設計實(shí)時(shí)仿真也就是HIL的環(huán)節,為了讓示例通俗易懂,我們選取了CARSIM自帶的ABS控制器作為仿真的對象。
一、Simulink模型
1、我們打開(kāi)CARSIM,然后選擇Simulink模型,對開(kāi)路面Multi-port SLX,這個(gè)示例使用的是一輛不帶ABS系統的小轎車(chē),它是前驅的配置。
2、我們來(lái)看procedure,也就是駕駛員控制的部分,初始的速度是65公里每小時(shí),自動(dòng)壓力是15兆帕,在0.3秒內完成也就是我們常說(shuō)的150bar,檔位控制是在合理的范圍內自動(dòng)切換,而轉向部分則交給駕駛員模型進(jìn)行閉環(huán)控制。
3、路面部分為對開(kāi)路面,從3米開(kāi)始,一側的系數是0.2,另外一側是0.5,回到主頁(yè),點(diǎn)擊Send to Simulink,等待Simulink啟動(dòng)完畢,Simulink模型則是今天的重點(diǎn)。
二、ABS控制算法
1、我們可以將這個(gè)控制算法生成嵌入式代碼,下載到帶ABS功能的ECU中運行,可以看到這個(gè)算法模型包含了一個(gè)CARSIM的S function作為車(chē)輛模型的接口,還有一個(gè)簡(jiǎn)化版本的基于漂移率的輪缸壓力控制策略以及后軸低選策略,還有制動(dòng)性模型中的制動(dòng)力分配等等。
2、我們運行下這個(gè)模型,可以看到,這個(gè)輪速與車(chē)速的圖形窗口中繪制了在對開(kāi)路面上的ABS自動(dòng)循環(huán),而這個(gè)輪缸壓力窗口中,則是四個(gè)車(chē)輪的輪缸壓力控制曲線(xiàn),這是一個(gè)簡(jiǎn)易版本的控制算法。制動(dòng)力分配,也就是前軸壓力比上后軸壓力是1比0.4,很容易判斷出,制動(dòng)結束后,壓力上升到15兆帕的兩個(gè)車(chē)輪為前輪壓力,而壓力上升到6兆帕的是后輪壓力。
三、RT的低成本替代方案
大家可能注意到在Simulink環(huán)境中,運行的時(shí)間是10秒,然而點(diǎn)擊運行后實(shí)際上只用了很短的時(shí)間就跑完了整個(gè)仿真,說(shuō)明此仿真的過(guò)程并不是實(shí)時(shí)的。Simulink所起的作用僅僅是按照每個(gè)step來(lái)執行算法,收集每個(gè)step產(chǎn)出的數據并將其繪制在圖形窗口里而已。
如果我們想在A(yíng)BS制動(dòng)過(guò)程中像整車(chē)總線(xiàn)上面實(shí)時(shí)發(fā)送ABS激活的flag或者是輪缸壓力值,這些都是無(wú)法做到的。而在擁有的CarSim RT版本的環(huán)境中,該模型可以被編譯為dll,下載到實(shí)時(shí)系統中運行,從而實(shí)現模型算法與真實(shí)世界的交互,這個(gè)解決方案是目前被廣泛采納的仿真模式。各大主機廠(chǎng)和零部件廠(chǎng)所依賴(lài)的HIL仿真也是基于此方案展開(kāi)。然而此方案存在兩個(gè)問(wèn)題:一是成本高,不但需要車(chē)輛動(dòng)力學(xué)軟件本身的license,還需要RT的license;二是部署的過(guò)程很浪費時(shí)間,在CarSim中修改參數之后需要重新部署,自動(dòng)和程度不高。
而在本例中,我們通過(guò)TSMaster來(lái)模擬ABS算法,讓ABS算法在TSMaster的實(shí)時(shí)環(huán)境中運行,運行過(guò)程中可以通過(guò)CAN接口或者是連接在個(gè)人電腦上的IO接口等等,與外部的世界進(jìn)行交互,再通過(guò)自研的實(shí)時(shí)引擎接管CarSim的仿真過(guò)程實(shí)現車(chē)輛模型在電腦上的實(shí)時(shí)運行,如此我們便得到了RT的低成本替代方案——軟件HIL。
四、ECU嵌入式代碼&小程序
下面我們從零一步步基于TSMaster來(lái)搭建ABS算法的實(shí)時(shí)仿真環(huán)境。第一步是要通過(guò)Simulink將ABS的算法自動(dòng)生成嵌入式代碼,將它作為一個(gè)小程序運行在TSMaster的實(shí)時(shí)環(huán)境中。
1、我們首先將這個(gè)模型另存,然后需要修改路徑,讓代碼的生成放置在這個(gè)新的路徑中。
2、隨后我們需要在模型上做一些修改讓其可以生成嵌入式代碼。首先就需要刪除示波器等等一系列無(wú)用的控件,再刪除CarSim的s function,將s function的接口轉化為in 和 out。
3、為了正確的生成嵌入式代碼,還需要在代碼生成上做一番修改,打開(kāi)配置,首先是stop time,設置為inf,然后是salvar,再次使用的是定步長(cháng),step我們使用了業(yè)界通用的5毫秒。
4、接下來(lái)來(lái)到代碼生成的環(huán)節,Target file自然是ert,我們還需要轉到interface,在這里將continuous time勾上,因為輪缸壓力模型中間用到的是傳遞函數,是連續狀態(tài),隨后按Ctrl+B生成代碼,很快代碼就生成完畢了。
5、那么在這份代碼中,我們需要將ABS.c.h以及一些列的其他的頭文件復制粘貼到TSMaster的小程序的文件夾中間參與編譯過(guò)程。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。