如何設計基于CAN/LIN總線的車身網絡控制系統?
1 前言
本文引用地址:http://cqxgywz.com/article/201808/385063.htm隨著汽車電子技術及網絡技術的不斷發展,人們對汽車安全性、可靠性的要求也越來越高,為了解決由汽車電子元器件的增加而帶來的通信問題,這就要求采用一種高速、多路、共享的汽車通信網絡。
目前,已經開發出多種總線,如CAN(Controller Area Network)控制器局域網[1],LIN(Local Interconnect Network)局域互聯網[2],FlexRay,Most等。但CAN和LIN構成目前汽車上最廣泛的總線形式。
2 CAN總線介紹
20世紀80年代末,德國博世公司為解決現代汽車中眾多控制單元、測試儀器之間的實時數據交換而開發了一種串行通信協議CAN[1],并使其成為國際標準(ISO11898)。到目前為止,世界上已擁有20多家CAN總線控制器芯片生產商,110多種CAN總線協議控制器芯片和集成CAN總線協議控制器的微控制器芯片。
CAN總線由于采用了獨特的設計和新的技術,與一般的通信總線相比,它具有突出的可靠性、實時性和靈活性。CAN采用多主工作方式,成本低,且具有極高的總線利用率;CAN總線具有可靠的錯誤處理和檢錯機制,采用短幀結構,傳輸時間短,受干擾的概率低;采用非破壞性總線仲裁技術,節點在錯誤嚴重的情況下具有自動退出功能。
3 LIN總線介紹
1998年,Audi、Motorola、BMW、DaimlerChrysler 、VCT、Volvo和Volkswagen七家公司聯合提出了新型A類總線[3-5]——LIN(Local Interconnect Network)。LIN是一種低成本短距離的低速網絡,它旨在傳送開關設置和傳感器輸入等狀態的變化,并對這種變化做出響應,因此它只適用于對傳送時間要求不高的低速事件,并不適用于發動機控制等高速事件。
LIN總線有其獨特的特點,它成本低,基于通用的UART/SCI接口;LIN的傳輸速率可高達20Kb/s,總線長度最大可以達到40m;采用單主多從模式,不需要總線仲裁;在從節點中不需要晶體振蕩器和陶瓷振蕩器時鐘就能實現自同步:可預先計算確定性信號的傳播時間;無需改變LIN從節點的硬件和軟件就可以在網絡上增加或刪除節點等。
3整車系統通信網絡設計
整車系統通信網絡以CAN總線為主,LIN總線為輔,CAN和LIN在汽車通信網絡中相互結合應用共同構架汽車整車系統通信網絡。汽車上各個控制系統對網絡信息的傳輸延遲比較敏感,如發動機控制、變速箱控制、安全氣囊控制、ASR/ABS/ESP控制、牽引力控制等對網絡信息傳輸的實時性要求較高,需要采用高速CAN總線,其傳輸速率高達500kbps~1Mbps;空調控制、儀表控制、雨刷控制、照明控制、門窗控制等需要采用低速LIN總線,其傳輸速率為20kbps。低速LIN總線對信息傳輸的實時性要求不高,但子系統數量較多,將這些低速子系統與高速子系統分開,有利于保證高速子系統的實時性,同時還可以降低成本。基于上述考慮,汽車整車CAN/LIN總線網絡拓撲結構圖如圖1所示。
CAN和LIN總線相互獨立,通過主控制器(CAN/LIN網關)進行數據共享和數據交換。主控制器也是整車管理系統的核心,它的主要功能就是分析處理各種信息并發出指令,還起到協調汽車各個控制單元及電器設備工作的作用。
4 系統軟硬件設計
4.1 CAN/LIN接口設計
CAN/LIN網絡中有很多的CAN節點和LIN節點,它們通過一個CAN/LIN接口網關實現CAN/LIN網絡之間的數據通信。CAN/LIN總線接口設計如圖2所示,通過CAN/LIN總線的接口,CAN、LIN數據通過中央控制器可以相互轉換,當LIN數據幀需要傳輸到CAN網絡時,控制器網關收到LIN總線數據幀后就會將LIN標志符轉換成CAN標志符,這樣數據就從LIN總線傳輸到了CAN總線,反之數據也可以從CAN總線傳輸到LIN總線。
4.2 CAN通信網絡硬件設計
為CAN總線通信接口卡電路原理圖,系統采用P87C591芯片作為主控制器。電控單元的微控制器(P87C591)通過數據總線經過光電隔離器(6N137)與CAN總線控制器(SJA1000)直接相連。CAN總線控制器帶有一個接收緩沖器和一個發送緩沖器,CAN總線控制器的發送端口Tx0,接受端口Rx0、Rx1分別與CAN總線發送接收器的TxD、RxD、Vref端口直接相連,CAN總線的兩條差分接收發送線CAN_L和CAN_H各接一個120 的總線匹配電阻。當CAN總線被某個節點占用的時候,該節點的發送端接CAN_H,電平為3.5V,接收端接CAN_L,電平為1.5V,當CAN總線空閑時,CAN_H和CAN_L上的電平均為2.5V。
系統采用PCA82C250作為CAN控制器P87C591和物理層總線間的接口,提供對總線發送和接收數據。使用PCA82C250還可以提高系統得抗干擾能力,保護總線,降低射頻干擾,實現熱防護等。
為了進一步提高系統的抗干擾能力,選用高速光電隔離芯片6N137構成隔離電路,將微控制器P87C591的I/O信號與SJA1000隔離,以提高系統的可靠性。
4.3 LIN通信網絡硬件設計
LIN節點的硬件接口電路主要包括微控制器P87LPC76X,LIN收發器MC33399和電源調整電路。P87LPC76X采用80C51加速處理器結構,指令執行速度是標準80C51MCU的2倍。微控制器由TX0向MC33399的TXD發送數據,MC33399的RXD向微控制器的RX0發送數據。該電路采用Wake引腳輸入開關喚醒方式,其中5V外部穩壓器是可控的。由于該電路內部在LIN引腳與電源引腳集成了電阻和串聯二極管,所以總線從節點不需要其它外置元件。但對于主節點,則必須在外部增加 的電阻,并且要串聯一個二極管以防止電池斷電時MC33399通過總線供電。
4.3 CAN/LIN總線軟件設計
CAN通信接口模塊程序主要包括三部分:初始化子程序、發送子程序(包括中斷服務程序)和接收子程序。程序開始時即進入程序初始化,進入初始化程序有三種方式:一是硬件復位;二是軟件復位;三是上電復位。初始化程序會對所有的報文對象進行初始化操作(所有值設置為0)。初始化結束之后,程序開始讀取開關狀態,進入CAN發送子程序,在CAN發送子程序中,只有當發送緩沖器為空時才可以發送數據,否則將會等待直到發送緩沖器為空。接收子程序從接收緩沖器中讀取接收數據,經程序處理后即可接收。
LIN通信接口模塊程序也主要包括三部分:LIN初始化子程序、發送子程序(包括中斷服務程序)和接收子程序。在初始化階段,對LIN收發器進行配置并將協議處理其變量賦初值。同CAN主節點軟件發送子程序一樣,只有在發送緩沖器為空時才可以發送數據。中央控制器節點是LIN總線的主節點,其他的都為從節點,所有的LIN幀都由主節點發送,且主節點負責LIN節點的監控和管理。










評論