宋炳雨, 張興達, 魯 艷, 王 豐
(濰柴動力股份有限公司, 山東 濰坊 261061)
在典型的汽車嵌入式軟件開發過程中,同一版ECU控制程序通??梢酝ㄟ^數據標定,滿足不同的平臺使用需求,其中,查表數據MAP即是其中一類常見的可標定數據,尤其是在發動機ECU控制系統軟件中,使用尤為普遍,但對于常規的查表數據MAP,通常只能修改其內部數據,而無法對其維數進行標定和修改。
本文基于Simulink及ASAM標準,對可變維數查表功能進行研究與嵌入式軟件功能實現,并使用ETAS公司開發的INCA軟件進行功能測試與數據標定,使用這種設計方法,可以使ECU控制系統軟件具有更好的可擴展性、可維護性以及通用性。
Simulink查表模塊 (Simulink Lookup Table) 是一種常用的Simulink模塊,其使用數據數組將輸入值映射到輸出值,來對數學函數進行逼近;如果指定輸入值,Simulink則執行查找操作,從表中檢索對應輸出值。如果查找表中未定義這些輸入值,模塊將根據臨近的標值估算輸出值[1]。
Simulink提供了各種類型的查表模塊,每個模塊專門針對一種特定的應用,根據不同的應用場景,用戶可以選擇適合的查表模塊[1]。圖1為兩個最為常用的Simulink查表模塊,也為查表模塊編輯器。通過查表模塊編輯器,可以對查找表的數據初始值進行查看與編輯。

圖1 查表模塊編輯器
ASAM是自動化及測試系統標準協會 (Association for Standardization of Automation,ASAM) 的簡稱,其為整個汽車電控系統的測量、標定提出了一套行業標準,主要包含ASAM MCD-1MC (XCP,CCP) 標準,ASAM MCD-2MC(ASAP2) 標準以及ASAM MCD-3MC標準。該標準主要規定了標定平臺與硬件之間的通信協議與接口標準、硬件與軟件的描述標準以及標定平臺與其他測試設備之間的接口標準。通過對該標準的實施與推廣,可以使在開發過程中運用到的數據交換方法以及軟、硬件工具得到標準化,借此可以減少整個過程的開發成本,縮短開發周期,同時可以更好地保證產品的品質,并具有高度通用性[2]。
本文基于Simulink模型及ASAM標準,以普通的二維查表MAP及圖2、圖3所示查表數據定義格式為例,對維數可標定的嵌入式軟件查表功能進行研究。
根據ASAM MCD-2 MC標準,其支持對MAP維數進行標定和調整,但對可標定維數功能的查表數據MAP定義,提出了如下兩種格式定義要求,如圖2和圖3所示。
本文選擇圖2所示格式對維數可標定的查表MAP進行研究與實現。

圖2 支持維數可標定的查表數據定義形式1[3]

圖3 支持維數可標定的查表數據定義形式2[3]
使用Simulink自帶的二維查表模塊2-D Lookup Table,搭建仿真測試模型。為便于功能測試,將二維查表模塊的兩個輸入設置為標定量,并將其輸出設置為觀測量。
仿真測試模型如圖4 所示,其中,Lut_MAP_X 和Lut_MAP_Y為標定量,同時做為二維查表模塊的兩個輸入,而Lut_MAP_mp是可以用來觀測查表模塊輸出結果的觀測量。

圖4 仿真測試模型
為了實現對Simulink模型代碼的定制,使用Simulink.LookupTable對MAP數據進行定義。Simulink.LookupTable是Simulink自帶的一種數據定義包,其能夠存儲和共享查表及斷點數據。使用該數據定義包定義變量,可以對其變量名稱、數據類型,以及代碼生成格式進行配置,合理配置后的變量定義,其在自動生成代碼后,能夠以滿足ASAM標準的C語言結構體形式存在。使用Simulink.LooupTable定義的變量“Lut_MAP”如圖5所示。
模型自動生成代碼后,MAP數據結構體定義信息文件如圖6所示,滿足ASAM標準規定的結構體數據定義要求。

圖6 結構體數據
A2L文件是ASAM MCD-2 MC標準規定的對ECU內部變量進行描述的、具有規范化格式要求的文本文件,其中包含的變量可分為測量量和標定量兩類,對于A2L文件中描述的每一個變量,都有變量名稱、地址、維數、占用字節長度以及變量在內存中的存儲形式等信息;標定工具需要使用A2L文件完成標定工程環境的創建及數據標定工作。
根據ASAM MCD-2 MC標準要求,配置生成針對上述可變維數查表變量的A2L文件。其中A2L文件中包含的變量有:Lut_MAP_X,Lut_MAP_Y,Lut_MAP,以 及Lut_MAP_mp;其中,Lut_MAP_X和Lut_MAP_Y為A2L文件中的普通標定量,Lut_MAP_mp 為 測 量 量,而Lut_MAP 為 使 用STATIC_ADDRESS_OFFSETS參數進行特殊配置的支持維數標定功能的MAP變量。STATIC_ADDRESS_OFFSETS可以保證當使用標定工具對MAP維數進行標定和調整時,MAP變量的首地址不發生變化[3]。
使用上述程序及配置好的A2L文件,創建INCA標定環境并運行,測試二維MAP“Lut_MAP”的維數可標定功能是否正常。未執行任何標定操作前的原始查表數據如圖7所示。
在INCA環境下,選中Lut_MAP待刪除列中的任意一個某元素,選擇刪除列命令,則可以將該列刪除;選中Lut_MAP待刪除行中的任意一個元素,通過刪除行命令,則可以將該行刪除,圖8為在原始MAP數據基礎上,分別刪除一行和一列的示意圖,可以看出,刪除部分數據后,MAP維數變化情況與預期目標一致,且剩余數據往左上角即MAP首元素位置收縮,MAP維數變化前后的查表運行結果正常。
選中可變維數MAP的某一行或某一列,選擇新增行或新增列命令,則可以在現有MAP數據基礎上增加一行或一列;當行數或列數增加到程序生成之初的行數或列數時,行數和列數不再增加;維數變化后的查表功能正常。圖9為增加MAP的行和列示意圖。

圖7 原始查表數據

圖8 刪除MAP的行和列示意圖

圖9 增加MAP的行和列示意圖
基于Simulink及ASAM標準,①可以實現可變維數查表功能開發;②可變維數MAP的最大維數為生成程序文件之初的初始維數,其維數可以根據需要,在維數可變范圍內隨意調整,而不影響查表結果準確性;③可變維數MAP能夠通過標定或數據合成滿足MAP維數調整需求,而不需要重新進行軟件集成,能夠為嵌入式軟件使用帶來很高的靈活性和便利性。