基于dSPACE 的嵌入式車輛動(dòng)力學(xué)仿真平臺(tái)開發(fā)的探究論文
1 嵌入式車輛動(dòng)力學(xué)仿真平臺(tái)介紹
國際上,嵌入式車輛動(dòng)力學(xué)仿真平臺(tái)主要有CarSim、veDYNA 和ASM。CarSim 是美國MSC 公司開發(fā)的車輛動(dòng)力學(xué)仿真平臺(tái),CarSim 模型在計(jì)算機(jī)上運(yùn)行的速度比實(shí)時(shí)快3~6 倍,可以仿真車輛對(duì)駕駛員、路面及空氣動(dòng)力學(xué)輸入的響應(yīng),主要用來預(yù)測(cè)和仿真汽車整車的操縱穩(wěn)定性、制動(dòng)性、平順性、動(dòng)力性和經(jīng)濟(jì)性,其中的CarSim RT 模塊是CarSim模型專用于嵌入式實(shí)時(shí)仿真的模塊,可嵌入多種實(shí)時(shí)仿真系統(tǒng),如NI、dSPACE、ETAS、opal-RT 等實(shí)時(shí)仿真系統(tǒng),提供與一些實(shí)時(shí)硬件系統(tǒng)的接口,滿足軟硬件在環(huán)仿真平臺(tái)的要求。veDYNA 是德國Te?sis 公司開發(fā)的車輛動(dòng)力學(xué)仿真平臺(tái),以Matlab/Simulink 為開發(fā)環(huán)境,整個(gè)模型或模型組件通過C代碼編寫,并以s-function 形式嵌入到Matlab/Simu?link 程序環(huán)境中,主要用于汽車性能分析,車輛動(dòng)力學(xué)、部件控制單元測(cè)試,控制算法開發(fā)與測(cè)試,可嵌入各種實(shí)時(shí)仿真系統(tǒng)(ADI、ETAS、NI、Opal-RT和xPC)。ASM 是dSPACE 公司基于Simuik 開發(fā)的車輛動(dòng)力學(xué)仿真平臺(tái),主要應(yīng)用于發(fā)動(dòng)機(jī)控制系統(tǒng)、汽車控制系統(tǒng)、車載電子設(shè)備和駕駛輔助系統(tǒng)的測(cè)試和研發(fā),ASM 能夠很好地運(yùn)行在dSPACE 實(shí)時(shí)仿真系統(tǒng)。
國外已經(jīng)實(shí)現(xiàn)了車輛動(dòng)力學(xué)模型嵌入到實(shí)時(shí)硬件系統(tǒng)中,目前國內(nèi)文獻(xiàn)對(duì)此還沒有論述。吉林大學(xué)汽車仿真與控制國家重點(diǎn)實(shí)驗(yàn)室經(jīng)過10多年的研究,研發(fā)了基于總成特性的實(shí)時(shí)車輛動(dòng)力學(xué)模型(State Key Laboratory of Automotive Simulation and Con?trol,簡(jiǎn)稱ASCL),模型在PC 機(jī)上(主頻3.0G)運(yùn)行速度是仿真時(shí)間的5 倍左右,滿足了實(shí)時(shí)仿真要求。經(jīng)仿真驗(yàn)證,精度到90 %以上,并且可實(shí)現(xiàn)制動(dòng)到0、大滑移等極限工況的仿真,可用于電子系統(tǒng)的仿真驗(yàn)證。
針對(duì)上述問題,本文研究了基于ASCL 車輛動(dòng)力學(xué)模型嵌入到dSPACE 環(huán)境時(shí)的一些關(guān)鍵技術(shù);研究了dSPACE 環(huán)境下模型的運(yùn)行控制方法,闡述了在嵌入式平臺(tái)模型上的參數(shù)賦值方法,再次開發(fā)了便于應(yīng)用的操作界面;通過典型工況檢驗(yàn)了動(dòng)力學(xué)模型側(cè)向加速度和橫擺角速度的一致性,實(shí)現(xiàn)了車輛動(dòng)力學(xué)嵌入式仿真平臺(tái)的'開發(fā)。
2 dSPACE 環(huán)境下ASCL 運(yùn)行控制方法研究
2.1 目標(biāo)代碼的生成方法
ASCL 基于ANSI C 語言開發(fā),其仿真精度達(dá)90 %,由簧載質(zhì)量系統(tǒng)、非簧載質(zhì)量系統(tǒng)、轉(zhuǎn)向系統(tǒng)、懸架系統(tǒng)、車輪系統(tǒng)、動(dòng)力傳動(dòng)系統(tǒng)和制動(dòng)系統(tǒng)7 大系統(tǒng)構(gòu)成,在開發(fā)過程中將其劃分為7個(gè)大的功能模塊,每個(gè)大的功能模塊下又劃分為很多小的功能模塊,各模塊都獨(dú)立開發(fā)。
dSPACE 實(shí)時(shí)硬件仿真系統(tǒng)采用了GCC 編譯器,同時(shí)又區(qū)別于普通的GCC 編譯器,在PC 機(jī)環(huán)境下,需要在編譯批處理文件時(shí)使用帶有dSPACE 標(biāo)識(shí)的指令x86-gcc,然后調(diào)用指令x86-ar 生成目標(biāo)庫文件。為了提高ASCL 代碼的運(yùn)行效率,在編譯中使用-O2命令進(jìn)行代碼優(yōu)化。
2.2 仿真控制方法
ASCL 仿真過程的控制主要分為初始化和運(yùn)行控制。本文利用DS1006 RTLib 提供的函數(shù)編寫控制程序(ControlFunction.c)以驅(qū)動(dòng)dSPACE 實(shí)時(shí)硬件對(duì)ASCL進(jìn)行仿真控制,利用基于時(shí)鐘D 中斷的初始化控制和基于時(shí)鐘A中斷的仿真運(yùn)行控制。
2.2.1 基于時(shí)鐘D中斷的初始化
ASCL 為用戶提供了Preset、Initialize、Simulate、Terminate 等4 個(gè)函數(shù),其中Preset 函數(shù)主要讀取模型參數(shù)文件,將參數(shù)值賦給模型各大系統(tǒng);Initialize函數(shù)主要實(shí)現(xiàn)車輛初始狀態(tài)的確定即給變量賦初值,實(shí)現(xiàn)初始狀態(tài)的平衡;Simulate 函數(shù)實(shí)現(xiàn)對(duì)各功能模塊進(jìn)行迭代仿真運(yùn)算,計(jì)算模型的輸出;Ter?minate 函數(shù)主要是釋放在仿真過程中Preset 函數(shù)開辟的內(nèi)存。
為了實(shí)現(xiàn)ASCL 的正確運(yùn)行,本文采用時(shí)鐘D 中斷來實(shí)現(xiàn)模型的初始化。首先,利用dSPACE 提供的函數(shù)ds1006_init()完成對(duì)DS1006 板的初始化,用以啟動(dòng)dSPACE;利用函數(shù)ds1006_start_isr_timerD(DTD,timerD_interrupt)開啟時(shí)鐘D中斷,其中該函數(shù)含有時(shí)鐘D 中斷的周期(DTD)與中斷服務(wù)程序(timerD_in?terrupt)兩個(gè)參數(shù),在觸發(fā)時(shí)鐘D 中斷時(shí),在中斷服務(wù)程序中完成ASCL 的初始化和參數(shù)賦值;利用函數(shù)RTLIB_BACKGROUND_SERVICE() 開啟后臺(tái)服務(wù)程序,后臺(tái)服務(wù)程序必須在實(shí)時(shí)硬件上循環(huán)執(zhí)行,這樣才能以一定的周期執(zhí)行時(shí)鐘D 中斷,不斷進(jìn)行仿真控制。
時(shí)鐘D中斷服務(wù)程序以設(shè)定的中斷周期運(yùn)行,當(dāng)參數(shù)文件準(zhǔn)備好時(shí),通過自定義的函數(shù)ncode 和Pre?setState 來判斷,只有當(dāng)函數(shù)ncode=NULL 且Preset?State=0 兩個(gè)條件同時(shí)滿足時(shí),才能利用Preset 函數(shù)將準(zhǔn)備好的參數(shù)文件中的參數(shù)傳遞給車輛動(dòng)力學(xué)模型,然后通過Initialize 函數(shù)使其初始化,初始化成功后關(guān)閉時(shí)鐘D。
2.2.2 基于時(shí)鐘A中斷的仿真控制
當(dāng)模型完成初始化后,啟動(dòng)時(shí)鐘A中斷服務(wù)程序來完成車輛動(dòng)力學(xué)模型的實(shí)時(shí)運(yùn)算。時(shí)鐘A 中斷服務(wù)程序以設(shè)定的周期運(yùn)行,通過控制一個(gè)時(shí)鐘周期推動(dòng)車輛動(dòng)力學(xué)模型運(yùn)算一個(gè)仿真步長(zhǎng)來控制動(dòng)力學(xué)模型的仿真。首先開啟時(shí)鐘A 過載檢測(cè),用于判斷仿真計(jì)算時(shí)長(zhǎng)是否超過中斷周期,當(dāng)中斷服務(wù)程序的執(zhí)行時(shí)間超過中斷周期時(shí),則中斷服務(wù)程序結(jié)束。通過自定義函數(shù)SimState 的值判斷模型仿真狀態(tài),其中,當(dāng)SimState=0 時(shí),表明是停止?fàn)顟B(tài),執(zhí)行動(dòng)力學(xué)模型的中止函數(shù)Terminate;當(dāng)SimState=1 時(shí),表明是暫停狀態(tài),動(dòng)力學(xué)模型暫停;當(dāng)SimState=2 時(shí),表明是運(yùn)行狀態(tài)。同時(shí),通過自定義函數(shù)time_simulate 計(jì)算仿真運(yùn)行時(shí)間,若未達(dá)到仿真結(jié)束時(shí)間,則周期執(zhí)行動(dòng)力學(xué)模型函數(shù)Simulate,實(shí)現(xiàn)模型迭代仿真運(yùn)算;若仿真狀態(tài)到達(dá)設(shè)定的仿真時(shí)間,則執(zhí)行模型中止函數(shù)Terminate,關(guān)閉時(shí)鐘A 中斷。
在進(jìn)行中斷控制設(shè)置時(shí),應(yīng)避免時(shí)鐘A 和時(shí)鐘D同時(shí)處于運(yùn)行狀態(tài),因?yàn)閮烧邇?yōu)先級(jí)相同,所以在時(shí)鐘D 運(yùn)行之前需要先關(guān)閉時(shí)鐘A,同理,在時(shí)鐘A 運(yùn)行之前需要先關(guān)閉時(shí)鐘D,否則只能等待一個(gè)時(shí)鐘周期運(yùn)行完才能執(zhí)行下一個(gè)中斷服務(wù),不利于提高運(yùn)行效率。
2.3 動(dòng)力學(xué)模型下載方法
動(dòng)力學(xué)模型在實(shí)時(shí)仿真系統(tǒng)運(yùn)行時(shí),需要從上位機(jī)下載到實(shí)時(shí)仿真系統(tǒng)。本文利用dSPACE 提供的makefile 文件將開發(fā)的控制程序ControlFunction.c、動(dòng)力學(xué)模型*.a庫文件以及相應(yīng)的頭文件組成一個(gè)統(tǒng)一的整體,其中makefile 文件中需要設(shè)置添加控制程序ControlFunction.c,同時(shí)添加.a 庫文件,庫文件中開放了控制程序ControlFunction.c 調(diào)用的4個(gè)函數(shù),然后在批處理文件中使用dSPACE 提供的“down1006”指令將makefile 文件下載到dSPACE 中,完成動(dòng)力學(xué)模型控制平臺(tái)的開發(fā)。
3 動(dòng)力學(xué)模型的參數(shù)賦值
ASCL 中的preset 函數(shù)可以通過解析一個(gè)參數(shù)文件來給模型參數(shù)賦值,在dSPCE 實(shí)時(shí)仿真系統(tǒng)環(huán)境下,需要將參數(shù)文件下載到dSPCE,并將參數(shù)文件的存儲(chǔ)首地址傳遞給解析函數(shù)。本文CLIB 函數(shù)實(shí)現(xiàn)參數(shù)的傳遞過程,定義了指針變量ParFile 來傳遞地址,當(dāng)ASCL 在dSPACE 環(huán)境下運(yùn)行時(shí),首先將在PC 機(jī)內(nèi)存中的參數(shù)文件復(fù)制到dSPACE 內(nèi)存中,然后將參數(shù)文件在dSPACE 內(nèi)存的首地址傳遞給preset 函數(shù)中的ParFile 變量,完成動(dòng)力學(xué)模型的參數(shù)賦值。
CLIB 是實(shí)時(shí)硬件dSPACE 提供的一套PC 機(jī)與dSPACE 實(shí)時(shí)處理器通訊的接口函數(shù)集,CLIB 建立了PC機(jī)與dSPACE處理器內(nèi)存之間的通信。本次采用CLIB 提供的函數(shù)對(duì)dSPACE 內(nèi)存進(jìn)行訪問。
dS1006 板卡處理包括利用函數(shù)DS_regis?ter_host_app 注冊(cè)應(yīng)用程序、DS_board_index 獲得板卡號(hào),從而將參數(shù)文件傳遞到該板內(nèi)存;參數(shù)文件在PC 機(jī)上的處理包括獲取參數(shù)大小、在PC 機(jī)上分配內(nèi)存、將參數(shù)文件傳遞到分配的內(nèi)存上;參數(shù)文件在dSPACE 上的處理包括利用函數(shù)DS_alloc_mem 在dSPACE 上開辟內(nèi)存、DS_write_8 函數(shù)將PC 機(jī)內(nèi)存上的參數(shù)文件寫入到dSPACE 的內(nèi)存上、DS_get_var_addr 獲取模型中存儲(chǔ)參數(shù)文件首地址的指針變量、把dSPACE 內(nèi)存中參數(shù)文件首地址賦值給指針變量。
4 仿真控制平臺(tái)界面設(shè)計(jì)
為了方便測(cè)試和工程應(yīng)用,開發(fā)了仿真平臺(tái)界面控制模型的下載、監(jiān)控和仿真控制,界面編寫采用了LabWindows 語言。LabWindows/CVI 軟件是在C 語言環(huán)境下開發(fā)的軟件界面,可以通過LabWindows 對(duì)CLIB庫函數(shù)的調(diào)用,完成仿真平臺(tái)界面開發(fā)。
仿真平臺(tái)界面主要包括輸入、輸出設(shè)置和運(yùn)行狀態(tài)控制3 部分,其中,模型輸入設(shè)置主要完成動(dòng)力學(xué)模型的下載和參數(shù)賦值控制,該部分中首先通過路徑瀏覽完成mkfile 文件的選擇,下載mkfile 文件,然后通過路徑瀏覽完成參數(shù)文件的選擇和下載;模型輸出設(shè)置顯示當(dāng)前時(shí)刻的仿真運(yùn)行車速,以監(jiān)控模型運(yùn)行;模型運(yùn)行狀態(tài)控制實(shí)現(xiàn)模型的運(yùn)行、暫停、停止功能,另外,StopRTP 將dSPACE 內(nèi)存中的動(dòng)力學(xué)模型清除,Quit 實(shí)現(xiàn)退出ControlDesk應(yīng)用界面。
5 仿真驗(yàn)證
為了驗(yàn)證模型的運(yùn)行情況,分別對(duì)模型的仿真運(yùn)行時(shí)間和車輛雙移線工況進(jìn)行了仿真驗(yàn)證。設(shè)置ASCL 的仿真步長(zhǎng)為1 ms,當(dāng)動(dòng)力學(xué)模型下載到dSPACE 的DS1006中運(yùn)行時(shí),其每步平均仿真實(shí)測(cè)時(shí)間為0.18ms 左右,模型運(yùn)行時(shí)間占設(shè)定時(shí)間的18 %,滿足實(shí)時(shí)仿真要求。
定義了雙移線仿真工況,通過Controldesk 監(jiān)測(cè)模型側(cè)向加速度和橫擺角速度的運(yùn)算結(jié)果,并將該仿真結(jié)果與離線仿真結(jié)果對(duì)比,驗(yàn)證了車輛動(dòng)力學(xué)模型在兩種仿真平臺(tái)下側(cè)向加速度和橫擺角速度的一致性,以及仿真控制策略的可行性和正確性。
6 結(jié)束語
開發(fā)了基于dSPACE 的嵌入式車輛動(dòng)力學(xué)仿真平臺(tái),主要完成以下方面的工作:
a. 利用dSPACE 的GCC 編譯器在PC 機(jī)下完成了目標(biāo)代碼的生成;
b. 利用dSPACE 自帶的RTLib 函數(shù),基于時(shí)鐘A和D中斷實(shí)現(xiàn)了動(dòng)力學(xué)模型的初始化和仿真控制;
c. 利用dSPACE 自帶的Clib 函數(shù)完成了動(dòng)力學(xué)模型的參數(shù)賦值;
d. 驗(yàn)證了ASCL 在dSPACE 嵌入式仿真平臺(tái)和離線仿真平臺(tái)下側(cè)向加速度和橫擺角速度的一致性,以及仿真控制策略的可行性和正確性。
【基于dSPACE 的嵌入式車輛動(dòng)力學(xué)仿真平臺(tái)開發(fā)的探究論文】相關(guān)文章:
《路史》的寫作特征探究論文07-29
基于學(xué)情的中職計(jì)算機(jī)基礎(chǔ)分層教學(xué)探究12-18
嵌入式軟件開發(fā)個(gè)人簡(jiǎn)歷模板05-23
關(guān)于教師備課探究開題報(bào)告的論文07-24
電磁型磁懸浮列車動(dòng)力學(xué)論文的參考文獻(xiàn)09-27
高中英語寫作教學(xué)探究的論文06-19
基于核心素養(yǎng)的英語寫作教學(xué)策略論文09-29