QQ:343450875 電話: 18928954874 020-83577835
郵箱:fanli_21@163.com MSN:fanli_21@163.com
http://www.wphidled.com/http://winpower2011.cn.alibaba.com/http://winpower2010.b2b.hc360.com/ 控制局域網CAN (controllerareanetwork)是國際上應用最廣氾的現場總線之一,是德國Bosch公司為解決現代汽車中眾多的控制與測試儀器之間的數據交換而開發的一種通訊協議,它作為汽車環境中的微控制器通訊,在車載各電子控制裝置ECU之間交換信息,形成汽車電子控制網絡。比如:發動機管理系統、變速箱控制器、儀表裝備、電子主幹系統中,均嵌入CAN控制裝置。CAN是一種多主方式的串行通訊總線,基本設計規範要求有高的位速率,高抗電磁干擾性,而且能夠檢測出產生的任何錯誤。當信號傳輸距離達到10Km時,CAN仍可提供高達50 kbit/s的數據傳輸速率。它是一種有效支持分布式控制或實時控制的串行通訊網絡。CAN的應用範圍遍及從高速網絡到低成本的多線路網絡。在自動化電子領域的汽車發動機控制部件、傳感器、抗滑系統等應用中,CAN的位速率可高達1 Mbps。CAN網絡具有反映快,可靠度高的特性,應用於要求實時處理的場合,例如汽車剎車防鎖死系統安全氣囊等。今天此項通信協議已得到廣氾應用,成為現代汽車設計中必須採用的裝置,奔馳、寶馬、大眾、沃爾沃及雷諾汽車都將CAN作為控制器聯網的手段。
1 CAN總線的特點及通訊協議
1.1 CAN總線的特點
CAN總線是一種有效支持分布式控制或實時控制的串行通信網絡。其通訊介質可以是雙絞線、同軸電纜或光纖。在汽車發動機控制部件、傳感器等應用中,總線的位速率 可達1Mbit/s。CAN總線具有以下主要特性:
a. 無破坏性的基於優先權競爭的總線仲裁
b. 可借助接收濾波的多地址幀傳送
c. 具有錯誤檢測與出錯幀自動重發功能
d. 數據傳送方式可分為數據廣播式和遠程數據請求式
1.2 CAN總線幀格式[1]
CAN總線通信協議包括CAN2.0A和CAN2.0B兩種,它們的幀格式如下:
(1)CAN2.0A通信協議規定了4種不同的幀格式:
數據幀 用於節點間傳遞數據,是網絡信息的主體,其幀格式依次包括: 幀起始、仲裁場、控制場、數據場、CRC場、ACK場和幀結束。其中數據段長度可編程0~8個字節。
遠程幀 由在線單元發送,用於請求發送具有相同標識符的數據幀,其幀格式與數據幀基本相同,但沒有數據場。]
出錯幀 出錯幀是檢測總線出錯的一個信號標誌,由兩個不同的場構成。 個場由來自不同節點的錯誤標誌疊加,第二個場為錯誤界定符。CAN協議採用CRC檢驗並可提供相應的錯誤處理功能,保証數據通訊的可靠性。
超載幀 由超載標識和超載界定符組成,表明邏輯鏈路控制層要求的內部超載狀態,並將由媒體訪問控制層的一些出錯條件而被啟動發送。用於擴展幀序列的延遲時間。
(2)CAN2.0B通信協議分為兩種幀格式:
① 標準幀
標準幀信息為11個字節,包括兩部分:信息和數據部分。前3個字節為信息部分。
<1>字節1為幀信息。第7位(FF)表示幀格式,在標準幀中,FF=0;第6位(RTR) 表示幀的類型,RTR=0表示為數據幀,RTR=1表示為遠程幀;DLC表示在數據幀時實際的數據長度。
<2>字節2、3為報文識別碼,11位有效。
<3>字節4~11為數據幀的實際數據,遠程幀時無效。
② 擴展幀
<1>擴展幀信息為13個字節,包括兩部分,信息和數據部分。前5個字節為信息部分。字節1為幀信息。第7位(FF)表示幀格式,在擴展幀中,FF = 1;第6位(RTR)表示幀的類型,RTR=0表示為數據幀,RTR=1表示為遠程幀;DLC表示在數據幀時實際的數據長度。
<2>字節2~5為報文識別碼,其高29位有效。
<3>字節6~13為數據幀的實際數據,遠程幀時無效。
2 系統總體方案設計
該系統以摩托羅拉16位單片機MC9S12DP256為中央控制器,並含有CAN通信模塊、LIN通信模塊、數據採集模塊及數據存儲模塊等。發動機及底盤部分通過CAN總線與中央控制器相連,儀表板部分及車身模塊通過LIN總線與中央控制器相連,本文重點介紹的是CAN通信模塊的設計。
2.1 CAN通信模塊硬件設計
中央控制器MC9S12DP256內部帶有5路CAN控制器,msCAN是Motorola Scaleable CAN的縮寫,而msCAN12模塊則是在MC9S12系列MCU上的具體實現。它服從CAN2.0A/B 協議,集成了除收發器外CAN總線控制器的所有功能。
msCAN12基本特點如下[2]:
(1) 模塊化結構
(2) 實現了CAN2.0A/B協議,支持標準和擴展幀格式
(3) 支持遠程請求幀
(4) 雙緩衝接收存儲方案
(5) 帶有本地優先級排隊機制的三緩衝區發送存儲方案
(6) 可屏蔽、可重組標識符驗收過濾器
(7) 內置低通濾波器的可編程喚醒功能
(8) 可編程環路檢測模式支持模塊自檢
(9) 時鐘源可程控選擇CPU總線時鐘或晶體振盪器時鐘
採用msCAN12的CAN總線系統如圖1所示:
圖1 含有MC9S12及其他節點的典型CAN總線網絡系統
CAN收發器採用摩托羅拉的CAN通信物理接口芯片MC33388,它的主要特點是:
● 靜態電流低至15uA;
● 波特率範圍為10~125 kbps;
● 發生總線錯誤時可自動調整至單線模式,錯誤消失后可自動恢復正常狀態;
● 支持單總線傳輸模式;
● 總線對地、電源具有短路保護功能;
● 具有總線驅動器過熱保護功能;
● 支持無遮蔽雙絞線傳輸;
● 無功節點不影響總線狀態;
● 工作溫度範圍為-40℃~125℃。
MC33388與MCU應用電路如圖2所示:
圖2 MC33388與MCU應用電路
(
2.2 CAN數據通信接口模塊軟件設計
通信接口模塊程序主要包括三部分:初始化子程序、發送子程序和接收子程序。初始化程序主要是通過CAN控制器控制段中的寄存器寫入控制字,從而確定CAN控制器的工作方式等。有三種方式進入初始化程序:一是上電復位,二是硬件復位;三是軟件復位,即在運行期間通過給CAN控制器發一個復位請求,置復位請求位為1。在復位期間必須初始化的寄存器有控制寄存器CTL、發送控制寄存器TCR、接收中斷允許寄存器RIER、總線定時寄存器BTR、驗收控制寄存器IDAC、驗收寄存器IDAR、驗收屏蔽寄存器DMR等。
主節點CAN數據接收採用中斷方式,MCU內部的CAN控制器具有雙緩衝接收結構,對總線數據具有一定的緩存能力,通常系統採用主程序查詢方式對接收數據進行處理,並用廣播方式發送,對特殊數據採用遠程幀申請方式,這樣更有利於程序對多個任務的結構化管理,其程序流程圖如圖3所示。
CAN總線以報文為單位進行數據傳輸,節點對總線的訪問採取位仲裁方式。報文起始發送節點標識符可分為功能標識符和地址標識符。CAN協議的 特點是打破了傳統的節點地址編碼方式,而擴展了對通訊數據進行編碼的方式。採用這種方式可使不同的節點同時接收到相同的數據。總線採用CAN2.0B協議,數據標識符用29位二進製表示,即可定義229個不同的數據類型,即使對未來更複雜的汽車控制網絡其容量也足夠了。標識符的值越小,幀數據的優先級越高。通過數據鏈路控制,每個接收器完成幀接收濾波確定此幀數據是否有效。CAN控制器監聽總線電平決定發送接收是否有效,實際汽車應用中一般採用不冗余的通訊線路,而CAN協議提供強大的出錯診斷機制,在保証數據通訊的可靠性方面起了重要作用。
圖3 CAN通信程序流程圖
3 結束語
CAN總線技術,是工業控制與計算機網絡兩者邊緣的產物。無論是從網絡的結構、協議、實時性、還是適應性、靈活性、可靠性乃至成本等,工業控制的底層都有它的特殊性,特別是汽車工業中,要傳輸的信息幀都短小,要求實時性很強、可靠性高,CAN總線協議作為一種簡單而可靠的通訊協議,在車用電控單元和儀表上有很好的應用前景。本文介紹的CAN接口電路與通訊軟件結構對其他微處理器系統來說,加以適當的修改也是適用的。由於在實際的車用電氣環境中,需要考慮溫度、電磁干擾、電源等因素,設計時應考慮軟、硬件的抗干擾能力。