寧 濤
(合肥工業大學 機械與汽車工程學院,合肥 230009)
隨著汽車電子技術的發展以及人們對汽車舒適性、安全性、功能性等要求的不斷提高,汽車上的電子控制單元也越來越多。若仍采用傳統的通信方式,會使汽車上的線束越來越多,這不僅增加了整車的重量,增加了生產的成本,同時也加大了布線的難度。現在越來越多的汽車上采用CAN總線,CAN總線又稱作汽車總線,其全稱為“控制器局域網(CAN-Controller Area Network)”。 CAN 總線是一種現場總線,是德國Bosch公司為解決現代汽車中眾多的控制與測試儀器之間的數據交換而開發的一種串行數據通信協議。CAN總線可以將汽車上的電子控制單元連接成一個網絡,可以實現各個控制節點的數據共享,增強控制功能,提高汽車的安全性,降低燃油的消耗以及生產成本。SAE J1939協議是基于CAN總線通信協議制定的車輛應用層通訊協議。它是由美國汽車工程學會(SAE)發布的,是一類專門用于卡車、大客車、農業機械等的CAN 總線通信協議[1]。
早在20世紀80年代,Bosch的工程人員開始研究用于汽車的串行總線系統,因為當時還沒有一個網絡協議能完全滿足汽車工程的要求。1983年,UweKiencke開始設計新的串行總線,參加研究的還有Mercedes-Benz公司、Intel公司,還有德國兩所大學的教授。1986年,Bosch在SAE(汽車工程人員協會)大會上第一次提出了CAN。1987年,INTEL就推出了第一片CAN控制芯片—82526;隨后Philips半導體推出了82C200。1991年9月Bosch公司制定并發布了CAN技術規范(version 2.0),該規范包括A和B兩個部分。1993年,CAN的國際標準ISO11898公布,從此CAN協議被廣泛的用于各類自動化控制領域。1994年美國汽車工程師協會以CAN為基礎制定了SAEJ1939標準,用于卡車和巴士控制以及通信網絡。發展到今天,幾乎每一輛歐洲生產的轎車上都有CAN。
CAN總線與一般的總線相比具有突出的可靠性、靈活性和實時性。其特點如下:
(1)CAN總線是目前為止唯一有國際標準的總線。
(2)CAN總線采用非破壞的仲裁技術。多個節點同時向總線發送信息時,就會導致沖突,此時優先級較低的節點主動退出發送,優先級較高的節點可以不受影響繼續傳送數據,這就節省了總線沖突仲裁的時間。
(3)CAN為多主的方式工作,網絡上的節點可以在任何時刻向總線發送信息。
(4)CAN的節點只需對報文的標識符濾波就可以實現點對點、一點對多點及全局廣播等幾種方式傳送接收數據。
(5)CAN總線直接通信在速率5 kbps的最遠距離可達10 km,通信速率最高可達1 Mbps,此時的通信最長距離為40 m。
(6)CAN總線上的節點數目主要取決于總線驅動電路,目前可達110個;在標準幀報文標識符有11位,而在擴展幀的標識符(29位)的個數幾乎不受限制。
(7)報文采用短幀結構,傳輸時間短,受干擾概率低,保證了數據出錯率極低;CAN的每幀信息都有CRC校驗以及其他的檢驗措施,具有極好的檢錯效果。
(8)CAN節點在錯誤嚴重的情況下具有自動關閉輸出的功能,以使總線上其他節點的操作不受影響。
CAN總線協議只定義了物理層和數據鏈路層的標準,要將CAN總線應用于工程項目和產品中必須制定上層的應用層協議。SAE J1939協議是目前在大型汽車中應用最廣泛的應用層協議,速率可達到 250 Kbps[3]。SAE J1939 協議是以 CAN 2.0B 為基礎的,它不僅定義了物理層和數據鏈路層,還定義了網絡層和應用層的協議。它的數據鏈路層定義了信息幀的數據結構、編碼規則,包括通信優先權、傳輸的方式、通信要求、總線的仲裁、錯誤的檢測以及處理,對CAN擴展幀的29位標識符重新分組定義,使得報文的標識符能夠描述報文的全部特征。CAN擴展幀的29位標識符與J1939協議定義的29位標識符定義關系如圖1所示。
SAE J1939應用層協議定義了協議數據單元(PDU),它用來定義CAN數據幀的消息的意義。SAE J1939協議數據單元有七個部分組成,分別是報文的優先級、保留位、數據頁、PDU格式、特殊PDU、源地址和數據場等,如圖2所示。每一個CAN數據只能有一個PDU。其中優先級P有3位,決定報文的優先級,其值越小優先級越高;R為保留位,以備以后開發使用;數據頁DP是選擇參數群描述的輔助頁;PDU格式PF的8位是確定數據場對應的參數群編號的場;特定PDU(PS)的定義取決于PF的定義,當PF的值在0~239之間時,PS的值表示目標地址,報文為點對點發送到目的地址;當PF的值在 240~255 之間時,報文向全局地址發送[4],PS 表示的是群擴展值;源地址(SA)定義發送該報文的設備地址,一個源地址只能匹配一個設備;數據場為該條報文所攜帶的數據,最多有8個字節長度。
客車上電子控制系統主要包括發動機電子控制單元、變速器電子控制單元、車身控制單元、儀表控制單元、行車記錄儀控制單元、ABS控制單元等[6]。各控制節點通過CAN總線連接起來。由于發動機節點、變速器節點以及ABS節點等對數據傳輸、共享的實時性要求比較高,速率達到500 kb/s,這些節點通過高速CAN總線連接起來;而車身等節點對實時性要求不高,使用的是低速CAN連接各節點,速率是100 kb/s。由于低速CAN與高速CAN之間的傳輸速率不同,需要經過整車控制器(網關)作為接收兩邊報文的中轉站,然后再將數據發送到對方,實現數據的共享。客車控制系統的網絡拓撲結構如圖3所示。
SAE J1939協議的應用層規定了車輛控制與通信用到的各種參數,包括信號的描述可疑參數編號(SPN)和參數群編號(PGN)。SPN 為信號參數,PGN為報文參數[6]。其中PGN包括29位標識符中的保留位、數據頁、PDU格式PF和群擴展場。圖3列出了客車控制系統當中主要的控制節點,本文就以發動機控制節點的主要報文內容說明SAE J1939應用層協議的應用。發動機控制節點主要采集發動機的轉速、燃油溫度、冷卻液溫度、冷卻液壓力以及機油壓力信息。由于發動機節點是比較重要的節點,將其地址設置為0[7],發送的數據也有較高的優先級。發動機控制節點將采集的數據發送到整車控制器進行相應的處理計算,整車控制器再將數據發送到其他的節點,如儀表節點進行顯示。發動機節點發送報文的數據長度為8字節,發送周期20 ms,數據頁為0,PDU格式PF值240,為群擴展格式;特定PDU(PS)為 3,優先級為 3,參數群編號為 61 443(0xF003)。具體報文數據內容定義如表1所示。

表1 發動機控制單元報文數據域定義
CAN總線是目前在汽車上應用最廣泛,也是最有前途的總線,其不僅通信速率高,通信可靠性也高。SAE J1939協議是基于CAN總線的在汽車上應用最廣泛的應用層協議,對汽車應用到的各類參數都進行了定義。將來J1939協議在汽車上會有很廣闊的應用前景[6]。
本文通過J1939協議,對客車各控制節點報文具體參數進行了詳細的定義,各節點之間能夠實時發送與接收數據,實現數據共享,不僅提高了客車控制效率和整體性能,而且還提高了安全性、燃油經濟性和操作的穩定性。
[1]羅峰,孫澤昌.汽車CAN總線系統原理、設計與應用[M].北京:電子工業出版社,2010,1.
[2]饒運濤,鄒繼軍,鄭勇蕓.現場總線CAN原理與應用技術[M].北京:北京航空航天大學出版社,2003.
[3]李然,武俊峰,王海英,趙旭.電動公交客車CAN總線網絡通信結構的設計[J].哈爾濱理工大學學報,2012,17(1):68-73.
[4]周躍鋼.基于LabVIEW和J1939協議的CAN總線通訊平臺構建[J].汽車科技,2011,(6):18-22.
[5]李誠,孟廣仕,劉波.CAN總線在客車上的網絡控制[J].科技縱橫,2009,134-138.
[6]保翔.基于J1939協議的發動機電控信號的提取方法[J].機電信息,2009,30:16-17.
[7]趙佳.基于SAE J1939協議的混合動力客車通訊技術[J].客車技術與研究,2011,(2):55-57.
[8]高燕,高松,趙明.SAE J1939協議在客車上的應用現狀及展望[J].工業控制計算機,2006,19(4):68-69.