殷曉輝
(煙臺汽車工程職業學院 信息與控制工程系, 煙臺 265500)
汽車已成為現代生活中不可或缺的出行工具,隨著汽車電子技術的發展和完善,新型功能的汽車不斷被開發出來,隨之而來的使汽車的電子控制單元(ECU)逐漸增多,繁多的線束和ECU占用了大量的有效空間,使汽車系統的復雜程度不斷增加,同時也使裝配和維修難度增大,不但提高了整車成本也使系統的可靠性難以得到有效滿足,因此對車身控制網絡進行構建,使其具備電子化、網絡化、功能化的特點是現階段車身系統發展的主要方向。
汽車電子控制網絡技術在簡化線路、降低故障頻率、提高系統的可靠性及信息傳輸效率等方面發揮出狀元的作用,在汽車電子控制系統中CAN總線因具備良好的性能及可靠性被廣泛采用,是擁有極大應用前景的汽車電子控制網絡之一[1]。
汽車電子控制系統主要由四部分組成,即通訊信息系統、發動機、底盤、車身電子控制系統,汽車的行駛性能主要取決于發動機及底盤和安全電子控制,發動機電子控制系統作為電控系統的核心,主要包括電控點火、怠速控制、排放控制等;汽車的實際工作情況與底盤和安全電控系統的發動機與自動變速器密切相關;電子防滑系統(ASR)和防抱死制動系統(ABS)為汽車駕駛的安全性和易操縱提供保證;車身系統主要功能在于乘坐的舒適和方便性,由照明系統、空調、安全氣囊、門鎖、座椅調節系統等組成;信息通訊系統主要由車載影音設備、導航定位和寬帶上網等組成[2]。
根據電子控制系統對信息傳輸的要求,構建汽車網絡控制模型時主要采用高速總線(500kbps)和低速總線(125kbps/m)的CAN雙總線結構,車身系統等采用IS011519低速雙線式CAN總線,發動機及底盤綜合控制系統等總線采用ISCll898雙線式高速CAN總線,信息通訊系統則采用MOST總線(作為CAN的補充),各部分總線間的數據通信通過網關(網關留有診斷接口)實現,整車CAN總線網絡模型如圖1所示[3]。
通過兩條CAN總線將各電控子系統連接構建成完整的網絡控制系統,實現節點同汽車整車控制系統的有效連接,考慮到汽車運行的核心部件(包括發動機、自動變速器、ABS等控制單元的節點)對時間方面的相應要求較高,需做出快速響應以避免安全事故的發生,將這些節點組成高速總線網絡;對實時性要求相對較低的車燈控制、門鎖系統等節點構成低速網絡。跨接在兩條總線間的網關負責數據交換。采用相互獨立的高速和低速總線結構,節點控制單元信號同總線間的接收和傳輸,總線至負責共享信息的傳送(無需傳送本地用信息),增加了總線的負載能力。

圖1 整車CAN總線網絡模型圖
將各控制系統由節點和網關連接起來,進而組成了汽車電子控制網絡。
每控制節點電路由四部分構成,即 CAN控制器(采用SJA 1000)、收發器(采用82C250)、單片機(CPU,采用日89C51)和通信線路,具體的硬件電路設計如圖2所示[4]。
作為中央控制處理器單片機的功能在于整體控制和操縱節點,通過初始化程序初始化總線控制器并進行功能設定。單片機89C51的P0口(p0.0—p0.7)分別連接控制器SJA 1000的數據線(AD0—AD7),單片機的片選信號為P2.7連接CS口(SJA I 000),CPU完成對控制器的訪問, RD,WR,ALE(89C51的通信握手線)分別與SJA 1000對應相連,SJA 1000的INT引腳通過連接89C51的INT0使單片機能夠接受SJA1000的中斷請求并對其進行訪問(以中斷方式)[5]。

圖2 硬件電路圖
通過收發器82C250連接CAN總線線路以使節點的的抗干擾能力得以顯著提高,從而提升電路的安全性能,將收發器的輸入輸出引腳(高、低點電平)通過5歐的電阻實現同CAN總線線路的連接,在限流的基礎上防止收發器芯片受到過流的沖擊;通過將小電容并聯在輸入輸出引腳地之間來消除高頻干擾并降低電磁輻射;在兩輸入端與地之間為防止瞬變干擾的出現可通過使用防雷擊管實現;收發器的引腳上連接斜率率電阻(范圍在16~140千歐之間),根據實際總線通信速度的需求對電阻大小進行調整和確定[6]。
本次設計的目的在于對總線的通信過程進行模擬,完成基本通信功能,因此只做節點仿真,在此基礎上節點就能夠實現基本的數據通信。
(1) 初始化過程
數據在CAN總線節點進行傳送或接收前,需對總線控制器SJA1000在復位模式下進行初始化,具體的初始化流程如圖3所示。

圖3 初始化流程圖
(2) 發送程序設計
為完成發送節點數據,需先分裝待發送的數據,將信息組合成一幀報文,接下來讀取狀態寄存器,確定能否發送,數據的格式及標識符設置完成后,將報文送入發送緩存區中并啟動SJA 1000發送,具體的流程圖如圖4所示[7]。
(3) 接收程序設計
讀取狀態寄存器,完成對異常情況的判斷,在此基礎上完成相應處理,直到情況正常后完成數據接收過程,以查詢方式接收報文為例(查詢方式接收的編程思想基本相同),具體的接收程序流程圖如圖5所示。

圖4 數據發送流程圖

圖5 接收程序流程圖
兩個不同CAN網段的連接及數據的轉發皆由網關實現,具體的硬件電路結構如圖6所示。

圖6 網關硬件結構圖
主要由兩路CAN控制器(由CAN控制器和收發器構成)和一個CPU(監控兩個網段的通信、處理相應的事務)組成。為保證CAN接口間的隔離,CAN總線收發器的線路皆采用隔離措施,隔離網控器與CAN總線,兩個網段保持獨立狀態,從而使系統設備的安全性能得以有效提高[8]。
兩個CAN網段間的數據轉遞通過網關采用存儲轉發的方式實現,在設計軟件時需先在89C52內的RAM中完成兩個數據緩沖區的開發,CANFIFO1、CANFIF02分別用于緩存低速、高速總線的數據,CPU接受數據時采用中斷方式,使數據轉發時間縮短,片內RAM采用FIFO機制管理,保證了數據傳送的可靠性,軟件設計主要包括系統監控程序、數據發送和接收程序。
(1) 監控程序設計
需監視兩路總線的數據緩沖區,為防止FIFO的溢出,當有數據需轉發時,給通信任務繁忙的一方分配大容量的FIFO,FIFO包含接收(由接收數據子程序控制)和發送數據(由發送數據子程序控制)兩個指針,當數據緩沖區中有數據時兩指針表現出不相等的狀態,CAN網關主監控程序的具體流程如圖7所示[8]。

圖7 監控程序流程圖
(2) 接收數據子程序設計
當某條CAN總線需要接收數據時則首先發送中斷請求至CPU,由CPU執行對應的處理程序,在數據緩存區FIFO中存入接收數據,并對FIFO接收數據指針進行修改,對存儲數據的有效字節長度進行調整,從而完成數據的接收,網管接收數據子程序流程如圖8所示。
(3) 發送數據子程序設計
兩個CAN總線控制器各自具有發送數據子程序,某一FIFO數據緩沖區(同某一路CAN控制器對應)有數據被監控程序監測到時,在發送數據前需先對其進行檢測,符合發送條件,則向另一路CAN總線發送數據,對存儲數據的有效字節長度進行調整,發送數據子程序流程如圖9所示。
為對本文所設計的基于CAN總線汽車電子控制網絡節點的通信功能進行檢測,首先需完成兩塊試驗線路板的制作,在設計完軟硬件后對汽車電子控制網絡節點進行練級試驗,具體的節點通信結構框圖如圖10所示。

圖8 接收數據子程序流程圖

圖9 發送數據子程序流程圖

圖10 節點通信結構框圖
具體的通信試驗過程及結果為:通過CAN總線連接兩塊試驗板,在接收端二極管全滅的狀態下,設置發送端八位撥動開關呈現“11110000"時則按動發送按鍵,此時接收端表現出“亮亮亮亮滅滅滅滅”的狀態;當在發送端依撥動開關使其呈現“11111111"時發送,接收端的八位LED呈現出全亮的狀態;當在發送端依撥動開關使其呈現"01010101 "時發送,接收端的八位LED呈現出“滅亮火亮滅亮滅亮”,這一實際檢測結果表明通信結果正確,證明了CAN能夠實現基本的通信功能,,具有一定的實用價值。
本文通過對汽車電子控制系統的組成及功能進行分析,完成了基于CAN總線的汽車電子控制網絡模型的構建,并對汽車電子控制網絡節點及控制網絡網關的軟硬件進行設計,對控制節點在依據CAN總線協議的基礎上通過使用單片機技術進行仿真,使CAN通信得以初步實現,該汽車電子控制網絡模型有助于汽車維修和維護工作起到指導作用,具有一定的實用價值。