燃料電池城市客車用整車控制器
關鍵詞: C8051F020;整車控制器;實時操作系統;RTX51
整車控制器的功能分析
本文的汽車整車控制器是為國家863重大專項——“燃料電池城市客車”開發研制的。燃料電池城市客車的結構如圖1所示。與傳統汽車的主要不同是動力源由發動機改為電動機,同時由燃料電池和輔助電池組合提供電能。這樣車上的主要能量轉換方式就是將電能轉換成機械能。
汽車的整車控制器是整個汽車的大腦,它接受到駕駛員的踏板信號和其它信號,然后作出相應的判斷,控制下層各個部件作出動作,驅動汽車正常行駛,并盡可能實現比較高的能量效率。所以說整車控制器是整個汽車的核心控制部件,它的優劣直接影響著汽車的可靠性和其它性能。

圖1 燃料電池城市客車結構簡圖

圖2 整車控制器功能框圖
在此,首先分析一下燃料電池城市客車整車控制器的功能需求。第一,整車驅動系統由驅動電機、燃料電池、蓄電池、DC/DC轉換器等部件組成,各個部件之間的信號通過CAN總線來傳遞,因而整車控制器必須具有CAN總線接口;第二,雖然采用CAN總線可以大大簡化系統的布線復雜程度,但從實時性和安全性的角度出發,有一部分信號還要由整車控制器直接采集,包括制動踏板、油門踏板以及其它一些數字量信號;第三,整車控制器還要提供一些對相應部件進行直接控制的信號通道,包括D/A轉換和數字量輸出等等;第四,為保證駕駛員的安全操作和對汽車控制的可視化,采用了外接液晶顯示器以及觸摸屏的方式來顯示一些重要的信號量,因此選用了一個串行通信口(UART)。
C8051F020的主要功能和資源
基于以上的功能分析,我們最終選用了Cygnal單片機的特點,C8051F020型號的單片機作為整車控制器的核心器件CPU。其主要功能和資源包括:多達32路12位ADC(速度為100kHz)或高達500kHz的8位ADC;2路12位DAC和2路模擬比較器;內部高精度基準電源、可編程增益放大器和溫度傳感器;精確的VDD監視器;4K片內RAM、64K片內FLASH以及64K外部數據存儲器接口;64位I/O口線,所有口線均可編程為弱上拉或推挽輸出;可同時使用的硬件SMBUS/I2C串行總線和SPI串行總線及兩個UART串口;16 位可編程計數器/定時器陣列帶5 個捕獲/比較模塊;5個通用16 位計數器/定時器;專用的看門狗定時器和雙向復位等等;獨特的數字交叉開關陣列(Digital Crossbar),可將內部系統資源定向分配到P0,P1和P2;
其內部資源的功能框圖從略。
整車控制器的功能框圖
通過比較整車控制器的功能需求和Cygnal單片機的特點可知,C8051F020芯片是一款非常適合用于汽車整車控制器的芯片。根據該單片機的特點,我們設計了控制器的整體框架(如圖2)。
首先,在外部總線上擴展了一片32K的RAM,設計采用61C256,這樣的RAM容量足夠滿足實時操作系統及所需控制參數和變量的需求。其次,我們選用獨立的CAN控制器芯片SJA1000擴展了一個CAN接口,用于和各個部件之間進行數據通信。同時,由于C8051F020的很多片內資源都是和數字I/O口復用的,所以需要利用片內的數字交叉開關來選擇決定某個I/O口工作在何種方式;設計中選用了一片可編程邏輯芯片CPLD-EPM7128,利用它可以方便地配置芯片的各個I/O口和片內資源,同時可以實現對一些外擴設備的譯碼以及邏輯電路的設計等,這樣不僅節省了大量的外部譯碼芯片,同時還增加了系統的靈活性。此外,設計中利用一個串口(UART)與液晶顯示器及觸摸屏相連,提供了良好的司機交互操作界面。最后考慮到芯片內部已經具有A/D、D/A等資源,我們只選用了其中的4路A/D用于模擬量采集和2路D/A用于輸出控制,同時設計了8路數字量輸入(DI)和4路數字量輸出(DO)。出于對系統的電磁兼容性和安全性方面的考慮,我們對相應的信號都采取了濾波和光電隔離措施。
完成以上所有的硬件功能設計后,一般來說,就應該按照經驗用傳統的軟件方法來編寫汽車整車控制器的軟件系統。然而,近年來嵌入式實時操作系統的普及為我們的軟件設計提供了一套新的解決思路。
嵌入式實時操作系統RTX51
針對中小型控制系統來說,mC/OS-II是目前最流行的、源碼公開、幾乎免費的RTOS。mC/OS-II具有執行效率高,占用空間小,實時性能優良和可擴展性強等特點,最小內核可編譯至2k。通常來講,是一種比較好的選擇方案。但是,我們在項目初期的實踐中證明mC/OS-II在8 位MCS51單片機系統中的效果并不是非常理想。因此,我們選用了一個最適用于8051家族單片機的實時多任務操作系統RTX51。在Keil C51的集成開發環境下,選用RTX51還具備如下優點:
?使用便捷,當用戶在集成開發環境里打開目標選項對話框,選擇目標操作系統以后,鏈接器便會自動添加合適的RTX-51庫文件;
?完全支持C51具有的浮點操作功能、可重入功能和中斷功能;
?對于8051系列單片機具有友好的用戶界面來進行RTX51的配置;
?使用靈活,僅需占用少量的系統資源,也能夠應用于實時性要求較高的系統中。
RTX51具有兩種不同的版本:RTX51 Full和RTX51 Tiny。
在燃料電池城市客車的整車控制器中,由于整個被控系統相對比較復雜,同時考慮到將來可能的系統擴展,我們采用了功能較強的RTX51 Full版本。
RTX51 Full可適用于大多數8051系列單片機,但是必須針對不同的單片機進行相應的配置。由于Cygnal的C8051系列單片機是比較新型的MCS51單片機,所以RTX51并沒有為此系列單片機提供專門的配置。因此,我們首先找到了一個與C8051系列單片機比較接近的單片機Infienon C515單片機,然后比較這兩種單片機的異同,修改RTX51為Infienon C515專門提供的配置,即可得到我們所需的配置。修改的部分如下:
INT_EN_MASK_NUMBER EQU 3
?RTX_IE DATA 0A8H
?RTX_IEN1DATA 0E6H
?RTX_IEN2 DATA 0E7H
如上所述,RTX51與C51編譯器是完全集成在一個uVision的集成環境中,作為RTX51應用程序只要求用戶將RTX51.H頭文件包含進來,并且選擇編譯選項Target中的operating為RTX51 Full即可。
整車控制器的軟件設計思路
燃料電池城市客車明顯區別于傳統汽車的一個主要特點就是:傳統汽車由司機根據自己的意愿,操縱油門踏板和制動踏板來直接控制汽車的運行狀態;而燃料電池城市客車的油門踏板并沒有和底層部件直接相連,而是通過將踏板信號采集進入多能源動力總成控制系統,再根據一定的控制策略,最終確定汽車的實際運行狀態。
由此可見,對于燃料電池城市客車而言,對司機控制命令的信號采集和對司機意圖的解釋變得至關重要。因此,整車控制器的主要任務就是采集司機的各種控制信號(包括鑰匙位置、制動踏板、油門踏板和檔位信息等等),正確判斷司機的實際駕駛意圖,協調控制汽車各個部件的工作,對整車進行有效的控制。
根據整車控制器所需完成的功能,我們結合RTOS分解其各項功能并制定出相對獨立的任務。目前,我們制定了以下幾個任務:
任務0 系統初始化及控制策略數值計算:
初始化單片機的相關配置,啟動所有其它的任務。隨后進行控制策略的數值計算。
任務1 發送CAN信息:
當任務0完成了控制策略數值計算后,通過CAN總線發送相應的控制命令。
任務2 模數轉換A/D:
采集油門踏板和制動踏板的信號,并進行數字濾波。這些信號將提供給任務0進行控制策略的計算。
任務3 數字量的輸入和輸出:
讀入鑰匙位置、緊急開關信號等數字量,輸出Ready等信號。這些信息將提供給任務0來判斷汽車應該選擇的工作模式,同時在液晶屏幕上進行相應的狀態顯示。
任務4 故障診斷:
判斷單片機系統工作是否正常,CAN通信是否正常,并且給出相應的報警信號。
中斷1 接收CAN信息:
接收其它控制器節點發來的CAN信息,并且按照CAN協議把接收到的數據信息進行相應的轉換。
上述各任務的程序流程圖從略。
結語
C8051F020這款單片機具有較快的運行速度和豐富的內部資源,非常適合用于汽車整車控制器的開發。我們在搭建出其硬件平臺的基礎上,又開發了基于實時操作系統的軟件系統,并且實現了數據采集、輸出控制、液晶顯示以及CAN總線通信等功能。實時操作系統的實施讓我們的軟件設計思路產生了很大的變化,使我們能夠更方便地進行復雜軟件的設計。可以這樣說,實時操作系統的引入提高了軟件設計的起點,同時提高了軟件設計的效率。■(本文做了刪減,讀者可發郵件至articleb@edw.com.cn索閱全文)
評論