博客專欄

        EEPW首頁 > 博客 > 技術(shù)分享 | 使用TSMaster從零打造車輛控制器HIL實時仿真系列2-ECU嵌入式代碼生成與TSMaster小程序集成

        技術(shù)分享 | 使用TSMaster從零打造車輛控制器HIL實時仿真系列2-ECU嵌入式代碼生成與TSMaster小程序集成

        發(fā)布人:汽車電子工程師 時間:2022-11-15 來源:工程師 發(fā)布文章

        今天繼續(xù)分享使用TSMaster從零打造車輛控制器HIL實時仿真系列第二章節(jié)。接下來我們親手設(shè)計實時仿真也就是HIL的環(huán)節(jié),為了讓示例通俗易懂,我們選取了CARSIM自帶的ABS控制器作為仿真的對象。


        一、Simulink模型

        1、我們打開CARSIM,然后選擇Simulink模型,對開路面Multi-port SLX,這個示例使用的是一輛不帶ABS系統(tǒng)的小轎車,它是前驅(qū)的配置。

        圖2.jpg2、我們來看procedure,也就是駕駛員控制的部分,初始的速度是65公里每小時,自動壓力是15兆帕,在0.3秒內(nèi)完成也就是我們常說的150bar,檔位控制是在合理的范圍內(nèi)自動切換,而轉(zhuǎn)向部分則交給駕駛員模型進行閉環(huán)控制。

        圖3.jpg3、路面部分為對開路面,從3米開始,一側(cè)的系數(shù)是0.2,另外一側(cè)是0.5,回到主頁,點擊Send to Simulink,等待Simulink啟動完畢,Simulink模型則是今天的重點。

        圖4.jpg

        二、ABS控制算法

        1、我們可以將這個控制算法生成嵌入式代碼,下載到帶ABS功能的ECU中運行,可以看到這個算法模型包含了一個CARSIM的S function作為車輛模型的接口,還有一個簡化版本的基于漂移率的輪缸壓力控制策略以及后軸低選策略,還有制動性模型中的制動力分配等等。

        圖5.jpg2、我們運行下這個模型,可以看到,這個輪速與車速的圖形窗口中繪制了在對開路面上的ABS自動循環(huán),而這個輪缸壓力窗口中,則是四個車輪的輪缸壓力控制曲線,這是一個簡易版本的控制算法。制動力分配,也就是前軸壓力比上后軸壓力是1比0.4,很容易判斷出,制動結(jié)束后,壓力上升到15兆帕的兩個車輪為前輪壓力,而壓力上升到6兆帕的是后輪壓力。

        圖6.jpg

        三、RT的低成本替代方案

        大家可能注意到在Simulink環(huán)境中,運行的時間是10秒,然而點擊運行后實際上只用了很短的時間就跑完了整個仿真,說明此仿真的過程并不是實時的。Simulink所起的作用僅僅是按照每個step來執(zhí)行算法,收集每個step產(chǎn)出的數(shù)據(jù)并將其繪制在圖形窗口里而已。


        如果我們想在ABS制動過程中像整車總線上面實時發(fā)送ABS激活的flag或者是輪缸壓力值,這些都是無法做到的。而在擁有的CarSim RT版本的環(huán)境中,該模型可以被編譯為dll,下載到實時系統(tǒng)中運行,從而實現(xiàn)模型算法與真實世界的交互,這個解決方案是目前被廣泛采納的仿真模式。各大主機廠和零部件廠所依賴的HIL仿真也是基于此方案展開。然而此方案存在兩個問題:一是成本高,不但需要車輛動力學(xué)軟件本身的license,還需要RT的license;二是部署的過程很浪費時間,在CarSim中修改參數(shù)之后需要重新部署,自動和程度不高。


        而在本例中,我們通過TSMaster來模擬ABS算法,讓ABS算法在TSMaster的實時環(huán)境中運行,運行過程中可以通過CAN接口或者是連接在個人電腦上的IO接口等等,與外部的世界進行交互,再通過自研的實時引擎接管CarSim的仿真過程實現(xiàn)車輛模型在電腦上的實時運行,如此我們便得到了RT的低成本替代方案——軟件HIL。


        圖7.jpg四、ECU嵌入式代碼&小程序


        下面我們從零一步步基于TSMaster來搭建ABS算法的實時仿真環(huán)境。第一步是要通過Simulink將ABS的算法自動生成嵌入式代碼,將它作為一個小程序運行在TSMaster的實時環(huán)境中。


        1、我們首先將這個模型另存,然后需要修改路徑,讓代碼的生成放置在這個新的路徑中。


        圖8.jpg2、隨后我們需要在模型上做一些修改讓其可以生成嵌入式代碼。首先就需要刪除示波器等等一系列無用的控件,再刪除CarSim的s function,將s function的接口轉(zhuǎn)化為in 和 out。

        圖9.jpg3、為了正確的生成嵌入式代碼,還需要在代碼生成上做一番修改,打開配置,首先是stop time,設(shè)置為inf,然后是salvar,再次使用的是定步長,step我們使用了業(yè)界通用的5毫秒。

        圖10.jpg4、接下來來到代碼生成的環(huán)節(jié),Target file自然是ert,我們還需要轉(zhuǎn)到interface,在這里將continuous time勾上,因為輪缸壓力模型中間用到的是傳遞函數(shù),是連續(xù)狀態(tài),隨后按Ctrl+B生成代碼,很快代碼就生成完畢了。

        圖11.jpg5、那么在這份代碼中,我們需要將ABS.c.h以及一些列的其他的頭文件復(fù)制粘貼到TSMaster的小程序的文件夾中間參與編譯過程。




        *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。




        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 清涧县| 海城市| 乳山市| 雅江县| 蓬溪县| 长乐市| 水富县| 淮南市| 上饶县| 台山市| 华容县| 古丈县| 竹山县| 荣成市| 肇东市| 南投县| 白朗县| 宜阳县| 罗江县| 宜昌市| 凌海市| 垫江县| 无锡市| 昌吉市| 邵阳市| 平安县| 即墨市| 西宁市| 苍南县| 耿马| 余干县| 皋兰县| 图们市| 夏津县| 宣威市| 凤山市| 新源县| 元江| 务川| 湟源县| 若尔盖县|