賈利,張維彪,楊薇,智海峰,劉濤,況涪洪,肖維
(中國(guó)北方發(fā)動(dòng)機(jī)研究所(天津),天津 300400)
發(fā)動(dòng)機(jī)控制系統(tǒng)Simulink模型中MAP模塊的開發(fā)
賈利,張維彪,楊薇,智海峰,劉濤,況涪洪,肖維
(中國(guó)北方發(fā)動(dòng)機(jī)研究所(天津),天津 300400)
針對(duì)發(fā)動(dòng)機(jī)控制系統(tǒng)Simulink模型自動(dòng)生成的代碼不支持MAP標(biāo)定和燒寫的問題,開發(fā)了基于S函數(shù)的MAP模塊。建立使用該MAP模塊的發(fā)動(dòng)機(jī)模型并生成基于飛思卡爾MPC5634M單片機(jī)的控制代碼。發(fā)動(dòng)機(jī)臺(tái)架試驗(yàn)結(jié)果證明,該MAP模塊生成的代碼可以實(shí)現(xiàn)MAP在線標(biāo)定和離線燒寫功能。
控制單元;代碼生成;在線標(biāo)定
隨著代碼生成工具的不斷發(fā)展,基于模型的設(shè)計(jì)方法被廣泛應(yīng)用于汽車控制系統(tǒng)的開發(fā)[1-5]。Matlab/Simulink是在汽車電子控制軟件開發(fā)領(lǐng)域應(yīng)用較廣泛的基于模型的設(shè)計(jì)軟件,提供了圖形化的編程環(huán)境,并支持根據(jù)模型來生成、測(cè)試和配置產(chǎn)品級(jí)的C代碼[6-13]。通過Simulink模型生成的發(fā)動(dòng)機(jī)電子控制軟件必須支持發(fā)動(dòng)機(jī)匹配標(biāo)定所需的在線標(biāo)定和離線燒寫功能,才能滿足發(fā)動(dòng)機(jī)電控系統(tǒng)開發(fā)的應(yīng)用需要[14-15]。目前國(guó)內(nèi)尚缺乏支持上述功能的Matlab/Simulink工具箱以及配套軟硬件產(chǎn)品,不能滿足產(chǎn)品級(jí)的控制器模型開發(fā)。因此,開發(fā)Simulink模型中支持標(biāo)定和燒寫功能的MAP模塊具有切實(shí)的應(yīng)用價(jià)值。
S函數(shù)是Simulink中系統(tǒng)函數(shù)(System Function)的簡(jiǎn)稱,是Simulink提供的用于功能擴(kuò)展的一種機(jī)制。S函數(shù)的運(yùn)作機(jī)制與Simulink的仿真流程一致(見圖1)。在每個(gè)仿真階段,Simulink內(nèi)核都會(huì)調(diào)用S函數(shù)中相應(yīng)的回調(diào)方法,執(zhí)行特定的任務(wù)。不同階段的任務(wù)包括:
1) 初始化 在仿真循環(huán)運(yùn)行之前,內(nèi)核引擎將初始化S函數(shù),包括初始化包含S函數(shù)信息的仿真結(jié)構(gòu)體SimStruct、設(shè)置輸入輸出口的信息、設(shè)置功能塊采樣時(shí)間、分配存儲(chǔ)空間;
2) 計(jì)算下一個(gè)采樣時(shí)間 如果模型是可變采樣時(shí)間步長(zhǎng),那么這一階段將計(jì)算下一個(gè)計(jì)算時(shí)間步長(zhǎng);
圖1 S函數(shù)的運(yùn)作流程
3) 計(jì)算輸出 在這個(gè)調(diào)用完成后,所有功能塊輸出端口在當(dāng)前時(shí)間步長(zhǎng)下更新完畢;
4) 更新離散狀態(tài)變量 在這個(gè)調(diào)用中,功能塊進(jìn)行每個(gè)時(shí)間步長(zhǎng)一次的動(dòng)作,例如,更新離散狀態(tài)變量。
上述各階段中,Simulink內(nèi)核會(huì)調(diào)用S函數(shù)中相應(yīng)的回調(diào)方法,Simulink規(guī)定了這些回調(diào)方法的名稱和功能,而具體實(shí)現(xiàn)則是根據(jù)實(shí)際需求來編寫。
1) 初始化階段,調(diào)用回調(diào)方法static void mdlInitializeSizes(SimStruct *S)設(shè)置模塊的各項(xiàng)參數(shù),如輸入、輸出、參數(shù)、仿真選項(xiàng)等的信息,以及回調(diào)方法static void mdlInitializeSampleTimes(SimStruct *S)規(guī)定模塊的采樣時(shí)間,如采樣時(shí)間值等;
2) 計(jì)算輸出階段,調(diào)用回調(diào)方法static void mdlOutputs(SimStruct *S,int_T tid)在每個(gè)仿真步長(zhǎng),計(jì)算功能塊的輸出,并將結(jié)果保存在S函數(shù)輸出信號(hào)數(shù)組;
3) 仿真結(jié)束階段,調(diào)用回調(diào)方法static void mdlTerminate(SimStruct *S)執(zhí)行仿真結(jié)束的相關(guān)操作,如釋放分配的內(nèi)存等,如果不要求進(jìn)行操作,這個(gè)函數(shù)可以為空;
4) 代碼生成階段,調(diào)用回調(diào)方法static void mdlRTW(SimStruct *S)將模型中的參數(shù)傳遞至目標(biāo)語言編輯器(Target Language Compiler,TLC),用于代碼生成。
在代碼生成階段,為了生成所需的代碼,還需要編寫與S函數(shù)配套的 TLC文件。在TLC文件中讀取S函數(shù)傳遞至目標(biāo)語言編輯器的參數(shù),并規(guī)定目標(biāo)語言編輯器生成指定的代碼。這些操作被定義在TLC文件中名為%function Outputs(block,system) Output函數(shù)中。
MAP可以分為單值MAP、曲線MAP、曲面MAP、一維數(shù)組MAP、二維數(shù)組MAP等多個(gè)類型。不同類型MAP模塊的軟件不盡相同,但方法和思路是一致的,這里以曲線MAP為例進(jìn)行MAP模塊的軟件設(shè)計(jì)。
曲線MAP模塊的功能是根據(jù)輸入的數(shù)值,查詢其在曲線MAP的x軸中的位置,進(jìn)行線性插值得到相應(yīng)的y軸數(shù)值,作為輸出。其中,輸入為模塊的輸入信號(hào),輸出為模塊的輸出信號(hào),x軸和y軸為模塊的參數(shù),即在Matlab中定義的數(shù)值向量。
MAP模塊的軟件設(shè)計(jì),是對(duì)S函數(shù)中各階段的回調(diào)函數(shù)以及TLC文件進(jìn)行軟件設(shè)計(jì),使其完成上述功能。首先,在初始化階段的mdlInitializeSizes回調(diào)方法中,設(shè)置模塊有2個(gè)輸入?yún)?shù),不含有連續(xù)和離散狀態(tài)參數(shù),有1個(gè)維數(shù)為1數(shù)據(jù)類型與x軸一致的輸入信號(hào),有1個(gè)維數(shù)為1數(shù)據(jù)類型與y軸一致的輸出信號(hào),采樣時(shí)間個(gè)數(shù)為1,不含有工作向量,使用默認(rèn)仿真選項(xiàng)。在mdlInitializeSampleTimes回調(diào)方法中,設(shè)置模塊的仿真步長(zhǎng)繼承模型的仿真步長(zhǎng)。初始化流程(見圖2)。
圖2 mdlInitializeSizes初始化流程
在計(jì)算輸出階段的mdlOutputs回調(diào)方法中,讀取輸入信號(hào)的數(shù)據(jù)類型以及儲(chǔ)存值,根據(jù)該類型對(duì)x軸進(jìn)行查表和對(duì)y軸進(jìn)行插值,得到輸出信號(hào)的儲(chǔ)存值,再讀取輸出信號(hào)的數(shù)據(jù)類型,根據(jù)該類型計(jì)算模塊的實(shí)際輸出。計(jì)算輸出的流程見圖3。
圖3 mdlOutputs計(jì)算流程
在仿真結(jié)束階段的mdlTerminate回調(diào)方法中,不進(jìn)行操作。在代碼生成階段的mdlRTW回調(diào)方法中,將模塊參數(shù)的數(shù)據(jù)類型等信息傳遞至目標(biāo)語言編輯器用于生成代碼。在TLC文件的Outputs函數(shù)中,讀取模塊參數(shù)信息,并規(guī)定生成函數(shù)調(diào)用代碼,例如當(dāng)輸入、輸出信號(hào)類型均為無符號(hào)32位時(shí),Outputs函數(shù)中規(guī)定生成代碼的語句為:
%
設(shè)計(jì)完成的曲線MAP模塊以及單值MAP模塊、曲面MAP模塊、一維數(shù)組MAP模塊、二維數(shù)組MAP模塊見圖4。
圖4 MAP模塊
使用上述MAP模塊和Simulink自帶模塊,開發(fā)柴油-天然氣雙燃料發(fā)動(dòng)機(jī)控制模型(見圖5)。
圖5 發(fā)動(dòng)機(jī)控制模型
通過Simulink自動(dòng)代碼生成,生成基于飛思卡爾MPC5634M單片機(jī)的發(fā)動(dòng)機(jī)控制代碼,并在一臺(tái)WP10發(fā)動(dòng)機(jī)上進(jìn)行臺(tái)架試驗(yàn)。
選取發(fā)動(dòng)機(jī)工況點(diǎn)1 347 r/min,359 N·m,通過在線標(biāo)定來調(diào)節(jié)柴油噴油定時(shí)MAP參數(shù),測(cè)量發(fā)動(dòng)機(jī)排氣中污染物NOx排放,結(jié)果見圖6。可以看出,隨著噴油定時(shí)MAP參數(shù)的改變,發(fā)動(dòng)機(jī)缸內(nèi)燃燒狀態(tài)隨之變化,導(dǎo)致NOx排放變化。證明上述MAP模塊生成的代碼可以實(shí)現(xiàn)MAP在線標(biāo)定功能。
然后使用數(shù)據(jù)燒寫工具將發(fā)動(dòng)機(jī)性能優(yōu)化后的MAP燒寫至單片機(jī)中,再次進(jìn)行試驗(yàn),發(fā)動(dòng)機(jī)性能參數(shù)與在線標(biāo)定時(shí)一致,說明燒寫的MAP數(shù)據(jù)與在線標(biāo)定的MAP數(shù)據(jù)相同。證明上述MAP模塊生成的代碼可以實(shí)現(xiàn)MAP離線燒寫功能。
圖6 NOx排放隨噴油定時(shí)的變化
在分析Simulink中S函數(shù)工作原理的基礎(chǔ)上,開發(fā)了基于S函數(shù)的發(fā)動(dòng)機(jī)控制用MAP模塊。使
用該MAP模塊建立了柴油-天然氣發(fā)動(dòng)機(jī)控制模型,并通過Simulink自動(dòng)生成基于飛思卡爾MPC5634M單片機(jī)的控制算法代碼。使用該控制算法進(jìn)行了發(fā)動(dòng)機(jī)臺(tái)架試驗(yàn)驗(yàn)證,試驗(yàn)結(jié)果證明,該MAP模塊生成的代碼可以完全實(shí)現(xiàn)MAP在線標(biāo)定和離線燒寫功能,滿足產(chǎn)品級(jí)模型開發(fā)的匹配標(biāo)定,可以用于發(fā)動(dòng)機(jī)性能開發(fā),具有切實(shí)的應(yīng)用價(jià)值。
[1] 劉巨江.基于模型的高壓共軌柴油機(jī)扭矩算法研究[D].杭州:浙江大學(xué),2007.
[2] 周廣猛,劉瑞林,李駿,等.基于模型的電控發(fā)動(dòng)機(jī)標(biāo)定技術(shù)[J].汽車技術(shù),2011(1):1-5.
[3] 宋秦中.高壓共軌柴油機(jī)控制策略的研究[J].大連:大連理工大學(xué), 2007.
[4] 方燁.基于模型的高壓共軌柴油機(jī)控制策略研究與臺(tái)架優(yōu)化[D].杭州:浙江大學(xué),2017.
[5] 周海濤,閆萍,王新權(quán).電控柴油機(jī)平均值模型建模研究[J].柴油機(jī),2010,32(2):12-17.
[6] 姚俊.Simulink建模與仿真算法語言動(dòng)態(tài)仿真[M].西安:西安電子科技大學(xué)出版社,2002.
[7] 劉福水,仇滔,劉興華,等.基于模型的電控柴油機(jī)標(biāo)定技術(shù)[J].車用發(fā)動(dòng)機(jī),2005(6):1-4.
[8] 劉孟祥.基于Simulink的柴油機(jī)及其控制系統(tǒng)的建模與仿真研究[D].長(zhǎng)沙:湖南大學(xué),2001.
[9] 朱婉.基于Simulink的柴油機(jī)高壓共軌噴油系統(tǒng)建模與仿真[D].合肥:合肥工業(yè)大學(xué),2015.
[10] 楊向忠,安錦文,崔文革.嵌入式自動(dòng)代碼生成技術(shù)應(yīng)用研究[J].彈箭與制導(dǎo)學(xué)報(bào),2008,28(3):250-253.
[11] 邱寶梅,左文英,王鳳娟.基于Simulink/RTW的汽車電子控制系統(tǒng)的研究[J].計(jì)算機(jī)測(cè)量與控制,2011,19(5):1086-1088.
[12] 嚴(yán)雨,單沖.基于Simulink和RTW的底層驅(qū)動(dòng)軟件集成開發(fā)[M].北京:北京理工大學(xué)出版社,2013.
[13] Mathworks.Matlab R2013b Help[M].[S.l.]:[s.n.],2013.
[14] 王科杰.基于模型的高壓共軌柴油機(jī)標(biāo)定技術(shù)研究[D].杭州:浙江大學(xué),2016.
[15] 孟長(zhǎng)江,褚全紅,張煒,等.CCP協(xié)議在發(fā)動(dòng)機(jī)匹配標(biāo)定平臺(tái)的應(yīng)用[J].現(xiàn)代車用動(dòng)力,2008(1):34-38.
DevelopmentofMAPModuleinSimulinkModelofEngineControlSystem
JIA Li,ZHANG Weibiao,YANG Wei,ZHI Haifeng,LIU Tao,KUANG Fuhong,XIAO Wei
(China North Engine Research Institute(Tianjin),Tianjin 300400,China)
The codes of Simulink model for engine control system could not support the calibration and programming of MAP and MAP module based on S-function was hence developed. Then the corresponding engine model was built and the control codes applied to Freescale MPC5634M was generated. The test results show that the MAP module supports the online calibration and offline programming.
control unit;code generation;online calibration
袁曉燕]
2017-05-18;
2017-12-12
賈利(1979—),男,副研究員,本科,主要研究方向發(fā)動(dòng)機(jī)控制策略和算法及HIL測(cè)試等;jiali7901@163.com。
10.3969/j.issn.1001-2222.2017.06.012
TP211
B
1001-2222(2017)06-0062-03