can總線通訊協議
控制器局域網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)應用於智能測控系統,大大提高了系統的可靠性;自主開發了符合國際標準的基於單片機的智能節點,不僅大量節約了資金,而且可以購置通用的同類設備,可節約大量的研發費用;基於工控機的上位機提供了良好的人機界面,使操作更加方便,直觀。