應(yīng)世明,張宏雙Ying Shiming,Zhang Hongshuang
基于模型設(shè)計(jì)嵌入式ECU的自動(dòng)代碼生成研究
應(yīng)世明,張宏雙
Ying Shiming,Zhang Hongshuang
( 1.長(zhǎng)城汽車(chē)股份有限公司,河北 保定 071000;2.河北省汽車(chē)技術(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ù)庫(kù)管理方式,應(yīng)用Excel完成ECU(Electronic Control Unit,電子控制單元)系統(tǒng)的數(shù)據(jù)管理。利用MATLAB軟件完成ASAP數(shù)據(jù)庫(kù)自動(dòng)生成,實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入、用于a2l文件生成模型創(chuàng)建、頭文件修改及地址替換。最終生成可執(zhí)行文件*.a2l,滿(mǎn)足對(duì)標(biāo)定系統(tǒng)中的變量進(jìn)行標(biāo)定或觀(guān)測(cè)的需求。
標(biāo)準(zhǔn)架構(gòu);標(biāo)定系統(tǒng);數(shù)據(jù)管理;自動(dòng)生成
ECU(Electronic Control Unit,電子控制單元)標(biāo)定是指根據(jù)整車(chē)或者整車(chē)上ECU的性能要求(動(dòng)力性、經(jīng)濟(jì)性等),對(duì)ECU內(nèi)部參數(shù)修改、校正、優(yōu)化的過(guò)程。在項(xiàng)目開(kāi)發(fā)的不同階段對(duì)控制系統(tǒng)的功能需求不相同,因此會(huì)有不同的標(biāo)定需求。對(duì)于控制代碼的自動(dòng)化生成,標(biāo)定系統(tǒng)的ASAP(zur Standardisierung von Applikation ssystemen,應(yīng)用系統(tǒng)標(biāo)準(zhǔn)化工作小組)數(shù)據(jù)庫(kù)自動(dòng)更新標(biāo)定數(shù)據(jù)的信息,保證對(duì)控制系統(tǒng)中的重要變量進(jìn)行標(biāo)定及觀(guān)測(cè)[1-3]。
ASAP工作組制定了目前廣泛使用的標(biāo)準(zhǔn)化接口和通信協(xié)議。標(biāo)準(zhǔn)化接口的通信協(xié)議有利于實(shí)現(xiàn)不同汽車(chē)ECU之間數(shù)據(jù)交互的一致性。ASAP標(biāo)準(zhǔn)架構(gòu)定義了ASAP1、ASAP2和ASAP3 3個(gè)標(biāo)準(zhǔn)的關(guān)系,如圖1所示。
ASAP1定義了ASAP控制設(shè)備與MCD(Measurement Calibration Diagnostic,觀(guān)測(cè)標(biāo)定診斷系統(tǒng))之間物理和邏輯連接的接口標(biāo)準(zhǔn)。ASAP2提供了不同控制設(shè)備之間的接口、測(cè)量數(shù)據(jù)、標(biāo)定數(shù)據(jù)、數(shù)據(jù)存儲(chǔ)格式、數(shù)據(jù)轉(zhuǎn)換方法的規(guī)范化定義??刂圃O(shè)備的標(biāo)準(zhǔn)信息使用基于XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)技術(shù)的A2L文件描述,描述控制設(shè)備內(nèi)部數(shù)據(jù)的存儲(chǔ)細(xì)節(jié),實(shí)現(xiàn)數(shù)據(jù)和應(yīng)用的分離,有利于提高M(jìn)CD系統(tǒng)的通用性。ASAP3作為MCD系統(tǒng)與用戶(hù)應(yīng)用層之間的接口,提供MCD系統(tǒng)的測(cè)量、標(biāo)定和診斷等功能的標(biāo)準(zhǔn)化函數(shù)的調(diào)用[4-5]。
圖1 ASAP標(biāo)準(zhǔn)架構(gòu)
通常以V流程為指導(dǎo)方針的開(kāi)發(fā)目標(biāo)采用模型與數(shù)據(jù)分開(kāi)管理的方法,即采用MATLAB/ Simulink作為控制算法的開(kāi)發(fā)工具,依照MAAB(Mathworks Automotive Advisory Board,控制算法建模規(guī)范),完成整車(chē)ECU系統(tǒng)應(yīng)用軟件的控制策略的模型架構(gòu)設(shè)計(jì)、功能開(kāi)發(fā)、模型數(shù)據(jù)定標(biāo),最終下載到客戶(hù)硬件控制器中。ECU由模型轉(zhuǎn)換到代碼,并與底層手寫(xiě)代碼集成,整個(gè)過(guò)程如圖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語(yǔ)言的編譯規(guī)則。根據(jù)不同芯片、不同平臺(tái)選擇不同的編譯器,鏈接器需和編譯器匹配,其作用是將所有由編譯器編譯完成的目標(biāo)文件(.o文件)鏈接成可以燒錄到ECU中的elf、S19文件,以及編譯器生成的可供查看信息的map文件。最終文件(elf、S19文件)是源碼文件(.c.h文件)經(jīng)過(guò)編譯器、鏈接器處理后得到的文件。
elf文件是帶調(diào)試信息的可燒錄文件,可以使用該文件進(jìn)行調(diào)試。使用PE或勞特巴赫等工具軟件,可以將elf燒錄到ECU中,并使用專(zhuān)門(mén)的調(diào)試器進(jìn)行文件調(diào)試,此時(shí)需要源碼支持,elf文件中包含了源碼的路徑信息,所以源碼路徑要保證正確。S19文件也是可燒錄文件,但不包括調(diào)試信息,只有程序數(shù)據(jù)信息,只能用于燒錄不能用于調(diào)試。A2L文件用于INCA軟件,INCA軟件可以根據(jù)A2L文件對(duì)ECU進(jìn)行標(biāo)定和測(cè)量,A2L文件中包含了標(biāo)定量、測(cè)量量及CCP(CAN Calibration Protocol,CAN總線(xiàn)標(biāo)定協(xié)議)通信的相關(guān)信息。
為了更好地對(duì)基礎(chǔ)軟件代碼進(jìn)行維護(hù),縮短產(chǎn)品平臺(tái)化開(kāi)發(fā)周期,對(duì)ECU進(jìn)行系統(tǒng)的數(shù)據(jù)管理很重要。進(jìn)行參數(shù)標(biāo)定前,需將搭建的模型及數(shù)據(jù)轉(zhuǎn)換成最終的可執(zhí)行文件*.a2l。試驗(yàn)過(guò)程中通過(guò)標(biāo)定工具獲取數(shù)據(jù)、觀(guān)察和改變數(shù)據(jù)。這種將模型與數(shù)據(jù)分離的方式,簡(jiǎn)化了開(kāi)發(fā)人員的工作流程,使模型與數(shù)據(jù)維護(hù)更方便。
應(yīng)用數(shù)據(jù)管理軟件如Excel、數(shù)據(jù)字典完成與模型對(duì)應(yīng)的參數(shù)管理,將ECU系統(tǒng)程序中用到的標(biāo)定量及觀(guān)測(cè)量按照Excel格式要求完善信息。如圖3所示,Excel中有2個(gè)表,ROM Data記錄標(biāo)定量,RAM Data記錄觀(guān)測(cè)量。在ROM和RAM中分別定義整車(chē)ECU涉及的參數(shù)變量名、數(shù)值、數(shù)據(jù)類(lèi)型、單位、維度等基本信息。
圖3 標(biāo)定量和觀(guān)測(cè)量
RTE是AUTOSAR(Automotive Open System Architecture,汽車(chē)開(kāi)放系統(tǒng)架構(gòu))中定義的一層結(jié)構(gòu),作用是將ASW和BSW隔離,為ASW和BSW提供實(shí)時(shí)訪(fǎng)問(wèn)接口變量的方式。參考AUTOSAR架構(gòu)中定義的RTE層,但是將RTE層訪(fǎng)問(wèn)與操作系統(tǒng)分離,使用Read和Write方式進(jìn)行ASW和BSW對(duì)RTE層的訪(fǎng)問(wèn),結(jié)構(gòu)如圖4所示。
圖4 RTE層結(jié)構(gòu)
為了方便RTE層維護(hù),設(shè)計(jì)了RTE層接口變量定義表格。每次生成代碼過(guò)程中,RTE層定義文件會(huì)根據(jù)表格中定義的RTE變量自動(dòng)生成,RTE層與ASW和BSW的交互層需要根據(jù)該表格自動(dòng)生成,將對(duì)RTE層代碼和模型的維護(hù)轉(zhuǎn)化為對(duì)RTE層表格的維護(hù)。
模型對(duì)RTE層接口變量的訪(fǎng)問(wèn)需要通過(guò)模塊調(diào)用RTE函數(shù),這需要根據(jù)RTE層的變量創(chuàng)建訪(fǎng)問(wèn)RTE層函數(shù)的模塊。創(chuàng)建調(diào)用外部函數(shù)的工具為L(zhǎng)egacy Code Tool,為MATLAB自帶的工具,使用該工具編寫(xiě)M腳本,查詢(xún)RTE表格中定義的接口變量及屬性,生成該工具要求的腳本。通過(guò)對(duì)腳本的執(zhí)行,在線(xiàn)生成調(diào)用RTE層函數(shù)的模型文件以及庫(kù)文件。用戶(hù)可以將模型文件中定義的模塊直接用于建模,實(shí)現(xiàn)對(duì)RTE接口變量的訪(fǎng)問(wèn)。生成的模型文件如圖5所示。
圖5 RTE模型
BSW層對(duì)RTE層的訪(fǎng)問(wèn)通過(guò)直接調(diào)用RTE層定義的Read和Write函數(shù)進(jìn)行。為了方便BSW層轉(zhuǎn)化定標(biāo)方式,設(shè)計(jì)了RteBsw源文件,文件中定義2個(gè)函數(shù),為BSW和RTE層變量定標(biāo)方式的相互轉(zhuǎn)化函數(shù);BSW通過(guò)調(diào)用這2個(gè)函數(shù)實(shí)現(xiàn)對(duì)RTE層定標(biāo)方式的適配,從而將對(duì)源代碼的維護(hù)變成對(duì)RTE層表格的維護(hù),能夠提高工作效率,降低勞動(dòng)強(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個(gè)Excel表的名字,Simulink、TestPackage為2個(gè)表的封裝格式,TestPackage為自定義的一種封裝格式,這樣實(shí)現(xiàn)了Excel表中信息導(dǎo)入到 MATLAB的Workspace。
在生成 A2L文件時(shí)需將導(dǎo)入MATLAB工作空間的數(shù)據(jù)轉(zhuǎn)換成使用該變量的模型。底層代碼為手寫(xiě)C代碼,原策略模型中沒(méi)有這些變量;如果模型中沒(méi)有用到這些變量,則不會(huì)在A2L文件中生成相應(yīng)的標(biāo)定量或觀(guān)測(cè)量,所以使用自建的M腳本提取nano_bus.xls、 Nano_data.xls 2個(gè)Excel表格內(nèi)的信息后自動(dòng)創(chuàng)建模型。
將創(chuàng)建的模型生成的A2L文件導(dǎo)入INCA軟件后并不能與ECU建立通信,需要對(duì)A2L文件的文件頭進(jìn)行修改。A2L文件頭定義了整個(gè)項(xiàng)目的通用信息,包括與硬件設(shè)備通信信息、標(biāo)定量和觀(guān)測(cè)量的存儲(chǔ)區(qū)域等信息。
在 MATLAB安裝目錄下找到asap2main.tlc、asap2setup.tlc、asap2userlib.tlc 3個(gè)TLC文件,這些文件是基于MATLAB的TLC腳本語(yǔ)言開(kāi)發(fā),通過(guò)修改這3個(gè)TLC文件,可以控制生成的A2L文件格式及信息。在每次生成A2L文件時(shí)都包含需要的文件頭,把MATLAB生成的A2L文件正確導(dǎo)入INCA,與ECU建立通信。
在自動(dòng)創(chuàng)建的模型上打開(kāi)模型配置參數(shù)的配置界面,配置相關(guān)參數(shù)生成A2L文件,替換地址后可導(dǎo)入INCA使用。通過(guò)運(yùn)行M腳本函數(shù)實(shí)現(xiàn)打開(kāi)配置界面、配置相關(guān)參數(shù)、生成A2L等操作。
給出了一種ASAP數(shù)據(jù)庫(kù)管理方式,用2張Excel表管理所用到的標(biāo)定量及觀(guān)測(cè)量。利用MATLAB工具生成可以導(dǎo)入INCA的A2L文件,將Excel表數(shù)據(jù)導(dǎo)入Workspace、提取Excel表信息創(chuàng)建模型、生成A2L文件并將替換地址的各M函數(shù)集成到一個(gè)M腳本中,在MATLAB命令窗口中輸入命令即可生成可以直接使用的A2L文件,使用這樣的方法可以完成對(duì)標(biāo)定量和觀(guān)測(cè)量的ASAP數(shù)據(jù)庫(kù)實(shí)時(shí)更新任務(wù)。
[1]宋維群,楊世春,李明,等.基于ASAM標(biāo)準(zhǔn)的標(biāo)定數(shù)據(jù)庫(kù)邏輯分析與編程實(shí)現(xiàn)[J].汽車(chē)技術(shù),2012(1):10-13.
[2]張彧,馮輝宗.基于CCP協(xié)議的汽車(chē)ECU標(biāo)定系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007(29):216-217.
[3]韋文波.基于CCP協(xié)議的電控發(fā)動(dòng)機(jī)標(biāo)定系統(tǒng)開(kāi)發(fā)[D].長(zhǎng)沙:湖南大學(xué),2011.
[4]莊繼暉,謝輝,李蘇蘇,等.基于ASAP架構(gòu)的發(fā)動(dòng)機(jī)ECU標(biāo)定系統(tǒng)開(kāi)發(fā)[J].中國(guó)機(jī)械工程,2012 ,23(2):199-203.
[5]陳鵬.基于CCP協(xié)議發(fā)動(dòng)機(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