1. 程式人生 > >can匯流排通訊協議

can匯流排通訊協議

轉自 http://blog.csdn.net/woneedjob/article/details/6428310

隨著積體電路和嵌入式電腦在汽車上的廣泛應用,現代汽車上的電子控制器的數量越來越多,常見的有發動機的電子燃油噴射裝置、防抱死制動裝置(ABS)、安全氣囊裝置、電動門窗裝置、主動懸架等。電控系統的增加雖然提高了轎車的動力性、經濟性和舒適性,但隨之增加的複雜電路也降低了汽車的可靠性,增加了維修的難度。從佈線角度分析,傳統的電子氣系統大多采用點對點的單一通訊方式,相互之間少有聯絡,這樣必然造成寵大的佈線系統。因此,一種新的概念——汽車上電子控制器區域網絡CAN,也就應運而生。為使不同廠家生產的零部件能在同一輛汽車上協調工作,必須制定標準。按照ISO有關標準,CAN的拓撲結構為匯流排,因此稱為CAN匯流排。CAN匯流排被設計作為汽車環境中的微控制器通訊,在車載各電子控制裝置ECN之間交 換資訊,在車載各電子控制裝置ECN之間交換資訊,形成汽車電子控制網路。 

控制器區域網CAN(Controller Area Network)是一種多主方式的序列通訊匯流排,基本設計規範要求有高的位速率,高抗電磁干擾性,而且能夠檢測出產生的任何錯誤。CAN在汽車上的應用,具有很多行業標準或者是國際標準,比如國際標準化組織(ISO)的ISO11992、ISO11783以及汽車工程協會(Societyof Automotive Engigeers)的SAE J1939。CAN匯流排已經作為汽車的一種標準裝置列入汽車的整車設計中。
CAN匯流排簡介
CAN通訊協議規定了4種不同的幀格式,即資料幀、遠端幀、錯誤幀和超載幀。基於以下幾條基本規則進行通訊協調:匯流排訪問、仲裁、編碼/解碼、出錯標註和超裁標註。CAN遵從OSI模型。按照OSI基準模型只有三層:物理層、資料鏈路層和哀告層,但應用層尚需使用者自己定義。CAN匯流排作為一種有效支援分散式控制或實時控制的序列通訊網路,應用範圍遍及從高速網路到低成本的多線路網路。如:CAN在汽車中的發動機控制部件、ABS、抗滑系統等應用中的位速率可高達1Mbps。同時,它可以廉價地用於交通運載工具電器系統中,例如電氣視窗、燈光聚束、座椅調節等,以替代所需要的硬體連線。其傳輸介制裁為雙絞線,通訊速率最高可達1Mbps/40m,直接傳輸距離最遠可達10km/5kbps,掛接裝置數最多可達110個。CAN為多主工作方式,通訊方式靈活,無需站地址等節點資訊,採用非破壞性匯流排仲裁技術,滿足實時要求。另外,CAN採用短幀結構傳輸訊號,傳輸時間短,具有較強的抗干擾能力。
CAN匯流排與其它通訊協議的不同之處主要有兩方面:一是報文傳送不包含目標地址,它是以全網廣播為基礎,各接收站根據報文中反映資料性質的識別符號過濾報文,其特點是可在線上網下網、即插即用和多站接收;另外一個方面就是特別強化了資料安全性,滿足控制系統及其它較高資料要求系統的需求。
在現代汽車的設計中,CAN匯流排已經成為構建汽車網路的一種趨勢;而汽車網路作為直接與汽車內部各個ECU連線並負責命令的傳遞、資料的傳送及共享,其可靠性和穩定性與整車的效能緊密相關。本文的設計開發是在基於試驗條件下搭建的模擬平臺,節點之間的通訊是通過對等的CAN通訊節點進行的。試驗表明其執行效能穩定可靠,但實用化仍需要進一步的研究和改進,且程式的通訊處理能力、糾錯和容錯能力有待進一步的提高.
比如:
把CAN匯流排融合到嵌入式平臺中,在其ARM-EP9315和ARM-S3C2440嵌入式平臺上都做到了CAN匯流排功能的實現!ARM嵌入式控制平臺,具有開放、整合度高、尺寸小、可擴充套件性強、低功耗等特點,非常適合與數字家電、車載裝置、通訊終端、網路裝置等的應用。如今有了CAN匯流排的實現,使其在此方面的應用更為有效!


基於微控制器AT89C52的CAN匯流排分散式測控系統的研製 
1 CAN匯流排網路的技術特點[1][2]  
用通訊資料塊編碼,可實現多主工作方式,資料收發方式靈活,可實現點對點、一點對多點及全域性廣播等多種傳輸方式;可將DCS結構中主機的常規測試與控制功能分散到各個智慧節點,節點控制器把採集到的資料通過CAN介面卡傳送到匯流排,或者向匯流排申請資料,主機便從原來繁重的底層裝置監控任務中解放出來,進行更高層次的控制和管理功能,比如故障診斷、優化協調等; 

採用非破壞性基於優先權的匯流排仲裁技術,具有暫時錯誤和永久性故障節點的判別及故障節點的自動脫離功能,使系統其它節點的通訊不受影響;同時,CAN具有出錯幀自動重發功能,可靠性高;   

訊號傳輸用短幀結構(8位元組),實時性好; 
  
不關閉匯流排即可任意掛接或拆除節點,增強了系統的靈活性和可擴充套件性;  

採用統一的標準和規範,使各裝置之間具有較好的互操作性和互換性,系統的通用性好;   

通訊介質可採用雙絞線,無特殊要求;現場佈線和安裝簡單,易於維護,經濟性好。 

總之,CAN匯流排具有實時性強、可靠性高、結構簡單、互操作性好、價格低廉等優點,克服了傳統的工業匯流排的缺陷,是構建分散式測控系統的一種有效的解決方案。

2系統總體硬體設計方案 
首先,定義各節點的功能,確定各節點檢測或控制量的數目、型別、訊號特徵。這是進行微機測控系統網路化的第一步。原則是儘量避免重複測試。智慧節點模組絕大部分是輸入輸出模組,調節迴路可以跨模組構成迴路。但考慮到調節迴路的安全性,為了保證在上位機或整個通訊線路出現重大故障時迴路調節不受到影響,設計了隔離型、自整定PID、隔離型溫度調節器等帶有調節功能的模組。它們的輸入輸出通道都在同一模組中,其底層軟體的功能很強,所有的輸入處理、輸出增量的計算(多種調節演算法可通過組態選擇,包括串級調節)、輸出,包括自整定模組的過程引數的自動識別都在本模組實現,保證了調節迴路的安全性、可靠性。

其次,選擇各節點控制器和相應的CAN適配元件。由於各測控節點功能相對單一,資料量少,因此對CPU的要求大大降低,採用8051系列微控制器即可滿足要求。CAN 匯流排介面卡件主要有:控制器介面、匯流排收發器和I/O器件。採用Philips公司生產的82C200CAN控制器和與其配套的82C250CAN收發器。82C200具有完成高效能通訊協議所要求的全部必要特性。具有簡單匯流排連線的82C200可完成物理層和資料鏈路層的所有功能。
最後,按照CAN匯流排物理層協議選擇匯流排介質,設計佈線方案,連線成CAN匯流排分散式測控網路。如圖1所示。
3系統的硬體組成[3][4][5]
(1)CAN匯流排介面模組
① 微處理器
目前廣泛流行的CAN匯流排器件有兩大類:一類是獨立的CAN控制器,如82C200,SJA1000及Intel 82526/82527等;另一類是帶有晶片CAN的微控制器,如P8XC582及16位微控制器87C196CA/CB等。根據當前市場、開發工具和課題的實際需要,系統的智慧節點均選用ATMEL 8位微控制器AT89C52為微處理器。

② CAN控制器
CAN控制器選用SJA1000作為控制器。SJA1000是高整合度CAN控制器。具有多主結構、匯流排訪問優先權、成組與廣播報文功能及硬體濾波功能。輸入時鐘頻率為16MHh時鐘,輸出可程式設計控制。由以下幾部分構成:介面管理邏輯、傳送快取器、接收快取器、位流處理器、位定時邏輯、收發邏輯、錯誤管理邏輯、控制器介面邏輯等。

SJA1000有很多新功能 :標準結構和擴充套件結構報文的接受和傳送;64位元組的接收FIFO;標準和擴充套件幀格式都具有單/雙接收濾波器;可進行讀/寫訪問的錯誤計數器;可編織的錯誤報警限制:最近一次的錯誤程式碼暫存器;每一個CAN匯流排錯誤都可以產生錯誤中斷;具有丟失仲裁定位功能的丟失仲裁中斷;單發方式(當發主錯誤或丟失仲裁時不重發);只聽方式(監聽CAN匯流排,無應答,無錯誤標誌);支援熱插拔(無干擾軟體驅動位速率監測)。因此,系統的智慧節點均選用SJA1000作為CAN控制器。

③ CAN匯流排收發器
CAN匯流排收發器選用PCA82C250作為匯流排收發器。 PCA82C250是CAN 協議控制器和物理匯流排之間的介面。82C250 可以為匯流排提供不同的傳送效能,為CAN 控制器提供不同的接收效能。而且它與“ISO 11898”標準完全相容。PCA82C250的目的是為了增大通訊距離,提高系統的瞬間抗干擾能力,保護匯流排,降低射頻干擾(RFI)實現熱防護等。為了進一步提高抗干擾措施,在兩個CAN器件之間使用了由高速隔離器件6N137構成的隔離電路。 CAN器件與微處理器的硬體連線如圖2所示。
硬體電路的設計並不太困難,但有幾點應引起注意:
匯流排兩端兩個120Ω的電阻,對於匹配匯流排阻擾,起著相當重要的作用。忽略掉它們,會使資料通訊的抗干擾性及可靠性大大降低,甚至無法通訊。 

82C50第8腳與地之間的電阻Rs稱為斜率電阻,它的取值決定了系統處於高速工作方式還是斜率控制方式。把該引腳直接與地相連,系統將處於高速工作方式,在這種方式下,為避免射頻干擾,建議使用遮蔽電纜作匯流排;而在波特率較低、匯流排較短時,一般採用斜率控制方式,上升及下降的斜率取決於民的阻值,實驗資料表明15~200kΩ為Rs較理想的取值範圍,在該方式下,可以使用平行線或雙絞線作匯流排。 

SJA1000的TX1腳懸空,RX1引腳的電位必須維持在約0.5Vcc上,否則,將不能形成CAN協議所要求的電平邏輯。如果系統傳輸距離近,環境干擾小,可以不用電流隔離,這樣可直接把82C250的VREF端(約為0.5 Vcc)與RX1腳相連,從而簡化了電路。 

在系統中,SJA1000的片選訊號一般由地址匯流排經譯碼獲得,並由此決定出CAN控制器各暫存器的地址。實際應用中,採用微控制器AT89C52的P2.7為片選訊號。所以,SJA1000的地址為:7F00~7F32H。

當上電覆位時,AT89C52的上電覆位,需要從低到高的電平變化來啟用,而SJA1000的17腳RST被啟用,需要出現一個由高電平到低電平的跳變,因此,這必須加一個反相器。

(2)資料採集模組
資料採集模組用來將各類感測器的資料傳送到CAN總線上。整個電路包括:看門狗X5045,微控制器89C52,鎖存器74LS373,A/D轉換器ADC0809以及CAN控制器SJA1000和收發器82C250。電路板如圖3。

資料採集模組的工作原理:各類感測器採集到資料後將0—5V的模擬量傳送到ADC0809,0809將轉換成的數字量傳給89C52,最後微控制器將採集到的資料送到SJA1000通過CAN匯流排收發器82C250傳上匯流排,完成資料採集工作。

(3)控制模組
是一個帶有CAN通訊功能的隔離型控制器。該模組有一個數據輸入點,可以是命令或其他訊號,有一個模擬量輸出,供輸出執行機構是連續變化的控制系統使用,例如控制步進電機;還有一路是數字量輸出,供執行機構是兩位式的控制系統使用,例如開關裝置。這個控制器可以單獨作為一個調節器使用,因為在該模組上提供了完整的顯示視窗和操作按鈕,可以設定溫度設定值、PID調節引數等執行過程中可以顯示被控物件的PV值和SV值。該模組可以根據設定的控制點及升、降的時間實現自動調節。帶有CAN通訊口,可以與微機實現通訊,也就是說控制模組可以接入CAN 網路系統。通過上位機實現對多個節點上的控制模組設定各控制點的上下限控制點、PID值、實現時間等控制引數,並實時記錄各控制器的測量值,描繪出變化曲線,供實驗人員對實驗結果進行分析。如圖4所示。

4系統軟體設計
(1)CAN 匯流排通訊模組
CAN匯流排測控系統的通訊軟體分為3部分:CAN初始化、資料傳送和資料接收。
① CAN初始化
其主要是設定CAN的通訊引數。需要初始化的暫存器有:模式暫存器(Peli CAN模式)、時分暫存器、接收程式碼暫存器、遮蔽暫存器、匯流排定時暫存器、輸出控制暫存器等。需要注意的是,這些暫存器僅能在復位期間可寫訪向,因此,在對這些暫存器初始化前,必須確保系統進入了復位狀態,並且系統中各CAN控制器的匯流排定時暫存器的初始化字必須相同。

② 資料傳送
現場的各感測器把環境多引數的檢測訊號(數字量、模擬量、開關量)進行轉換處理後,發向CAN控制器的傳送緩衝區,然後啟動CAN控制器的傳送命令,此時CAN控制器將自動向匯流排傳送資料,不再需感測器的微控制器進行干預。若系統中有多個感測CAN控制器同時向匯流排傳送資料,則CAN控制器通過資訊幀中的識別符號來進行仲裁,識別符號數值最小的CAN控制器具有對匯流排的優先使用權。

③ 資料接收
整個溫室微機測控系統中的CAN控制器檢測到總線上有資料時會自動接收總線上的資料,存入其接收緩衝區,並向89C52微控制器傳送接收中斷,啟動中斷接收服務程式,89C52通過執行中斷接收服務程式,從CAN控制器的接收緩衝區讀取資料,並對其進行進一步處理工作。

(2)監控模組
集成了所有的資料採集、引數設定、資料統計分析等功能。同時,為了實現操作人員對生產過程的人工干預,如修改給定值、控制引數和報警限等,添加了引數的修改功能;為了建立人機資訊聯絡,並且能將各節點傳輸來的資料以圖形、圖表或其它動態方式顯示出來,本系統可以使用任何具有DDE(Dynamic Data Exchange)介面的MMI(Man-Machine interface)軟體;為了更好的管理各種資料,採取了組態控制方式,能夠接收來自MMI軟體以及使用者軟體的DDE連線請求,並將該請求傳遞給通訊驅動部分,由通訊驅動轉換為通訊訊號通過傳輸媒體傳遞給智慧模組的固化軟體。並將模組的應答作為DDE操作的結果返回給MMI軟體及使用者軟體。

5 結論
將先進的現場匯流排技術(CAN BUS)應用於智慧測控系統,大大提高了系統的可靠性;自主開發了符合國際標準的基於微控制器的智慧節點,不僅大量節約了資金,而且可以購置通用的同類裝置,可節約大量的研發費用;基於工控機的上位機提供了良好的人機介面,使操作更加方便,直觀。