應(yīng)世明,張宏雙Ying Shiming,Zhang Hongshuang
基于模型設(shè)計(jì)嵌入式ECU的自動代碼生成研究
應(yīng)世明,張宏雙
Ying Shiming,Zhang Hongshuang
( 1.長城汽車股份有限公司,河北 保定 071000;2.河北省汽車技術(shù)創(chuàng)新中心,河北 保定 071000)
基于ASAP(zur Standardisierung von Applikationssystemen,應(yīng)用系統(tǒng)標(biāo)準(zhǔn)化工作小組)標(biāo)準(zhǔn)架構(gòu)提到的數(shù)據(jù)庫管理方式,應(yīng)用Excel完成ECU(Electronic Control Unit,電子控制單元)系統(tǒng)的數(shù)據(jù)管理。利用MATLAB軟件完成ASAP數(shù)據(jù)庫自動生成,實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入、用于a2l文件生成模型創(chuàng)建、頭文件修改及地址替換。最終生成可執(zhí)行文件*.a2l,滿足對標(biāo)定系統(tǒng)中的變量進(jìn)行標(biāo)定或觀測的需求。
標(biāo)準(zhǔn)架構(gòu);標(biāo)定系統(tǒng);數(shù)據(jù)管理;自動生成
ECU(Electronic Control Unit,電子控制單元)標(biāo)定是指根據(jù)整車或者整車上ECU的性能要求(動力性、經(jīng)濟(jì)性等),對ECU內(nèi)部參數(shù)修改、校正、優(yōu)化的過程。在項(xiàng)目開發(fā)的不同階段對控制系統(tǒng)的功能需求不相同,因此會有不同的標(biāo)定需求。對于控制代碼的自動化生成,標(biāo)定系統(tǒng)的ASAP(zur Standardisierung von Applikation ssystemen,應(yīng)用系統(tǒng)標(biāo)準(zhǔn)化工作小組)數(shù)據(jù)庫自動更新標(biāo)定數(shù)據(jù)的信息,保證對控制系統(tǒng)中的重要變量進(jìn)行標(biāo)定及觀測[1-3]。
ASAP工作組制定了目前廣泛使用的標(biāo)準(zhǔn)化接口和通信協(xié)議。標(biāo)準(zhǔn)化接口的通信協(xié)議有利于實(shí)現(xiàn)不同汽車ECU之間數(shù)據(jù)交互的一致性。ASAP標(biāo)準(zhǔn)架構(gòu)定義了ASAP1、ASAP2和ASAP3 3個標(biāo)準(zhǔn)的關(guān)系,如圖1所示。
ASAP1定義了ASAP控制設(shè)備與MCD(Measurement Calibration Diagnostic,觀測標(biāo)定診斷系統(tǒng))之間物理和邏輯連接的接口標(biāo)準(zhǔn)。ASAP2提供了不同控制設(shè)備之間的接口、測量數(shù)據(jù)、標(biāo)定數(shù)據(jù)、數(shù)據(jù)存儲格式、數(shù)據(jù)轉(zhuǎn)換方法的規(guī)范化定義。控制設(shè)備的標(biāo)準(zhǔn)信息使用基于XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語言)技術(shù)的A2L文件描述,描述控制設(shè)備內(nèi)部數(shù)據(jù)的存儲細(xì)節(jié),實(shí)現(xiàn)數(shù)據(jù)和應(yīng)用的分離,有利于提高M(jìn)CD系統(tǒng)的通用性。ASAP3作為MCD系統(tǒng)與用戶應(yīng)用層之間的接口,提供MCD系統(tǒng)的測量、標(biāo)定和診斷等功能的標(biāo)準(zhǔn)化函數(shù)的調(diào)用[4-5]。

圖1 ASAP標(biāo)準(zhǔn)架構(gòu)
通常以V流程為指導(dǎo)方針的開發(fā)目標(biāo)采用模型與數(shù)據(jù)分開管理的方法,即采用MATLAB/ Simulink作為控制算法的開發(fā)工具,依照MAAB(Mathworks Automotive Advisory Board,控制算法建模規(guī)范),完成整車ECU系統(tǒng)應(yīng)用軟件的控制策略的模型架構(gòu)設(shè)計(jì)、功能開發(fā)、模型數(shù)據(jù)定標(biāo),最終下載到客戶硬件控制器中。ECU由模型轉(zhuǎn)換到代碼,并與底層手寫代碼集成,整個過程如圖2所示。

注:ASW(Applications SoftWare,應(yīng)用軟件);RTE(Runtime Environment,運(yùn)行環(huán)境);BSW(Basic Software Layer,基礎(chǔ)軟件層)。
由圖2可以看出,編譯器的作用是將源代碼文件(.c.h文件)編譯成可執(zhí)行的目標(biāo)文件(.o文件),編譯規(guī)則應(yīng)用標(biāo)準(zhǔn)C語言的編譯規(guī)則。根據(jù)不同芯片、不同平臺選擇不同的編譯器,鏈接器需和編譯器匹配,其作用是將所有由編譯器編譯完成的目標(biāo)文件(.o文件)鏈接成可以燒錄到ECU中的elf、S19文件,以及編譯器生成的可供查看信息的map文件。最終文件(elf、S19文件)是源碼文件(.c.h文件)經(jīng)過編譯器、鏈接器處理后得到的文件。
elf文件是帶調(diào)試信息的可燒錄文件,可以使用該文件進(jìn)行調(diào)試。使用PE或勞特巴赫等工具軟件,可以將elf燒錄到ECU中,并使用專門的調(diào)試器進(jìn)行文件調(diào)試,此時需要源碼支持,elf文件中包含了源碼的路徑信息,所以源碼路徑要保證正確。S19文件也是可燒錄文件,但不包括調(diào)試信息,只有程序數(shù)據(jù)信息,只能用于燒錄不能用于調(diào)試。A2L文件用于INCA軟件,INCA軟件可以根據(jù)A2L文件對ECU進(jìn)行標(biāo)定和測量,A2L文件中包含了標(biāo)定量、測量量及CCP(CAN Calibration Protocol,CAN總線標(biāo)定協(xié)議)通信的相關(guān)信息。
為了更好地對基礎(chǔ)軟件代碼進(jìn)行維護(hù),縮短產(chǎn)品平臺化開發(fā)周期,對ECU進(jìn)行系統(tǒng)的數(shù)據(jù)管理很重要。進(jìn)行參數(shù)標(biāo)定前,需將搭建的模型及數(shù)據(jù)轉(zhuǎn)換成最終的可執(zhí)行文件*.a2l。試驗(yàn)過程中通過標(biāo)定工具獲取數(shù)據(jù)、觀察和改變數(shù)據(jù)。這種將模型與數(shù)據(jù)分離的方式,簡化了開發(fā)人員的工作流程,使模型與數(shù)據(jù)維護(hù)更方便。
應(yīng)用數(shù)據(jù)管理軟件如Excel、數(shù)據(jù)字典完成與模型對應(yīng)的參數(shù)管理,將ECU系統(tǒng)程序中用到的標(biāo)定量及觀測量按照Excel格式要求完善信息。如圖3所示,Excel中有2個表,ROM Data記錄標(biāo)定量,RAM Data記錄觀測量。在ROM和RAM中分別定義整車ECU涉及的參數(shù)變量名、數(shù)值、數(shù)據(jù)類型、單位、維度等基本信息。

圖3 標(biāo)定量和觀測量
RTE是AUTOSAR(Automotive Open System Architecture,汽車開放系統(tǒng)架構(gòu))中定義的一層結(jié)構(gòu),作用是將ASW和BSW隔離,為ASW和BSW提供實(shí)時訪問接口變量的方式。參考AUTOSAR架構(gòu)中定義的RTE層,但是將RTE層訪問與操作系統(tǒng)分離,使用Read和Write方式進(jìn)行ASW和BSW對RTE層的訪問,結(jié)構(gòu)如圖4所示。

圖4 RTE層結(jié)構(gòu)
為了方便RTE層維護(hù),設(shè)計(jì)了RTE層接口變量定義表格。每次生成代碼過程中,RTE層定義文件會根據(jù)表格中定義的RTE變量自動生成,RTE層與ASW和BSW的交互層需要根據(jù)該表格自動生成,將對RTE層代碼和模型的維護(hù)轉(zhuǎn)化為對RTE層表格的維護(hù)。
模型對RTE層接口變量的訪問需要通過模塊調(diào)用RTE函數(shù),這需要根據(jù)RTE層的變量創(chuàng)建訪問RTE層函數(shù)的模塊。創(chuàng)建調(diào)用外部函數(shù)的工具為Legacy Code Tool,為MATLAB自帶的工具,使用該工具編寫M腳本,查詢RTE表格中定義的接口變量及屬性,生成該工具要求的腳本。通過對腳本的執(zhí)行,在線生成調(diào)用RTE層函數(shù)的模型文件以及庫文件。用戶可以將模型文件中定義的模塊直接用于建模,實(shí)現(xiàn)對RTE接口變量的訪問。生成的模型文件如圖5所示。

圖5 RTE模型
BSW層對RTE層的訪問通過直接調(diào)用RTE層定義的Read和Write函數(shù)進(jìn)行。為了方便BSW層轉(zhuǎn)化定標(biāo)方式,設(shè)計(jì)了RteBsw源文件,文件中定義2個函數(shù),為BSW和RTE層變量定標(biāo)方式的相互轉(zhuǎn)化函數(shù);BSW通過調(diào)用這2個函數(shù)實(shí)現(xiàn)對RTE層定標(biāo)方式的適配,從而將對源代碼的維護(hù)變成對RTE層表格的維護(hù),能夠提高工作效率,降低勞動強(qiáng)度。
首先將管理數(shù)據(jù)Excel文件及MATLAB讀取Excel文件的封裝包放到MATLAB路徑下,使用創(chuàng)建的M腳本程序,在MATLAB的命令窗口輸入如下命令。
xlsreadsdo('nano_bus.xls', 'Simulink');
xlsreadsdo('Nano_data.xls', 'TestPackage');
nano_bus.xls、Nano_data.xls為2個Excel表的名字,Simulink、TestPackage為2個表的封裝格式,TestPackage為自定義的一種封裝格式,這樣實(shí)現(xiàn)了Excel表中信息導(dǎo)入到 MATLAB的Workspace。
在生成 A2L文件時需將導(dǎo)入MATLAB工作空間的數(shù)據(jù)轉(zhuǎn)換成使用該變量的模型。底層代碼為手寫C代碼,原策略模型中沒有這些變量;如果模型中沒有用到這些變量,則不會在A2L文件中生成相應(yīng)的標(biāo)定量或觀測量,所以使用自建的M腳本提取nano_bus.xls、 Nano_data.xls 2個Excel表格內(nèi)的信息后自動創(chuàng)建模型。
將創(chuàng)建的模型生成的A2L文件導(dǎo)入INCA軟件后并不能與ECU建立通信,需要對A2L文件的文件頭進(jìn)行修改。A2L文件頭定義了整個項(xiàng)目的通用信息,包括與硬件設(shè)備通信信息、標(biāo)定量和觀測量的存儲區(qū)域等信息。
在 MATLAB安裝目錄下找到asap2main.tlc、asap2setup.tlc、asap2userlib.tlc 3個TLC文件,這些文件是基于MATLAB的TLC腳本語言開發(fā),通過修改這3個TLC文件,可以控制生成的A2L文件格式及信息。在每次生成A2L文件時都包含需要的文件頭,把MATLAB生成的A2L文件正確導(dǎo)入INCA,與ECU建立通信。
在自動創(chuàng)建的模型上打開模型配置參數(shù)的配置界面,配置相關(guān)參數(shù)生成A2L文件,替換地址后可導(dǎo)入INCA使用。通過運(yùn)行M腳本函數(shù)實(shí)現(xiàn)打開配置界面、配置相關(guān)參數(shù)、生成A2L等操作。
給出了一種ASAP數(shù)據(jù)庫管理方式,用2張Excel表管理所用到的標(biāo)定量及觀測量。利用MATLAB工具生成可以導(dǎo)入INCA的A2L文件,將Excel表數(shù)據(jù)導(dǎo)入Workspace、提取Excel表信息創(chuàng)建模型、生成A2L文件并將替換地址的各M函數(shù)集成到一個M腳本中,在MATLAB命令窗口中輸入命令即可生成可以直接使用的A2L文件,使用這樣的方法可以完成對標(biāo)定量和觀測量的ASAP數(shù)據(jù)庫實(shí)時更新任務(wù)。
[1]宋維群,楊世春,李明,等.基于ASAM標(biāo)準(zhǔn)的標(biāo)定數(shù)據(jù)庫邏輯分析與編程實(shí)現(xiàn)[J].汽車技術(shù),2012(1):10-13.
[2]張彧,馮輝宗.基于CCP協(xié)議的汽車ECU標(biāo)定系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007(29):216-217.
[3]韋文波.基于CCP協(xié)議的電控發(fā)動機(jī)標(biāo)定系統(tǒng)開發(fā)[D].長沙:湖南大學(xué),2011.
[4]莊繼暉,謝輝,李蘇蘇,等.基于ASAP架構(gòu)的發(fā)動機(jī)ECU標(biāo)定系統(tǒng)開發(fā)[J].中國機(jī)械工程,2012 ,23(2):199-203.
[5]陳鵬.基于CCP協(xié)議發(fā)動機(jī)標(biāo)定系統(tǒng)應(yīng)用研究[D].武漢:武漢理工大學(xué),2014.
2021-03-15
U463.6.02
A
10.14175/j.issn.1002-4581.2021.04.010
1002-4581(2021)04-0041-04