宋炳雨, 張興達(dá), 魯 艷, 王 豐
(濰柴動(dòng)力股份有限公司, 山東 濰坊 261061)
在典型的汽車(chē)嵌入式軟件開(kāi)發(fā)過(guò)程中,同一版ECU控制程序通常可以通過(guò)數(shù)據(jù)標(biāo)定,滿(mǎn)足不同的平臺(tái)使用需求,其中,查表數(shù)據(jù)MAP即是其中一類(lèi)常見(jiàn)的可標(biāo)定數(shù)據(jù),尤其是在發(fā)動(dòng)機(jī)ECU控制系統(tǒng)軟件中,使用尤為普遍,但對(duì)于常規(guī)的查表數(shù)據(jù)MAP,通常只能修改其內(nèi)部數(shù)據(jù),而無(wú)法對(duì)其維數(shù)進(jìn)行標(biāo)定和修改。
本文基于Simulink及ASAM標(biāo)準(zhǔn),對(duì)可變維數(shù)查表功能進(jìn)行研究與嵌入式軟件功能實(shí)現(xiàn),并使用ETAS公司開(kāi)發(fā)的INCA軟件進(jìn)行功能測(cè)試與數(shù)據(jù)標(biāo)定,使用這種設(shè)計(jì)方法,可以使ECU控制系統(tǒng)軟件具有更好的可擴(kuò)展性、可維護(hù)性以及通用性。
Simulink查表模塊 (Simulink Lookup Table) 是一種常用的Simulink模塊,其使用數(shù)據(jù)數(shù)組將輸入值映射到輸出值,來(lái)對(duì)數(shù)學(xué)函數(shù)進(jìn)行逼近;如果指定輸入值,Simulink則執(zhí)行查找操作,從表中檢索對(duì)應(yīng)輸出值。如果查找表中未定義這些輸入值,模塊將根據(jù)臨近的標(biāo)值估算輸出值[1]。
Simulink提供了各種類(lèi)型的查表模塊,每個(gè)模塊專(zhuān)門(mén)針對(duì)一種特定的應(yīng)用,根據(jù)不同的應(yīng)用場(chǎng)景,用戶(hù)可以選擇適合的查表模塊[1]。圖1為兩個(gè)最為常用的Simulink查表模塊,也為查表模塊編輯器。通過(guò)查表模塊編輯器,可以對(duì)查找表的數(shù)據(jù)初始值進(jìn)行查看與編輯。
圖1 查表模塊編輯器
ASAM是自動(dòng)化及測(cè)試系統(tǒng)標(biāo)準(zhǔn)協(xié)會(huì) (Association for Standardization of Automation,ASAM) 的簡(jiǎn)稱(chēng),其為整個(gè)汽車(chē)電控系統(tǒng)的測(cè)量、標(biāo)定提出了一套行業(yè)標(biāo)準(zhǔn),主要包含ASAM MCD-1MC (XCP,CCP) 標(biāo)準(zhǔn),ASAM MCD-2MC(ASAP2) 標(biāo)準(zhǔn)以及ASAM MCD-3MC標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)主要規(guī)定了標(biāo)定平臺(tái)與硬件之間的通信協(xié)議與接口標(biāo)準(zhǔn)、硬件與軟件的描述標(biāo)準(zhǔn)以及標(biāo)定平臺(tái)與其他測(cè)試設(shè)備之間的接口標(biāo)準(zhǔn)。通過(guò)對(duì)該標(biāo)準(zhǔn)的實(shí)施與推廣,可以使在開(kāi)發(fā)過(guò)程中運(yùn)用到的數(shù)據(jù)交換方法以及軟、硬件工具得到標(biāo)準(zhǔn)化,借此可以減少整個(gè)過(guò)程的開(kāi)發(fā)成本,縮短開(kāi)發(fā)周期,同時(shí)可以更好地保證產(chǎn)品的品質(zhì),并具有高度通用性[2]。
本文基于Simulink模型及ASAM標(biāo)準(zhǔn),以普通的二維查表MAP及圖2、圖3所示查表數(shù)據(jù)定義格式為例,對(duì)維數(shù)可標(biāo)定的嵌入式軟件查表功能進(jìn)行研究。
根據(jù)ASAM MCD-2 MC標(biāo)準(zhǔn),其支持對(duì)MAP維數(shù)進(jìn)行標(biāo)定和調(diào)整,但對(duì)可標(biāo)定維數(shù)功能的查表數(shù)據(jù)MAP定義,提出了如下兩種格式定義要求,如圖2和圖3所示。
本文選擇圖2所示格式對(duì)維數(shù)可標(biāo)定的查表MAP進(jìn)行研究與實(shí)現(xiàn)。
圖2 支持維數(shù)可標(biāo)定的查表數(shù)據(jù)定義形式1[3]
圖3 支持維數(shù)可標(biāo)定的查表數(shù)據(jù)定義形式2[3]
使用Simulink自帶的二維查表模塊2-D Lookup Table,搭建仿真測(cè)試模型。為便于功能測(cè)試,將二維查表模塊的兩個(gè)輸入設(shè)置為標(biāo)定量,并將其輸出設(shè)置為觀測(cè)量。
仿真測(cè)試模型如圖4 所示,其中,Lut_MAP_X 和Lut_MAP_Y為標(biāo)定量,同時(shí)做為二維查表模塊的兩個(gè)輸入,而Lut_MAP_mp是可以用來(lái)觀測(cè)查表模塊輸出結(jié)果的觀測(cè)量。
圖4 仿真測(cè)試模型
為了實(shí)現(xiàn)對(duì)Simulink模型代碼的定制,使用Simulink.LookupTable對(duì)MAP數(shù)據(jù)進(jìn)行定義。Simulink.LookupTable是Simulink自帶的一種數(shù)據(jù)定義包,其能夠存儲(chǔ)和共享查表及斷點(diǎn)數(shù)據(jù)。使用該數(shù)據(jù)定義包定義變量,可以對(duì)其變量名稱(chēng)、數(shù)據(jù)類(lèi)型,以及代碼生成格式進(jìn)行配置,合理配置后的變量定義,其在自動(dòng)生成代碼后,能夠以滿(mǎn)足ASAM標(biāo)準(zhǔn)的C語(yǔ)言結(jié)構(gòu)體形式存在。使用Simulink.LooupTable定義的變量“Lut_MAP”如圖5所示。
模型自動(dòng)生成代碼后,MAP數(shù)據(jù)結(jié)構(gòu)體定義信息文件如圖6所示,滿(mǎn)足ASAM標(biāo)準(zhǔn)規(guī)定的結(jié)構(gòu)體數(shù)據(jù)定義要求。
圖6 結(jié)構(gòu)體數(shù)據(jù)
A2L文件是ASAM MCD-2 MC標(biāo)準(zhǔn)規(guī)定的對(duì)ECU內(nèi)部變量進(jìn)行描述的、具有規(guī)范化格式要求的文本文件,其中包含的變量可分為測(cè)量量和標(biāo)定量?jī)深?lèi),對(duì)于A2L文件中描述的每一個(gè)變量,都有變量名稱(chēng)、地址、維數(shù)、占用字節(jié)長(zhǎng)度以及變量在內(nèi)存中的存儲(chǔ)形式等信息;標(biāo)定工具需要使用A2L文件完成標(biāo)定工程環(huán)境的創(chuàng)建及數(shù)據(jù)標(biāo)定工作。
根據(jù)ASAM MCD-2 MC標(biāo)準(zhǔn)要求,配置生成針對(duì)上述可變維數(shù)查表變量的A2L文件。其中A2L文件中包含的變量有:Lut_MAP_X,Lut_MAP_Y,Lut_MAP,以 及Lut_MAP_mp;其中,Lut_MAP_X和Lut_MAP_Y為A2L文件中的普通標(biāo)定量,Lut_MAP_mp 為 測(cè) 量 量,而Lut_MAP 為 使 用STATIC_ADDRESS_OFFSETS參數(shù)進(jìn)行特殊配置的支持維數(shù)標(biāo)定功能的MAP變量。STATIC_ADDRESS_OFFSETS可以保證當(dāng)使用標(biāo)定工具對(duì)MAP維數(shù)進(jìn)行標(biāo)定和調(diào)整時(shí),MAP變量的首地址不發(fā)生變化[3]。
使用上述程序及配置好的A2L文件,創(chuàng)建INCA標(biāo)定環(huán)境并運(yùn)行,測(cè)試二維MAP“Lut_MAP”的維數(shù)可標(biāo)定功能是否正常。未執(zhí)行任何標(biāo)定操作前的原始查表數(shù)據(jù)如圖7所示。
在INCA環(huán)境下,選中Lut_MAP待刪除列中的任意一個(gè)某元素,選擇刪除列命令,則可以將該列刪除;選中Lut_MAP待刪除行中的任意一個(gè)元素,通過(guò)刪除行命令,則可以將該行刪除,圖8為在原始MAP數(shù)據(jù)基礎(chǔ)上,分別刪除一行和一列的示意圖,可以看出,刪除部分?jǐn)?shù)據(jù)后,MAP維數(shù)變化情況與預(yù)期目標(biāo)一致,且剩余數(shù)據(jù)往左上角即MAP首元素位置收縮,MAP維數(shù)變化前后的查表運(yùn)行結(jié)果正常。
選中可變維數(shù)MAP的某一行或某一列,選擇新增行或新增列命令,則可以在現(xiàn)有MAP數(shù)據(jù)基礎(chǔ)上增加一行或一列;當(dāng)行數(shù)或列數(shù)增加到程序生成之初的行數(shù)或列數(shù)時(shí),行數(shù)和列數(shù)不再增加;維數(shù)變化后的查表功能正常。圖9為增加MAP的行和列示意圖。
圖7 原始查表數(shù)據(jù)
圖8 刪除MAP的行和列示意圖
圖9 增加MAP的行和列示意圖
基于Simulink及ASAM標(biāo)準(zhǔn),①可以實(shí)現(xiàn)可變維數(shù)查表功能開(kāi)發(fā);②可變維數(shù)MAP的最大維數(shù)為生成程序文件之初的初始維數(shù),其維數(shù)可以根據(jù)需要,在維數(shù)可變范圍內(nèi)隨意調(diào)整,而不影響查表結(jié)果準(zhǔn)確性;③可變維數(shù)MAP能夠通過(guò)標(biāo)定或數(shù)據(jù)合成滿(mǎn)足MAP維數(shù)調(diào)整需求,而不需要重新進(jìn)行軟件集成,能夠?yàn)榍度胧杰浖褂脦?lái)很高的靈活性和便利性。