李捷輝, 湯萬飛, 尹必峰
(江蘇大學(xué)汽車與交通工程學(xué)院, 江蘇 鎮(zhèn)江 212013)
?
·設(shè)計(jì)計(jì)算·
基于Simulink的小型汽油機(jī)ECU底層驅(qū)動(dòng)開發(fā)
李捷輝, 湯萬飛, 尹必峰
(江蘇大學(xué)汽車與交通工程學(xué)院, 江蘇 鎮(zhèn)江 212013)
針對小型汽油機(jī)電控系統(tǒng),選擇freescale MC9S12P128芯片作為微處理器,使用Simulink軟件模塊化的開發(fā)方式,設(shè)計(jì)出適用于小型汽油機(jī)ECU的通用底層驅(qū)動(dòng)模塊。該方式可使底層驅(qū)動(dòng)軟件與發(fā)動(dòng)機(jī)的控制軟件完全獨(dú)立,并具有便于移植和調(diào)試等優(yōu)點(diǎn)。對電控系統(tǒng)底層驅(qū)動(dòng)軟件進(jìn)行了輸入信號(hào)采集試驗(yàn)、硬件在環(huán)試驗(yàn)和發(fā)動(dòng)機(jī)臺(tái)架試驗(yàn),試驗(yàn)結(jié)果表明,開發(fā)的底層驅(qū)動(dòng)模塊程序可靠性好,實(shí)時(shí)性和快速響應(yīng)能力強(qiáng),滿足發(fā)動(dòng)機(jī)控制需求。
小型汽油機(jī); 底層驅(qū)動(dòng)模塊; 電控系統(tǒng); 軟件開發(fā)
通用小型汽油機(jī)具有結(jié)構(gòu)緊湊、性能可靠、可移動(dòng)性好以及維修方便等優(yōu)點(diǎn),被廣泛用于園藝修剪、應(yīng)急發(fā)電、農(nóng)業(yè)灌溉、小型工程機(jī)械等領(lǐng)域[1]。隨著我國小型汽油機(jī)產(chǎn)量的迅速增長[2],能耗和排放增加,電控技術(shù)成為解決這些問題的最有效方法之一。為使電控小型汽油機(jī)具有強(qiáng)動(dòng)力、低油耗、低排放和低噪聲等性能優(yōu)點(diǎn),其電控系統(tǒng)不僅需要完善的控制策略,同時(shí)性能可靠、實(shí)時(shí)性強(qiáng)的ECU底層驅(qū)動(dòng)也是必不可少的一部分[3]。底層驅(qū)動(dòng)程序是發(fā)動(dòng)機(jī)ECU 控制程序?qū)嵤┑幕A(chǔ),其實(shí)時(shí)性、可靠性和快速響應(yīng)能力是影響發(fā)動(dòng)機(jī)性能的重要因素,因此采用Simulink軟件模塊化的開發(fā)方式,開發(fā)一整套便于調(diào)試和移植的ECU底層驅(qū)動(dòng)程序,對小型汽油機(jī)電控系統(tǒng)的開發(fā)具有重要意義。
底層驅(qū)動(dòng)程序是發(fā)動(dòng)機(jī)電控系統(tǒng)的重要組成部分,是連接軟件和硬件的橋梁。設(shè)計(jì)底層驅(qū)動(dòng)程序時(shí),首先根據(jù)發(fā)動(dòng)機(jī)控制系統(tǒng)的總體流程來統(tǒng)計(jì)其需要的硬件資源,然后通過硬件資源確定ECU所選用的微控制器芯片類型和傳感器、執(zhí)行器等零部件,由此確定發(fā)動(dòng)機(jī)所需設(shè)計(jì)的驅(qū)動(dòng)模塊。
1.1 ECU硬件資源統(tǒng)計(jì)
小型汽油機(jī)電控系統(tǒng)的控制流程:傳感器采集發(fā)動(dòng)機(jī)各工況的信號(hào)參數(shù),由控制程序?qū)π盘?hào)進(jìn)行處理,并向各執(zhí)行器發(fā)出相應(yīng)的控制信號(hào),控制汽油機(jī)平穩(wěn)運(yùn)行[4]。電控系統(tǒng)從硬件的總體結(jié)構(gòu)出發(fā),主要由輸入電路、微控制器電路以及輸出電路組成(見圖1)。輸入電路接收各傳感器模擬信號(hào),并對其進(jìn)行處理,轉(zhuǎn)換為數(shù)字信號(hào);輸出電路接收到微控制器的信號(hào)后驅(qū)動(dòng)執(zhí)行器工作。由硬件資源可知底層驅(qū)動(dòng)模塊包括輸入與輸出模塊、齒中斷模塊、噴油模塊和點(diǎn)火模塊。其中輸入與輸出模塊分為模擬量輸入模塊、數(shù)字量輸入模塊和數(shù)字量輸出模塊,齒中斷模塊分為輸入捕捉模塊和定時(shí)器時(shí)間輸入模塊。
圖1 小型汽油機(jī)ECU結(jié)構(gòu)框圖
1.2 ECU微控制器選型
由小型汽油機(jī)電控系統(tǒng)硬件資源確定主芯片類型和各傳感器、執(zhí)行器與主芯片連接的通道數(shù),并對底層驅(qū)動(dòng)程序進(jìn)行具體設(shè)置。其電控系統(tǒng)選用MC9S12P128芯片作為MCU,采用64引腳、LQFP(Low-profile Quad Flat Package)形式封裝。該芯片的主要功能:集成帶有奇偶校驗(yàn)功能的128 kb flash,其中包含4 kb data flash;集成6 kb靜態(tài)內(nèi)存;帶有內(nèi)部過濾器的鎖相環(huán)倍頻器;4~16 MHz振幅可控皮爾斯振蕩器;定時(shí)器模塊提供8通道16位輸入捕捉、輸出比較、計(jì)數(shù)器、脈沖累加功能;6個(gè)8位PWM通道和10通道12位分辨率模數(shù)轉(zhuǎn)換器;串行外圍設(shè)備接口、串行通信接口,支持LIN總線通信和1個(gè)控制器局域網(wǎng)模塊[5-7]。該芯片不僅能滿足小型汽油機(jī)電控系統(tǒng)的功能要求,而且具有價(jià)格低廉、性能可靠和通用性高等優(yōu)點(diǎn)。
1.3 ECU軟件組成
小型汽油機(jī)電控系統(tǒng)軟件包括底層驅(qū)動(dòng)程序和發(fā)動(dòng)機(jī)控制程序。發(fā)動(dòng)機(jī)控制程序是電控系統(tǒng)的核心,但控制程序需要通過底層驅(qū)動(dòng)程序方能實(shí)現(xiàn)對傳感器和執(zhí)行器的控制。底層驅(qū)動(dòng)程序是整個(gè)發(fā)動(dòng)機(jī)系統(tǒng)控制軟件的基礎(chǔ)部分,它承擔(dān)著整個(gè)系統(tǒng)軟件的調(diào)度和控制器輸入輸出的工作,即調(diào)度各功能軟件模塊,控制整個(gè)系統(tǒng)各部件之間協(xié)調(diào)工作,包括傳感器、執(zhí)行器、控制器內(nèi)部的電路模塊,同時(shí)還可實(shí)現(xiàn)輸入輸出功能[8]。雖然底層驅(qū)動(dòng)軟件往往被主控制軟件開發(fā)者所忽視或被專業(yè)開發(fā)人員所固化隱藏,但它直接影響到控制系統(tǒng)可靠性、實(shí)時(shí)性和快速響應(yīng)能力。
采用傳統(tǒng)手寫C語言代碼的方式設(shè)計(jì)底層驅(qū)動(dòng)程序不僅費(fèi)時(shí)、費(fèi)力、易錯(cuò),還不便于調(diào)試和移植。由于底層驅(qū)動(dòng)代碼對于發(fā)動(dòng)機(jī)控制系統(tǒng)來說相對固定,無需經(jīng)常改動(dòng),所以利用Simulink中S-Function將底層驅(qū)動(dòng)封裝成模塊型式,可直接拖動(dòng)到模型中,這種圖形化界面配置方式具有操作簡單、便于調(diào)試和移植、參與整體代碼生成、實(shí)現(xiàn)算法與底層驅(qū)動(dòng)的無縫集成等優(yōu)點(diǎn)[9-10]。
本研究采用Simulink軟件模塊化的設(shè)計(jì)方式,針對小型通用汽油機(jī)電控系統(tǒng)開發(fā)底層驅(qū)動(dòng)程序。開發(fā)底層驅(qū)動(dòng)程序首先根據(jù)Simulink軟件編譯底層驅(qū)動(dòng)模塊的工作原理,制定編寫底層驅(qū)動(dòng)模塊的流程,主要流程包括:編寫C MEX S-Function文件、編寫TLC腳本文件和封裝驅(qū)動(dòng)模塊。然后通過設(shè)計(jì)流程開發(fā)底層驅(qū)動(dòng)模塊。在設(shè)計(jì)小型汽油機(jī)電控系統(tǒng)底層驅(qū)動(dòng)模塊時(shí),根據(jù)電控系統(tǒng)運(yùn)行時(shí)執(zhí)行任務(wù)的先后循序設(shè)計(jì)所需底層驅(qū)動(dòng)程序,其中包括輸入與輸出模塊、齒中斷模塊、噴油模塊和點(diǎn)火模塊。這些驅(qū)動(dòng)模塊分別用于驅(qū)動(dòng)傳感器信號(hào)采集、電磁閥與故障燈控制、捕捉齒信號(hào)進(jìn)行轉(zhuǎn)速計(jì)算與相位判斷、驅(qū)動(dòng)噴油器和點(diǎn)火線圈。最后將設(shè)計(jì)完成的底層驅(qū)動(dòng)模塊進(jìn)行硬件在環(huán)測試和臺(tái)架試驗(yàn)測試,驗(yàn)證底層驅(qū)動(dòng)模塊工作的實(shí)時(shí)性、可靠性和快速響應(yīng)能力。
2.1 底層驅(qū)動(dòng)模塊軟件設(shè)計(jì)流程
由Simulink軟件編譯驅(qū)動(dòng)模塊的工作原理可知,設(shè)計(jì)底層驅(qū)動(dòng)模塊主要由編寫C MEX S-Function、編寫TLC腳本文件和封裝模塊三步組成。
1) C MEX S-Function編寫
編寫S-Function用來擴(kuò)展Simulink環(huán)境性能,可使用C語言編寫,但需要用MEX工具編譯后方可使用。S-Function文件主要分為三部分:文件頭部、回調(diào)函數(shù)和文件尾部。首先在文件頭部定義函數(shù)名和函數(shù)級別以及加入必要的頭文件。其次通過編寫回調(diào)函數(shù)來定義參數(shù)個(gè)數(shù)、輸入和輸出口的個(gè)數(shù)、采樣時(shí)間等。其中主要的回調(diào)函數(shù)包括:mdlInitializeSizes函數(shù)用于指定SimStruct中各參數(shù)的值,如模塊輸入或輸出個(gè)數(shù);mdlInitializeSampleTimes函數(shù)用于指定模塊的采樣時(shí)間;mdlOutputs函數(shù)用于計(jì)算模塊輸出;mdlTerminate函數(shù)用于設(shè)置仿真終止時(shí)需要執(zhí)行的動(dòng)作[11]。最后編寫文件尾部作為MEX文件與Real-Time Workshop 的接口。
2) TLC腳本文件編寫
目標(biāo)語言編譯(Target Language Compiler,TLC)文件的編寫主要包括兩部分。首先需要定義文件名,必須和S-Function文件中的函數(shù)名一致,之后通過函數(shù)設(shè)置模塊的代碼生成形式。主要使用的函數(shù)有:BlockTypeSetup(block, system)函數(shù)用于定義全局變量、生成部分函數(shù)聲明或初始化代碼;Start(block, system)函數(shù)用于初始化代碼;Outputs(block, system)函數(shù)用于生成模塊執(zhí)行代碼[12]。
3) 封裝模塊
模塊封裝的作用是為mdlRTW函數(shù)中定義的參數(shù)制作配置界面,并對模塊外觀進(jìn)行修飾,以增強(qiáng)模塊的易用性。封裝過程主要包括填寫S-Function函數(shù)名、指定mdlRTW回調(diào)函數(shù)中定義的參數(shù)和對模塊外觀進(jìn)行修飾。
完成底層驅(qū)動(dòng)模塊軟件流程設(shè)計(jì)后,根據(jù)小型汽油機(jī)電控系統(tǒng)上電運(yùn)行工作原理,分別進(jìn)行MCU初始化、輸入與輸出、齒中斷及噴油與點(diǎn)火等模塊驅(qū)動(dòng)程序設(shè)計(jì)。
2.2 MCU初始化模塊
MCU初始化模塊用于設(shè)置MCU總線頻率,由于MC9S12P128芯片可設(shè)置的最高總線頻率為32 MHz,為了提高芯片計(jì)算能力,所以通過外部晶振鎖相環(huán)將總線頻率設(shè)置為32 MHz。為提高底層軟件的通用性和調(diào)試的便捷性,設(shè)置了8 MHz和16 MHz兩種外部晶振,在自動(dòng)生成代碼時(shí),RTW會(huì)根據(jù)不同的選擇生成不同的總線時(shí)鐘配置代碼[13]。該模塊最后需要設(shè)定完成代碼生成后的動(dòng)作,分別包括:Build,指代碼生成后自動(dòng)調(diào)用編譯器完成代碼編譯;Run,指編譯后自動(dòng)下載到目標(biāo)硬件ECU中;Null,指僅生成C語言代碼,不調(diào)用編譯器。
2.3 輸入與輸出模塊
輸入與輸出底層驅(qū)動(dòng)模塊包括:模擬量輸入模塊、數(shù)字量輸入模塊和數(shù)字量輸出模塊。模擬量輸入模塊的功能是對AD模塊進(jìn)行初始化設(shè)置和輸出指定通道的AD轉(zhuǎn)換值。由于算法模型中需要多個(gè)模擬量輸入模塊,但模塊的初始化代碼只需執(zhí)行一遍,為此需定義一個(gè)全局變量用于控制初始化代碼只生成一遍。AD模塊初始化設(shè)置如下:
void ADC _Init(void)
{
ATDCTL0 = 0x05; // 第5通道反轉(zhuǎn)
ATDCTL1= 0x50; // 設(shè)置采樣精度
ATDCTL2 =0x02; // 清除標(biāo)志位
ATDCTL3= 0xB0; // 設(shè)置轉(zhuǎn)換通道數(shù)
ATDCTL4= 0x33; // 設(shè)置時(shí)鐘
ATDCTL5 = 0x30; // 設(shè)置采樣方式
}
模擬量輸入模塊只輸出一個(gè)通道轉(zhuǎn)換值,數(shù)據(jù)類型為無符號(hào)整型,并且需要設(shè)定打開相應(yīng)的通道采集模擬量信號(hào)。以機(jī)體溫度采集驅(qū)動(dòng)模塊為例(見圖2),機(jī)體溫度采集驅(qū)動(dòng)模塊采集到小型汽油機(jī)的機(jī)體溫度信號(hào),將該模擬量信號(hào)轉(zhuǎn)化為數(shù)字量信號(hào)輸出給信號(hào)濾波模塊filter5,該信號(hào)濾波模塊采用算數(shù)平均濾波法對機(jī)體溫度信號(hào)進(jìn)行處理,可減少其他信號(hào)的干擾,最后得到汽油機(jī)的機(jī)體溫度信號(hào)。
數(shù)字量輸入模塊用來接收MC33812驅(qū)動(dòng)芯片故障反饋信號(hào),包括噴油故障、點(diǎn)火故障和油泵繼電器故障;數(shù)字量輸出模塊用來控制故障燈和油泵繼電器。輸入與輸出的數(shù)據(jù)類型均為布爾量。
圖2 機(jī)體溫度采集驅(qū)動(dòng)模塊
2.4 齒中斷模塊
齒中斷模塊包括輸入捕捉模塊和定時(shí)器時(shí)間輸入模塊。輸入捕捉模塊用于產(chǎn)生周期性的齒中斷任務(wù)。該模塊只有一個(gè)輸出端口,不是用來傳遞數(shù)據(jù),而是在捕捉到齒信號(hào)上升沿后調(diào)用function-call子系統(tǒng)。輸入捕捉模塊的主要設(shè)置如下:
%function Start(block, system) Output
TSCR1=0x90; //定時(shí)器使能、清除標(biāo)志位
TSCR2=0x05; //設(shè)置時(shí)鐘周期
TIOS=0x80; //通道7為輸入捕捉方式
TCTL3=0x40; //設(shè)置捕捉上升沿方式
TIE=0x80; // 允許通道7中斷
%endfunction
定時(shí)器時(shí)間輸入模塊的功能是記錄定時(shí)器的時(shí)間,程序中需要輸出每次輸入捕捉模塊捕捉到齒信號(hào)的時(shí)刻,由此可以判斷曲軸相位和計(jì)算發(fā)動(dòng)機(jī)轉(zhuǎn)速。
2.5 噴油與點(diǎn)火模塊
設(shè)計(jì)的噴油與點(diǎn)火底層模塊用于驅(qū)動(dòng)單個(gè)噴油器和點(diǎn)火器,使用定時(shí)器模塊設(shè)定0通道和2通道為輸出比較功能。模塊分別定義3個(gè)輸入端口,分別為使能標(biāo)志、噴油(點(diǎn)火)信號(hào)起始時(shí)刻和噴油脈寬(點(diǎn)火閉合時(shí)間),數(shù)據(jù)輸入類型分別為布爾量、無符號(hào)整型、無符號(hào)整型。模塊需要在子系統(tǒng)中調(diào)用,所以采樣時(shí)間設(shè)置為繼承。為了保證數(shù)據(jù)能及時(shí)傳遞給底層模塊,需要設(shè)置每個(gè)輸入端口信號(hào)直接饋通。TLC文件中設(shè)置定時(shí)器通道為輸出比較模式,并先利用前兩個(gè)輸入信號(hào)控制驅(qū)動(dòng)信號(hào)起始時(shí)刻,然后通過一個(gè)中斷服務(wù)程序和第3個(gè)輸入信號(hào)控制噴油或點(diǎn)火信號(hào)持續(xù)時(shí)間。以噴油底層驅(qū)動(dòng)模塊為例,其對定時(shí)器模塊的設(shè)置如下:
TIOS_IOS0 = 1; //通道0為輸出比較方式
if(Enable)
{
OCPD_OCPD0 = 0;
TCTL2_OM0 = 1;
TCTL2_OL0 = 1; //輸出高電平
TC0 = Injection Time; //設(shè)置噴油始點(diǎn)
TIE_C0I = 1; //允許輸出比較中斷
}
Else
{
TIE_C0I = 0; //禁止中斷
OCPD_OCPD0 = 1; //禁止引腳
PTT_PTT0 = 0;
}
輸出比較中斷設(shè)置如下:
void interrupt 8 Fuel_Control_Isr(void)
{
TC0 = TC0+Fuel Pulse; //設(shè)置噴油脈寬
TCTL2_OM0 = 1;
TCTL2_OL0 = 0; //輸出低電平
TIE_C0I = 0; //禁止中斷
}
為保證小型汽油機(jī)電控系統(tǒng)底層驅(qū)動(dòng)模塊工作的實(shí)時(shí)性、可靠性和快速響應(yīng)能力,進(jìn)行試驗(yàn)研究。試驗(yàn)分為三部分:首先驗(yàn)證模擬量輸入模塊的底層驅(qū)動(dòng)程序;其次進(jìn)行硬件在環(huán)測試,驗(yàn)證底層驅(qū)動(dòng)程序的完整性;最后選用170F電控汽油機(jī)進(jìn)行臺(tái)架試驗(yàn)。
3.1 輸入模塊底層驅(qū)動(dòng)程序驗(yàn)證
使用信號(hào)發(fā)生器、齒盤、油門踏板和示波器等模擬發(fā)動(dòng)機(jī)運(yùn)行時(shí)產(chǎn)生的信號(hào)。其中信號(hào)發(fā)生器用來模擬發(fā)動(dòng)機(jī)各傳感器輸出電壓信號(hào);齒盤由電機(jī)驅(qū)動(dòng),結(jié)合曲軸位置傳感器模擬發(fā)動(dòng)機(jī)運(yùn)轉(zhuǎn)時(shí)產(chǎn)生的磁電信號(hào);踏板可以控制電機(jī)的轉(zhuǎn)速,以此模擬發(fā)動(dòng)機(jī)轉(zhuǎn)速的變化;示波器用來采集各驅(qū)動(dòng)信號(hào)。
試驗(yàn)首先通過采集傳感器信號(hào)來驗(yàn)證模擬量輸入模塊的底層驅(qū)動(dòng)程序,采集的傳感器信號(hào)包括蓄電池電壓(vbat)、節(jié)氣門位置(tps)、機(jī)體溫度(etemp)、進(jìn)氣壓力(map)和進(jìn)氣溫度(atemp)信號(hào)。測試過程如下:
1) 將傳感器信號(hào)對應(yīng)的ECU引腳與模擬信號(hào)發(fā)生器連接;
2) 將底層驅(qū)動(dòng)模塊與測試軟件結(jié)合,生成C語言代碼下載到ECU中;
3) 將信號(hào)發(fā)生器旋鈕從最小旋到最大,通過Codewarrior實(shí)時(shí)監(jiān)測所采集到的數(shù)據(jù)。
傳感器信號(hào)采集結(jié)果見圖3。在信號(hào)發(fā)生器電壓從0 V增大到+5 V過程中,采集到的數(shù)據(jù)除vbat外其余數(shù)據(jù)都從0增大到4 095,有極小的誤差是由于信號(hào)發(fā)生器的不精確和ECU電路的設(shè)計(jì)引起的,屬于正常誤差范圍,信號(hào)的變化規(guī)律與理論值基本一致。ECU直接由穩(wěn)壓電源供電,因此測試中vbat的值保持不變。說明模擬量輸入模塊功能正常,能準(zhǔn)確地采集各傳感器的信號(hào)。
圖3 傳感器信號(hào)采集
3.2 硬件在環(huán)測試
通過對底層驅(qū)動(dòng)輸入量精確測試,保證了發(fā)動(dòng)機(jī)輸入信號(hào)的可靠性和實(shí)時(shí)性。為驗(yàn)證控制系統(tǒng)能否準(zhǔn)確輸出驅(qū)動(dòng)信號(hào),編制了專用驗(yàn)證程序進(jìn)行硬件在環(huán)測試。驗(yàn)證模型通過周期性任務(wù)調(diào)用噴油、點(diǎn)火驅(qū)動(dòng)任務(wù),用示波器采集噴油與點(diǎn)火驅(qū)動(dòng)信號(hào)波形。分別改變噴油與點(diǎn)火底層模塊的輸入數(shù)據(jù),包括噴油信號(hào)起始時(shí)刻偏移量、噴油脈寬、點(diǎn)火信號(hào)起始時(shí)刻偏移量、點(diǎn)火閉合時(shí)間。通過對采集的驅(qū)動(dòng)信號(hào)波形的變化進(jìn)行比較分析,驗(yàn)證噴油與點(diǎn)火底層驅(qū)動(dòng)程序的準(zhǔn)確性。
模型中噴油與點(diǎn)火任務(wù)的周期為20 ms,分別用IT,F(xiàn)P,ST,SD表示噴油信號(hào)起始時(shí)刻偏移量、噴油脈寬、點(diǎn)火信號(hào)起始時(shí)刻偏移量、點(diǎn)火閉合時(shí)間。第1組數(shù)據(jù):IT=1 000,F(xiàn)P=5 000,ST=1 000,SD=1 500;第2組數(shù)據(jù):IT=1 000,F(xiàn)P=8 000,ST=4 000,SD=3 000。采集到的波形見圖4。上方波形為噴油信號(hào),下方波形為點(diǎn)火信號(hào),由圖可見,各信號(hào)的頻率均為50 Hz,與模型設(shè)置的20 ms任務(wù)周期一致,證明了齒中斷模塊的準(zhǔn)確性。第1組數(shù)據(jù)中IT和ST相等,所以噴油與點(diǎn)火信號(hào)的起始時(shí)刻相同。第2組數(shù)據(jù)中ST大于IT,所以點(diǎn)火信號(hào)比噴油信號(hào)的起始時(shí)刻延遲。此外,F(xiàn)P和SD的改變均會(huì)引起對應(yīng)輸出波形的占空比的變化,表明噴油與點(diǎn)火底層驅(qū)動(dòng)模塊能夠準(zhǔn)確對輸出數(shù)據(jù)作出反應(yīng),可以實(shí)現(xiàn)對發(fā)動(dòng)機(jī)噴油與點(diǎn)火的精確控制。
圖4 噴油與點(diǎn)火模塊檢測波形
3.3 臺(tái)架試驗(yàn)測試
選用170F電控汽油機(jī)進(jìn)行臺(tái)架試驗(yàn)對底層驅(qū)動(dòng)程序進(jìn)一步驗(yàn)證。分別選取發(fā)動(dòng)機(jī)常用工況,即穩(wěn)態(tài)工況、瞬態(tài)工況和起動(dòng)工況,使用示波器采集發(fā)動(dòng)機(jī)不同工況下曲軸位置信號(hào)、進(jìn)氣壓力信號(hào)、噴油驅(qū)動(dòng)信號(hào)和點(diǎn)火驅(qū)動(dòng)信號(hào)等,通過這些驅(qū)動(dòng)信號(hào)之間的關(guān)系分析底層驅(qū)動(dòng)程序的可靠性和快速響應(yīng)能力。
首先,發(fā)動(dòng)機(jī)在穩(wěn)態(tài)下,選取轉(zhuǎn)速為2 000 r/min的空載工況進(jìn)行臺(tái)架試驗(yàn)測試。如圖5所示,上方為噴油器低端驅(qū)動(dòng)信號(hào),下方為進(jìn)氣壓力信號(hào),每一個(gè)工作循環(huán)內(nèi),噴油器噴油時(shí)刻和進(jìn)氣壓力開始減小時(shí)刻一致,并且一個(gè)工作循環(huán)內(nèi)只噴一次油,驗(yàn)證了噴油底層驅(qū)動(dòng)程序可靠性好、快速響應(yīng)能力強(qiáng)。
圖5 噴油與進(jìn)氣壓力信號(hào)
圖6示出發(fā)動(dòng)機(jī)2 000 r/min,空載工況時(shí)的噴油與點(diǎn)火驅(qū)動(dòng)信號(hào)的相位關(guān)系,兩者是近似交替地工作,二者相差的角度約為280°,與圖5所示情況基本一致。并且一個(gè)工作循環(huán)內(nèi)完成一次噴油和點(diǎn)火,符合控制軟件中設(shè)計(jì)的任務(wù)執(zhí)行目標(biāo),驗(yàn)證了底層驅(qū)動(dòng)程序的可靠性。
圖6 噴油與點(diǎn)火驅(qū)動(dòng)信號(hào)
其次,選取瞬態(tài)工況進(jìn)行底層驅(qū)動(dòng)試驗(yàn)測試。圖7示出發(fā)動(dòng)機(jī)轉(zhuǎn)速從1 500 r/min突然增加到2 800 r/min時(shí)的驅(qū)動(dòng)信號(hào)波形,上方為噴油器低端驅(qū)動(dòng)信號(hào),下方為曲軸位置信號(hào)。由圖可知,當(dāng)發(fā)動(dòng)機(jī)噴油脈寬突然增加時(shí),曲軸位置信號(hào)波形周期隨之減小,表示發(fā)動(dòng)機(jī)轉(zhuǎn)速增加。曲軸位置信號(hào)波形周期隨噴油脈寬增加而減小,驗(yàn)證了底層驅(qū)動(dòng)程序的快速響應(yīng)能力強(qiáng)。
圖7 瞬態(tài)工況驅(qū)動(dòng)信號(hào)
最后,選取發(fā)動(dòng)機(jī)起動(dòng)工況進(jìn)行底層驅(qū)動(dòng)試驗(yàn)驗(yàn)證。圖8示出噴油器低端驅(qū)動(dòng)信號(hào)和曲軸位置信號(hào)。由圖可知,發(fā)動(dòng)機(jī)在剛開始起動(dòng)時(shí)由于轉(zhuǎn)速較低(曲軸位置信號(hào)波形周期較長),未達(dá)到起動(dòng)要求,沒有低端驅(qū)動(dòng)信號(hào),噴油器不工作。當(dāng)發(fā)動(dòng)機(jī)轉(zhuǎn)速增大(曲軸位置信號(hào)波形周期減小),出現(xiàn)噴油器低端驅(qū)動(dòng)信號(hào),噴油器開始工作。兩種波形變化與發(fā)動(dòng)機(jī)控制策略相一致,進(jìn)一步驗(yàn)證底層驅(qū)動(dòng)程序的可靠性較好。
圖8 起動(dòng)工況驅(qū)動(dòng)信號(hào)
根據(jù)底層驅(qū)動(dòng)模塊的設(shè)計(jì)思想,采用Simulink軟件模塊化的開發(fā)方式,針對小型汽油機(jī)電控系統(tǒng)設(shè)計(jì)硬件底層驅(qū)動(dòng)軟件流程和驅(qū)動(dòng)模塊。主要模塊包括輸入與輸出模塊、齒中斷模塊以及噴油與點(diǎn)火模塊。自主開發(fā)了具有便于調(diào)試和移植、可參與整體代碼生成、實(shí)現(xiàn)算法與底層驅(qū)動(dòng)的無縫集成等優(yōu)點(diǎn)的底層驅(qū)動(dòng)模塊程序。對電控系統(tǒng)底層驅(qū)動(dòng)模塊進(jìn)行了輸入信號(hào)采集試驗(yàn)、硬件在環(huán)試驗(yàn)和發(fā)動(dòng)機(jī)臺(tái)架試驗(yàn),結(jié)果表明,開發(fā)的底層驅(qū)動(dòng)模塊程序能夠滿足小型汽油機(jī)ECU控制要求,并且其可靠性好,實(shí)時(shí)性和快速響應(yīng)能力強(qiáng)。
[1] Yu-Wei Chen,Sheng-Ji Liu, Wang Jian.Factors Influencing Rope Force of Recoil Starter[J].Applied Mechanics and Materials,2012,220(1):494-498.
[2] 張愛群,賈濱,靳莉,等.中國通用小型汽油機(jī)行業(yè)發(fā)展現(xiàn)狀及建議[J].內(nèi)燃機(jī)與配件,2015(3):46-47.
[3] 鄒群.電子技術(shù)創(chuàng)新推動(dòng)汽車工業(yè)的發(fā)展[J].汽車與配件,2001(27):24-26.
[4] 王彥蘇.汽油機(jī)16位ECU的設(shè)計(jì)與研究[D].太原:太原理工大學(xué),2002.
[5] 張陽,吳曄,滕勤,等.MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)[M].北京:電子工業(yè)出版社,2011.
[6] Freescale semiconductor. MC9S12P128 Reference Manual Covers MC9S12XS Family[M]. [S.l.]:[s.n.],2007:100-800.
[7] 王威.HCS12微控制器原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007:7-15.
[8] 宋君花,徐權(quán)奎,王都,等.天然氣發(fā)動(dòng)機(jī)控制器驅(qū)動(dòng)軟件設(shè)計(jì)[J].車用發(fā)動(dòng)機(jī),2012(2):7-10.
[9] 劉杰.基于模型的設(shè)計(jì)及其嵌入式實(shí)現(xiàn)[M].北京:北京航空航天大學(xué)出版社,2010:345-347.
[10] 章健勇,呂世亮,陳林.基于快速原型系統(tǒng)的汽油機(jī)控制策略開發(fā)[J].車用發(fā)動(dòng)機(jī),2011(2):25-28.
[11] Writing S-Functions[M].[S.l.]:The Math Works, Inc,2003.
[12] Simulink Coder Target Language Compiler[M].[S.l.]:The Math Works,Inc,2012.
[13] 齊振恒,孫中杰,李濤,等.RTW嵌入式代碼自動(dòng)生成機(jī)制與代碼結(jié)構(gòu)分析[J].計(jì)算機(jī)測量與控制, 2010,18(3):639-642.
[編輯: 李建新]
Development of ECU Underlying Driver for Small Gasoline Engine Based on Simulink
LI Jiehui, TANG Wanfei, YIN Bifeng
(School of Automotive and Traffic Engineering, Jiangsu University, Zhenjiang 212013, China)
For the electronic control system of small gasoline engine, the underlying driver based on freescale MC9S12P128 chip was designed with Simulink software modular method. With the method, the underlying driver software was easily transplanted and debugged and completely independent of engine control software. The input signal test, hardware in the loop test and engine bench test were further carried out to validate the underlying driver module of electronic control system. The results showed that the developed underlying driver module had good reliability, real-time and rapid response capability. Accordingly, the driver could meet the requirements of engine control.
small gasoline engine; underlying driver module; electronic control system; software development
2015-07-07;
2016-03-06
國家自然科學(xué)基金資助(51375213);江蘇高校優(yōu)勢學(xué)科建設(shè)工程資助項(xiàng)目(蘇政辦發(fā)〔2011〕6號(hào))
李捷輝(1963—),男,教授,博士,主要從事發(fā)動(dòng)機(jī)電控技術(shù)研究;jhli@ujs.edu.cn。
湯萬飛(1990—),男,碩士,研究方向?yàn)樾⌒碗娍仄蜋C(jī)電控系統(tǒng)優(yōu)化;tangwanfei_ujs@163.com。
10.3969/j.issn.1001-2222.2016.02.001
TK414.32
B
1001-2222(2016)02-0001-06