- 柴油機電控技術(shù)及故障維修
- 母忠林 母哲軒編著
- 5006字
- 2021-12-24 15:01:06
2.3.1 ECU軟件框架和控制軟件
ECU的軟件是一些指令和數(shù)據(jù)的集合。通常是在個人電腦上建立一個集成的開發(fā)環(huán)境(integrated development environment,IDE),然后在這個環(huán)境中對代碼的源程序進(jìn)行設(shè)計、輸入、調(diào)試、編譯和連接生成目標(biāo)代碼,再由開發(fā)環(huán)境中提供的寫入功能,將ECU的軟件寫入到ECU的Flash存儲器中。
一般而言,不同生產(chǎn)廠家的單片機產(chǎn)品系列,都有著不同的IDE系統(tǒng)。如飛思卡爾公司單片機系列的IDE系統(tǒng)(稱為Codewarrior),針對8位、16位和32位的產(chǎn)品系統(tǒng)就有著不同的Codewarrior版本。
(1)ECU軟件框架
① ECU軟件框架的構(gòu)成。圖2?11所示為ECU軟件系統(tǒng)基本結(jié)構(gòu)示意框圖。如圖2?11所示,將單片機系統(tǒng)控制有關(guān)的部分進(jìn)行了集中表示。系統(tǒng)工作任務(wù)集合和系統(tǒng)工作中斷集合包括了單片機系統(tǒng)工作的基礎(chǔ)軟件部分。而其他的部分可以看成是控制軟件部分。初始化任務(wù)集合則既有系統(tǒng)初始化內(nèi)容也有控制初始化內(nèi)容。

圖2?11 ECU軟件系統(tǒng)基本結(jié)構(gòu)
② 任務(wù)和中斷處理程序。任務(wù)是指一段計算機子程序(在有的計算機語言中稱為過程,在C語言中稱為函數(shù))。該子程序受任務(wù)處理函數(shù)調(diào)用,用于完成某項特定的控制工作。通俗而言,任務(wù)是一種可以通過軟件調(diào)用的子程序。在程序中,與任務(wù)對應(yīng)的子程序是否被執(zhí)行,要由這項任務(wù)對應(yīng)的狀態(tài)標(biāo)志來決定。狀態(tài)標(biāo)志是一個邏輯量,例如:當(dāng)狀態(tài)標(biāo)志的值為1時,該任務(wù)就處于“激活”狀態(tài);如果狀態(tài)標(biāo)志為0,則該任務(wù)處于“休眠”狀態(tài)。當(dāng)任務(wù)處于“激活”狀態(tài)時,會進(jìn)入任務(wù)的執(zhí)行隊列中等待執(zhí)行。
中斷處理程序是由硬件事件引起的一段計算機子程序。這種硬件事件是由系統(tǒng)初始化程序或事件發(fā)生前執(zhí)行的其他程序設(shè)定好的。例如:當(dāng)曲軸傳感器產(chǎn)生的脈沖信號出現(xiàn)下降沿時,將產(chǎn)生相應(yīng)的中斷。ECU程序?qū)⑼V巩?dāng)前的程序執(zhí)行,保護(hù)好當(dāng)前的工作現(xiàn)場,然后跳轉(zhuǎn)到曲軸中斷服務(wù)子程序來執(zhí)行。當(dāng)這一子程序執(zhí)行完成后,會返回到原來轉(zhuǎn)出的程序位置,恢復(fù)原來的工作現(xiàn)場,然后接著執(zhí)行原來的指令序列。不同的硬件事件將引向執(zhí)行不同的處理程序,有時在中斷處理程序執(zhí)行時,可能會有新的中斷發(fā)生,這稱為中斷的嵌套。
這種中斷的嵌套會造成中斷處理程序的嵌套,每一層嵌套的中斷處理完成后,將返回上層中斷處理程序繼續(xù)執(zhí)行。實際應(yīng)用時,應(yīng)注意避免中斷處理過程時間過長。因為在處理某個中斷信號時,對于該中斷都是先做屏蔽的。如果在該中斷信號下一次發(fā)生前未能完成處理,系統(tǒng)對下一次發(fā)生的中斷信號將不會響應(yīng)。如果中斷處理過程時間過長,會在邏輯上造成混亂。例如:由曲軸信號齒下降沿信號引發(fā)的曲軸中斷,如果在下一齒信號到來時中斷服務(wù)程序還未執(zhí)行完,則下一齒信號將被忽略,這就會造成在中斷服務(wù)中的齒計數(shù)出現(xiàn)遺漏,造成錯誤。不過,目前的單片機系統(tǒng)由于工作速度很快,只要在設(shè)計時注意不要讓中斷處理程序執(zhí)行時間太長,一般都不會出現(xiàn)這種問題。
任務(wù)與中斷處理程序的相同之處在于:都是為實現(xiàn)一些功能而設(shè)置的計算機子程序,都可看作存在休眠和激活狀態(tài),處在激活狀態(tài)時才能被執(zhí)行,執(zhí)行完成后都會返回到原來的程序位置執(zhí)行下一句指令,并退出激活狀態(tài)。其不同之處在于:任務(wù)是靠乞討程序中的語句來激活的,而中斷處理程序是靠硬件事件來激活的;任務(wù)在被激活后,對應(yīng)的程序會進(jìn)入任務(wù)執(zhí)行隊列等待執(zhí)行,而中斷處理在被激活后會立即開始執(zhí)行。
(2)ECU軟件的運行機理說明
圖2?11中由“加電啟動”框開始的框圖是ECU程序主流程示意圖。對于啟動過程幾乎是完全相同的:加電過程或復(fù)位過程使一個稱為 reset(復(fù)位)的端口線被拉到低電平,這一動作會導(dǎo)致所有寄存器復(fù)位,并使指令地址寄存器處于全0狀態(tài),然后從指令地址寄存器所指向的0地址開始調(diào)用指令,在程序形成時,總是在0地址內(nèi)放一條跳轉(zhuǎn)指令,跳到所設(shè)計的指令入口地址。不過上述過程對于我們從事控制軟件的工程人員而言不必過問,編譯和連接程序會自動完成這些配置。
加電啟動后,進(jìn)入程序的初始化過程。初始化過程既有系統(tǒng)的初始化,又有控制的初始化。系統(tǒng)的初始化由基礎(chǔ)軟件部分來完成,而控制的初始化則需要在控制軟件中實現(xiàn)。控制初始化主要是對一些控制變量賦初值。
完成初始化后,ECU系統(tǒng)將進(jìn)入一種正常的工作狀態(tài)。在我們的實例中,系統(tǒng)中斷處于正常工作狀態(tài),將有以下中斷功能存在:實時中斷RTI每256μs產(chǎn)生一次;曲軸中斷對曲軸信號下降沿響應(yīng);凸輪軸中斷對凸輪軸信號下降沿響應(yīng)。
上述的工作狀態(tài)會為完成柴油機工作控制創(chuàng)造必要的條件:RTI實時中斷的操作,完成一些傳感器信號的輸入,這主要有進(jìn)氣壓力和溫度傳感器、冷卻液溫度傳感器、加速踏板傳感器;曲軸中斷響應(yīng)機制能夠捕獲曲軸脈沖信號中的每一個下降沿,凸輪軸中斷響應(yīng)機制能夠捕獲凸輪軸脈沖信號中的每一個下降沿,這兩者的綜合處理能夠確定柴油機的轉(zhuǎn)速和相位,而依據(jù)轉(zhuǎn)速和相位信號,柴油機供油驅(qū)動就可以工作了。
初始化后進(jìn)入程序的主循環(huán),對于大多數(shù)自動控制程序幾乎都是這樣。主循環(huán)中主要是執(zhí)行一個任務(wù)處理函數(shù)。由于循環(huán)是無窮盡的,因此,任務(wù)處理函數(shù)被無限地循環(huán)執(zhí)行,其實,這個任務(wù)處理函數(shù)的工作內(nèi)容只有一項,就是將現(xiàn)有被激活任務(wù)按優(yōu)先級排序后,執(zhí)行其中優(yōu)先級最高的任務(wù),然后讓這一任務(wù)回到休眠狀態(tài)。
簡單來說,當(dāng)程序處在主循環(huán)過程中,會由于硬件中斷引發(fā)ECU執(zhí)行對應(yīng)的服務(wù)程序,這些服務(wù)程序會激活一些任務(wù)進(jìn)入執(zhí)行隊列。所有這些硬件中斷服務(wù)程序和任務(wù)的協(xié)調(diào)就能夠?qū)崿F(xiàn)柴油機的工作控制:輸入傳感器信號,根據(jù)信號完成處理獲得控制數(shù)據(jù)實現(xiàn)對供油系統(tǒng)定時、定位、定量的供油控制等。
(3)控制軟件的主要變量及相關(guān)因素
對柴油機的控制受一些關(guān)鍵性的參數(shù)量值的影響,這里列出這臺 EDBM ECU的部分變量參數(shù)。對于基礎(chǔ)軟件中用于自身層次工作使用的變量,是完全封閉在基礎(chǔ)層內(nèi)的,控制層用戶可以不過問,但基礎(chǔ)軟件中也有部分變量是提供給控制層使用的。對于這些變量,控制層只能利用而不能改變;其他的變量是控制層定義并使用的。這里所說的在控制層用到的變量都是指全局變量。為了便于敘述,在這里對變量做了簡單說明。在后面對其做應(yīng)用時,會進(jìn)一步了解到它們的意義和實際使用方法。
① 基礎(chǔ)層軟件變量參數(shù)。表2?1列出的基礎(chǔ)層軟件變量參數(shù)是由基礎(chǔ)層軟件定義并運用,但其值在控制層要進(jìn)行引用的變量。
表2?1 基礎(chǔ)層軟件變量參數(shù)

② 控制層參數(shù)變量。控制層參數(shù)變量見表2?2。
表2?2 控制層參數(shù)變量

續(xù)表
續(xù)表
表2?3是一組用于高壓共軌系統(tǒng)多次噴射控制用的變量。
表2?3 用于高壓共軌系統(tǒng)多次噴射控制用的變量

表2?4是用于模擬量采樣的變量。
表2?4 用于模擬量采樣的變量


① 所謂瞬態(tài)量是針對每次采樣所獲得的即時值,由于這一值可能由于外部干擾等原因產(chǎn)生臨時的誤差,因此需要對其做濾波處理后才能用于實際控制。對于其他模擬量輸入時的瞬態(tài)量,也是同樣含義。
② 即對于瞬態(tài)量通過濾波獲得的結(jié)果值。整定值才是用于物理量計算的值。
③ 進(jìn)氣壓力采樣值來自進(jìn)氣壓力傳感器,這類傳感器一般是在電路上控制輸入電壓在0~5V的范圍,而通過一個10位模數(shù)轉(zhuǎn)換器,轉(zhuǎn)換為0~1023的數(shù)字量。但對于具體的物理量傳感器,除了斷路或短路,輸入值不會很極端,一般在50~950之間。進(jìn)氣壓力采樣值通過一個換算表來實現(xiàn)與進(jìn)氣壓力值之間的換算,控制過程一般直接使用進(jìn)氣壓力值來實現(xiàn)。針對不同的進(jìn)氣壓力傳感器,只要更新這一換算表,就可以實現(xiàn)控制程度的通用。對于其他的物理量傳感器,如軌壓、氣溫等,情況和方法都是類似的。
④ 當(dāng)加速踏板有動作時為1,無動作時為0。但有的加速踏板部件無這一信號,而將加速踏板傳感器采樣低于一定值(如150)時認(rèn)為加速踏板無動作。
表2?5所列的全局變量只是對于電控分配泵系統(tǒng)才有用,用于處理油量調(diào)節(jié)滑套位置傳感器的數(shù)據(jù)。
表2?5 處理分配泵滑套位置傳感器參數(shù)

表2?6是4組(?表示1~4)可用于擴(kuò)展使用的模擬量輸入變量組。這4組變量可以在對模擬量項目做擴(kuò)展時使用。
表2?6 用于擴(kuò)展的模擬量輸入變量組

表2?7是用于開關(guān)量采樣的變量。
表2?7 用于開關(guān)量采樣的變量

表2?8是一些常用的控制變量。
表2?8 一些常用的控制變量

續(xù)表

③ 結(jié)構(gòu)參數(shù)變量。結(jié)構(gòu)參數(shù)是指對于曲軸與凸輪軸傳動關(guān)系相位的不同位置關(guān)系。在電控柴油機中,這種位置關(guān)系既與燃油泵的安裝位置有關(guān),也與傳感器的安裝位置有關(guān)。
注意:這里介紹的結(jié)構(gòu)參數(shù)內(nèi)容只涉及電控共軌系統(tǒng)和電控單體泵系統(tǒng)。而對于電控分配泵系統(tǒng),沒有這樣的結(jié)構(gòu)特征,控制過程的相關(guān)要素有些不同。
在結(jié)構(gòu)安裝完畢后,這兩種傳感器輸入的信號相對于曲軸相位的關(guān)系就確定了。如圖2?12所示。在這一實例中,圖中反映的是一個柴油機工作循環(huán)內(nèi)的曲軸信號與凸輪軸信號的關(guān)系,上邊是曲軸信號,下邊是凸輪軸信號。曲軸信號重復(fù)了兩次(兩圈),對應(yīng)著一圈凸輪軸信號。

圖2?12 曲軸和凸輪軸信號圖
從曲軸信號左側(cè)第一個缺齒處開始曲軸齒計數(shù),缺齒后第一齒定為0號齒,向右順序編為1、2……缺齒也要進(jìn)入齒計數(shù),直到第一缺齒處最后一個缺齒編為119號齒。TDC對應(yīng)氣缸壓縮上止點位置。例如:在上例中,當(dāng)曲軸傳感器接收到第11號齒的信號(下降沿)時,曲軸的位置位于第1缸上止點。
在對凸輪軸齒計數(shù)時,將多齒后第一齒定為1號齒,順序編為2~4號齒,對于4+1凸輪齒結(jié)構(gòu),只有4個有效齒。在圖2?12中,我們設(shè)定ECU捕獲的都是下降沿信號。要確定柴油機工作相位,有兩個結(jié)構(gòu)角度需要確定。一是當(dāng)曲軸處在第一缸上止點時,曲軸傳感器對應(yīng)的齒位置。也可以說第一缸上止點對應(yīng)的齒位置。二是凸輪軸第一齒對應(yīng)的曲軸傳感器的齒位置。這就有了A_DePoI、A_DeCam這兩個變量,都用整齒號表達(dá),見表2?9。
(4)控制軟件所需要的基礎(chǔ)軟件資源
要完成對本章實例中電控柴油機基礎(chǔ)模型EDBM工作的控制,就需要ECU基礎(chǔ)軟件部分提供一些對硬件操作的基本功能和可用資源。這些功能和資源用于完成對電控系統(tǒng)硬件的直接操作,與硬件有直接聯(lián)系。ECU系統(tǒng)都應(yīng)能夠提供類似的基礎(chǔ)軟件功能和資源。例如:對于后文介紹的功能函數(shù),在實際上任何一種ECU系統(tǒng)中都有類似的功能資源,但是這些功能不一定都對用戶開放。作為柴油機控制軟件開發(fā)人員,可以直接使用這些功能完成設(shè)計而不必關(guān)心這些基礎(chǔ)軟件功能的具體實現(xiàn)過程。相關(guān)基礎(chǔ)軟件資源見表2?10。
表2?10 控制軟件的基礎(chǔ)軟件資源


續(xù)表


(5)控制軟件的功能函數(shù)
在基礎(chǔ)軟件資源的支持下,控制軟件部分可以獲得對硬件的操作能力。控制軟件必須利用這些能力實現(xiàn)對柴油機的控制,這才是ECU控制軟件部分的任務(wù),也是作為柴油機專業(yè)人員的目標(biāo)。下面列出控制軟件需要實現(xiàn)的一些功能,其中有的功能是根據(jù)實際需求可選擇的。詳見表2?11。
表2?11 控制軟件的功能函數(shù)


續(xù)表


(6)控制軟件的程序結(jié)構(gòu)
在實例中,需要設(shè)置用于指導(dǎo)程序設(shè)計的基本程序結(jié)構(gòu)。為了便于控制軟件的設(shè)計人員實現(xiàn)設(shè)計制作,為這種設(shè)計工作提供技術(shù)支持的開發(fā)系統(tǒng)一般都提供基本的程序結(jié)構(gòu)框架。在這一框架中既包括基礎(chǔ)軟件部分,也為控制軟件確定了設(shè)計結(jié)構(gòu)。下面采用虛擬的EDBM_ECU作為開發(fā)平臺,同時為控制軟件開發(fā)提供了簡明的框架。EDBM_ECU的控制軟件程序模塊詳見2?12。
表2?12 控制軟件的程序結(jié)構(gòu)

(7)上電和關(guān)電
ECU上電即給電控系統(tǒng)接通電源控制開關(guān);關(guān)電則是指斷開這一控制開關(guān)。這種操作其實并不是直接對為ECU供電的電源進(jìn)行,而是操作控制回路打開或關(guān)斷主回路。這就可以使對ECU的實際供電用一些較復(fù)雜的邏輯來控制。例如:在加電時,系統(tǒng)會在完成了一些必要的初始化操作后再對主回路接通電源;而在關(guān)電時,系統(tǒng)不會立即關(guān)掉主回路的電源,而是在完成一些必要的后處理后再真正關(guān)閉電源。
可以理解為:在上電時,系統(tǒng)要先執(zhí)行系統(tǒng)主函數(shù)main();而在關(guān)電時,則要先執(zhí)行一個系統(tǒng)關(guān)電函數(shù) Sys_Off()。這兩個函數(shù)都屬于基礎(chǔ)軟件,但它們都為控制層留了“接口”。例如對于main()函數(shù),在該函數(shù)的語句中有一函數(shù)執(zhí)行語句:
main_Sub(); //執(zhí)行 main_Sub()函數(shù)
這一函數(shù)雖然是在基礎(chǔ)軟件函數(shù)main()中調(diào)用的,卻是給控制層使用的。這一函數(shù)在EDBM_ECU_Control_Function.c中定義:
void main_Sub()
{ //在此加入控制層需要在初始化時完成的語句;
}
對于 Sys_Off(),也對應(yīng)一個 Sys_Off_Sub()函數(shù)。
這樣,當(dāng)加電后執(zhí)行main()函數(shù)時,控制層的初始化功能也得以實現(xiàn)。關(guān)電時的情況也相似:Sys_Off_Sub()函數(shù)供用戶加入自己的控制層代碼,在關(guān)電時先執(zhí)行完成這些代碼才會最后關(guān)閉電源。