官术网_书友最值得收藏!

2.3.1 ECU軟件框架和控制軟件

ECU的軟件是一些指令和數據的集合。通常是在個人電腦上建立一個集成的開發環境(integrated development environment,IDE),然后在這個環境中對代碼的源程序進行設計、輸入、調試、編譯和連接生成目標代碼,再由開發環境中提供的寫入功能,將ECU的軟件寫入到ECU的Flash存儲器中。

一般而言,不同生產廠家的單片機產品系列,都有著不同的IDE系統。如飛思卡爾公司單片機系列的IDE系統(稱為Codewarrior),針對8位、16位和32位的產品系統就有著不同的Codewarrior版本。

(1)ECU軟件框架

① ECU軟件框架的構成。圖2?11所示為ECU軟件系統基本結構示意框圖。如圖2?11所示,將單片機系統控制有關的部分進行了集中表示。系統工作任務集合和系統工作中斷集合包括了單片機系統工作的基礎軟件部分。而其他的部分可以看成是控制軟件部分。初始化任務集合則既有系統初始化內容也有控制初始化內容。

圖2?11 ECU軟件系統基本結構

② 任務和中斷處理程序。任務是指一段計算機子程序(在有的計算機語言中稱為過程,在C語言中稱為函數)。該子程序受任務處理函數調用,用于完成某項特定的控制工作。通俗而言,任務是一種可以通過軟件調用的子程序。在程序中,與任務對應的子程序是否被執行,要由這項任務對應的狀態標志來決定。狀態標志是一個邏輯量,例如:當狀態標志的值為1時,該任務就處于“激活”狀態;如果狀態標志為0,則該任務處于“休眠”狀態。當任務處于“激活”狀態時,會進入任務的執行隊列中等待執行。

中斷處理程序是由硬件事件引起的一段計算機子程序。這種硬件事件是由系統初始化程序或事件發生前執行的其他程序設定好的。例如:當曲軸傳感器產生的脈沖信號出現下降沿時,將產生相應的中斷。ECU程序將停止當前的程序執行,保護好當前的工作現場,然后跳轉到曲軸中斷服務子程序來執行。當這一子程序執行完成后,會返回到原來轉出的程序位置,恢復原來的工作現場,然后接著執行原來的指令序列。不同的硬件事件將引向執行不同的處理程序,有時在中斷處理程序執行時,可能會有新的中斷發生,這稱為中斷的嵌套。

這種中斷的嵌套會造成中斷處理程序的嵌套,每一層嵌套的中斷處理完成后,將返回上層中斷處理程序繼續執行。實際應用時,應注意避免中斷處理過程時間過長。因為在處理某個中斷信號時,對于該中斷都是先做屏蔽的。如果在該中斷信號下一次發生前未能完成處理,系統對下一次發生的中斷信號將不會響應。如果中斷處理過程時間過長,會在邏輯上造成混亂。例如:由曲軸信號齒下降沿信號引發的曲軸中斷,如果在下一齒信號到來時中斷服務程序還未執行完,則下一齒信號將被忽略,這就會造成在中斷服務中的齒計數出現遺漏,造成錯誤。不過,目前的單片機系統由于工作速度很快,只要在設計時注意不要讓中斷處理程序執行時間太長,一般都不會出現這種問題。

任務與中斷處理程序的相同之處在于:都是為實現一些功能而設置的計算機子程序,都可看作存在休眠和激活狀態,處在激活狀態時才能被執行,執行完成后都會返回到原來的程序位置執行下一句指令,并退出激活狀態。其不同之處在于:任務是靠乞討程序中的語句來激活的,而中斷處理程序是靠硬件事件來激活的;任務在被激活后,對應的程序會進入任務執行隊列等待執行,而中斷處理在被激活后會立即開始執行。

(2)ECU軟件的運行機理說明

圖2?11中由“加電啟動”框開始的框圖是ECU程序主流程示意圖。對于啟動過程幾乎是完全相同的:加電過程或復位過程使一個稱為 reset(復位)的端口線被拉到低電平,這一動作會導致所有寄存器復位,并使指令地址寄存器處于全0狀態,然后從指令地址寄存器所指向的0地址開始調用指令,在程序形成時,總是在0地址內放一條跳轉指令,跳到所設計的指令入口地址。不過上述過程對于我們從事控制軟件的工程人員而言不必過問,編譯和連接程序會自動完成這些配置。

加電啟動后,進入程序的初始化過程。初始化過程既有系統的初始化,又有控制的初始化。系統的初始化由基礎軟件部分來完成,而控制的初始化則需要在控制軟件中實現。控制初始化主要是對一些控制變量賦初值。

完成初始化后,ECU系統將進入一種正常的工作狀態。在我們的實例中,系統中斷處于正常工作狀態,將有以下中斷功能存在:實時中斷RTI每256μs產生一次;曲軸中斷對曲軸信號下降沿響應;凸輪軸中斷對凸輪軸信號下降沿響應。

上述的工作狀態會為完成柴油機工作控制創造必要的條件:RTI實時中斷的操作,完成一些傳感器信號的輸入,這主要有進氣壓力和溫度傳感器、冷卻液溫度傳感器、加速踏板傳感器;曲軸中斷響應機制能夠捕獲曲軸脈沖信號中的每一個下降沿,凸輪軸中斷響應機制能夠捕獲凸輪軸脈沖信號中的每一個下降沿,這兩者的綜合處理能夠確定柴油機的轉速和相位,而依據轉速和相位信號,柴油機供油驅動就可以工作了。

初始化后進入程序的主循環,對于大多數自動控制程序幾乎都是這樣。主循環中主要是執行一個任務處理函數。由于循環是無窮盡的,因此,任務處理函數被無限地循環執行,其實,這個任務處理函數的工作內容只有一項,就是將現有被激活任務按優先級排序后,執行其中優先級最高的任務,然后讓這一任務回到休眠狀態。

簡單來說,當程序處在主循環過程中,會由于硬件中斷引發ECU執行對應的服務程序,這些服務程序會激活一些任務進入執行隊列。所有這些硬件中斷服務程序和任務的協調就能夠實現柴油機的工作控制:輸入傳感器信號,根據信號完成處理獲得控制數據實現對供油系統定時、定位、定量的供油控制等。

(3)控制軟件的主要變量及相關因素

對柴油機的控制受一些關鍵性的參數量值的影響,這里列出這臺 EDBM ECU的部分變量參數。對于基礎軟件中用于自身層次工作使用的變量,是完全封閉在基礎層內的,控制層用戶可以不過問,但基礎軟件中也有部分變量是提供給控制層使用的。對于這些變量,控制層只能利用而不能改變;其他的變量是控制層定義并使用的。這里所說的在控制層用到的變量都是指全局變量。為了便于敘述,在這里對變量做了簡單說明。在后面對其做應用時,會進一步了解到它們的意義和實際使用方法。

① 基礎層軟件變量參數。表2?1列出的基礎層軟件變量參數是由基礎層軟件定義并運用,但其值在控制層要進行引用的變量。

表2?1 基礎層軟件變量參數

② 控制層參數變量。控制層參數變量見表2?2。

表2?2 控制層參數變量

續表

續表

表2?3是一組用于高壓共軌系統多次噴射控制用的變量。

表2?3 用于高壓共軌系統多次噴射控制用的變量

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

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

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

表2?5所列的全局變量只是對于電控分配泵系統才有用,用于處理油量調節滑套位置傳感器的數據。

表2?5 處理分配泵滑套位置傳感器參數

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

表2?6 用于擴展的模擬量輸入變量組

表2?7是用于開關量采樣的變量。

表2?7 用于開關量采樣的變量

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

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

續表

③ 結構參數變量。結構參數是指對于曲軸與凸輪軸傳動關系相位的不同位置關系。在電控柴油機中,這種位置關系既與燃油泵的安裝位置有關,也與傳感器的安裝位置有關。

注意:這里介紹的結構參數內容只涉及電控共軌系統和電控單體泵系統。而對于電控分配泵系統,沒有這樣的結構特征,控制過程的相關要素有些不同。

在結構安裝完畢后,這兩種傳感器輸入的信號相對于曲軸相位的關系就確定了。如圖2?12所示。在這一實例中,圖中反映的是一個柴油機工作循環內的曲軸信號與凸輪軸信號的關系,上邊是曲軸信號,下邊是凸輪軸信號。曲軸信號重復了兩次(兩圈),對應著一圈凸輪軸信號。

圖2?12 曲軸和凸輪軸信號圖

從曲軸信號左側第一個缺齒處開始曲軸齒計數,缺齒后第一齒定為0號齒,向右順序編為1、2……缺齒也要進入齒計數,直到第一缺齒處最后一個缺齒編為119號齒。TDC對應氣缸壓縮上止點位置。例如:在上例中,當曲軸傳感器接收到第11號齒的信號(下降沿)時,曲軸的位置位于第1缸上止點。

在對凸輪軸齒計數時,將多齒后第一齒定為1號齒,順序編為2~4號齒,對于4+1凸輪齒結構,只有4個有效齒。在圖2?12中,我們設定ECU捕獲的都是下降沿信號。要確定柴油機工作相位,有兩個結構角度需要確定。一是當曲軸處在第一缸上止點時,曲軸傳感器對應的齒位置。也可以說第一缸上止點對應的齒位置。二是凸輪軸第一齒對應的曲軸傳感器的齒位置。這就有了A_DePoI、A_DeCam這兩個變量,都用整齒號表達,見表2?9。

表2?9 結構參數變量

① 在圖2?12中可看出第一缸上止點對應的齒號是11;而凸輪軸第一齒對應曲軸齒號是88。上止點和凸輪軸第一齒位置都正對著曲軸齒的下降沿。這使對這兩個位置的描述得到了簡化(用整齒號即可)。在實際設計結構時,也確實應該盡量做到這一點。如果難以做到,則這兩個變量就無法用整數表達,會給后續的處理造成一點麻煩。通過以上介紹也可以看出,A_DePoI描述了曲軸傳感器與第一缸上止點的相對相位,A_DeCam描述了凸輪傳感器與曲軸傳感器的相對相位。

(4)控制軟件所需要的基礎軟件資源

要完成對本章實例中電控柴油機基礎模型EDBM工作的控制,就需要ECU基礎軟件部分提供一些對硬件操作的基本功能和可用資源。這些功能和資源用于完成對電控系統硬件的直接操作,與硬件有直接聯系。ECU系統都應能夠提供類似的基礎軟件功能和資源。例如:對于后文介紹的功能函數,在實際上任何一種ECU系統中都有類似的功能資源,但是這些功能不一定都對用戶開放。作為柴油機控制軟件開發人員,可以直接使用這些功能完成設計而不必關心這些基礎軟件功能的具體實現過程。相關基礎軟件資源見表2?10。

表2?10 控制軟件的基礎軟件資源

續表

(5)控制軟件的功能函數

在基礎軟件資源的支持下,控制軟件部分可以獲得對硬件的操作能力。控制軟件必須利用這些能力實現對柴油機的控制,這才是ECU控制軟件部分的任務,也是作為柴油機專業人員的目標。下面列出控制軟件需要實現的一些功能,其中有的功能是根據實際需求可選擇的。詳見表2?11。

表2?11 控制軟件的功能函數

續表

(6)控制軟件的程序結構

在實例中,需要設置用于指導程序設計的基本程序結構。為了便于控制軟件的設計人員實現設計制作,為這種設計工作提供技術支持的開發系統一般都提供基本的程序結構框架。在這一框架中既包括基礎軟件部分,也為控制軟件確定了設計結構。下面采用虛擬的EDBM_ECU作為開發平臺,同時為控制軟件開發提供了簡明的框架。EDBM_ECU的控制軟件程序模塊詳見2?12。

表2?12 控制軟件的程序結構

(7)上電和關電

ECU上電即給電控系統接通電源控制開關;關電則是指斷開這一控制開關。這種操作其實并不是直接對為ECU供電的電源進行,而是操作控制回路打開或關斷主回路。這就可以使對ECU的實際供電用一些較復雜的邏輯來控制。例如:在加電時,系統會在完成了一些必要的初始化操作后再對主回路接通電源;而在關電時,系統不會立即關掉主回路的電源,而是在完成一些必要的后處理后再真正關閉電源。

可以理解為:在上電時,系統要先執行系統主函數main();而在關電時,則要先執行一個系統關電函數 Sys_Off()。這兩個函數都屬于基礎軟件,但它們都為控制層留了“接口”。例如對于main()函數,在該函數的語句中有一函數執行語句:

main_Sub();  //執行 main_Sub()函數

  這一函數雖然是在基礎軟件函數main()中調用的,卻是給控制層使用的。這一函數在EDBM_ECU_Control_Function.c中定義:

void main_Sub()

{       //在此加入控制層需要在初始化時完成的語句;

 

}

  對于 Sys_Off(),也對應一個 Sys_Off_Sub()函數。

這樣,當加電后執行main()函數時,控制層的初始化功能也得以實現。關電時的情況也相似:Sys_Off_Sub()函數供用戶加入自己的控制層代碼,在關電時先執行完成這些代碼才會最后關閉電源。

主站蜘蛛池模板: 柘荣县| 中牟县| 元阳县| 东乡族自治县| 大英县| 阜城县| 仪征市| 宣城市| 山西省| 呼和浩特市| 徐汇区| 云林县| 平泉县| 江达县| 台山市| 清远市| 垦利县| 运城市| 南和县| 大英县| 濉溪县| 林西县| 鹤庆县| 红安县| 龙里县| 太仓市| 五台县| 芒康县| 金寨县| 鄯善县| 赤壁市| 东乡族自治县| 陆河县| 嘉定区| 甘孜县| 洛南县| 冀州市| 郯城县| 静宁县| 虎林市| 宜黄县|