《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > CANopen協(xié)議之CAN總線簡介

CANopen協(xié)議之CAN總線簡介

2009-07-21
作者:致遠電子

1 引言
  隨著汽車工業(yè)的發(fā)展,20世紀80年代中期,率先由Bosch公司研發(fā)出新一代的汽車總線即控制器局域網CAN(Controller Area Network)總線,CAN總線具有布線簡單、典型的總線型結構、可最大限度地節(jié)約布線與維護成本、穩(wěn)定可靠、實時、抗干擾能力強、傳輸距離遠等特點,這些都決定了CAN總線必定是一種成功的總線。CAN總線一經推出,不僅在汽車行業(yè)得到廣泛的推廣與應用,在諸如航天、電力、石化、冶金、紡織、造紙等領域也得到廣泛應用。在自動化儀表、工業(yè)生產現場和數控機床等系統(tǒng)中也越來越多地使用了CAN總線,CAN總線的未來發(fā)展依然充滿活力,有著巨大的發(fā)展空間。
  由于CAN總線本身只定義ISO/OSI模型中的第一層(物理層)和第二層(數據鏈路層),通常情況下CAN總線網絡都是獨立的網絡,所以沒有網絡層。在實際使用中,用戶還需要自己定義應用層的協(xié)議,因此在CAN總線的發(fā)展過程中出現了各種版本的CAN應用層協(xié)議,現階段最流行的CAN應用層協(xié)議主要有CANopen、DeviceNet和J1939等協(xié)議。
  本系列文章主要介紹CAN總線、基于CAN總線的應用層協(xié)議——CANopen,以及CANopen設備的應用及組網方式。本文主要介紹CAN總線相關的概念及網絡結構。
2 CAN總線特點
  CAN總線采用差分信號傳輸,通常情況下只需要兩根信號線(CAN-H和CAN-L)就可以進行正常的通信。在干擾比較強的場合,還需要用到屏蔽地即CAN-G(主要功能是屏蔽干擾信號),CAN協(xié)議推薦用戶使用屏蔽雙絞線作為CAN總線的傳輸線。在隱性狀態(tài)下,CAN-H與CAN-L的輸入差分電壓為0 V(最大不超過0.5 V),共模輸入電壓為2.5 V。在顯性狀態(tài)下,CAN-H與CAN-L的輸入差分電壓為2 V(最小不小于0.9 V),如圖 1所示。

?


  其物理傳輸層詳細和高效的定義,使得CAN總線具有其他總線無法達到的優(yōu)勢,注定其在工業(yè)現場總線中占有不可動搖的地位,CAN總線通信主要具有如下優(yōu)勢和特點。
  (1)CAN總線上任意節(jié)點均可在任意時刻主動地向其他節(jié)點發(fā)起通信,節(jié)點沒有主從之分,但在同一時刻優(yōu)先級高的節(jié)點能獲得總線的使用權,在高優(yōu)先級的節(jié)點釋放總線后,任意節(jié)點都可使用總線。
  (2)CAN總線傳輸波特率為5 kb/s~1 Mb/s,在5 kb/s的通信波特率下最遠傳輸距離可以達到10 km,即使在1 Mb/s的波特率下也能傳輸40 m的距離。在1 Mb/s波特率下節(jié)點發(fā)送一幀數據最多需要134 μs。
  (3)CAN總線采用載波監(jiān)聽多路訪問、逐位仲裁的非破壞性總線仲裁技術。在節(jié)點需要發(fā)送信息時,節(jié)點先監(jiān)聽總線是否空閑,只有節(jié)點監(jiān)聽到總線空閑時才能夠發(fā)送數據,即載波監(jiān)聽多路訪問方式。在總線出現兩個以上的節(jié)點同時發(fā)送數據時,CAN協(xié)議規(guī)定,按位進行仲裁,按照顯性位優(yōu)先級大于隱性位優(yōu)先級的規(guī)則進行仲裁,最后高優(yōu)先級的節(jié)點數據毫無破壞地被發(fā)送,其他節(jié)點停止發(fā)送數據(即逐位仲裁無破壞的傳輸技術)。這樣能大大地提高總線的使用效率及實時性。
  (4)CAN總線所掛接的節(jié)點數量主要取決于CAN總線收發(fā)器或驅動器,目前的驅動器一般都可以使同一網絡容量達到110個節(jié)點。CAN報文分為兩個標準即CAN2.0A標準幀和CAN2.0B擴展幀,兩個標準最大的區(qū)別在于CAN2.0A只有11位標識符,CAN2.0B具有29位標識符。
  (5)CAN總線定義使用了硬件報文濾波,可實現點對點及點對多點的通信方式,不需要軟件來控制。數據采用短幀發(fā)送方式,每幀數據不超過8 B,抗干擾能力強,每幀接收的數據都進行CRC校驗,使得數據出錯機率極大限度地降低。CAN節(jié)點在錯誤嚴重的情況下具有自動關閉功能,避免了對總線上其他節(jié)點的干擾。
  (6)CAN總線通信介質可采用雙絞線、同軸電纜或光纖,選擇極為靈活,可大大節(jié)約組網成本。
3 CAN控制器介紹
  隨著CAN總線的不斷發(fā)展壯大,符合CAN2.0A和CAN2.0B協(xié)議的獨立芯片越來越多。如NXP公司推出的SJA1000及SJA1000F,可以直接與普通單片機組合,使該單片機具有CAN通信的能力。隨著CAN需求的日益增大,芯片廠商也把CAN控制器直接集成到芯片內部,例如NXP公司的LPC2119、LPC2294、LPC2378等。以下主要以LPC2378的集成CAN控制器為例,對CAN控制器作一個介紹。
  LPC2378 CAN控制器結構如圖2所示。該控制器是一個帶有發(fā)送和接收緩沖器的串行接口,但它并不含有驗收過濾器。驗收過濾器是一個獨立的模塊,能夠對所有CAN通道進行CAN標識符過濾。


  LPC2378 CAN控制器工作流程主要分為發(fā)送過程和接收過程。
  (1)發(fā)送過程
  CAN控制器完全受處理器控制,CPU通過內部總線向CAN控制器的發(fā)送寄存器里填寫需要發(fā)的數據,然后啟動CAN控制器的發(fā)送使能,發(fā)送的數據分別經過位流管理器(變成在總線上發(fā)送的二進制碼)、錯誤管理邏輯(負責檢測總線狀態(tài)及發(fā)送是否出現錯誤)及位時序邏輯(管理數據在總線上的發(fā)送時序)、CAN收發(fā)器(負責把位流數據轉換成CAN總線能夠傳輸的差分電平),這樣就完成了一幀CAN數據的發(fā)送,如圖3所示。


  (2)接收過程
  CAN數據的接收與CAN數據的發(fā)送是一個相反的過程,如圖4所示。當CAN收發(fā)器檢測到CAN總線上有數據時,CAN收發(fā)器把CAN總線上的差分信號轉換成位流數據,經過錯誤管理器及位時序邏輯單元對位數據流和時序進行檢查,再經過位流管理器把位流數據轉換成字節(jié)數據并存放到接收緩沖器中,當一幀數據接收完了之后則由接收緩沖器產生數據接收中斷(通知CPU已經接收到一幀新數據),并將產生的各種狀態(tài)通過改變狀態(tài)寄存器的值來表示。


  以上主要介紹LPC2378 CAN工作流程,CAN2.0A/B標準協(xié)議在CAN控制器中都得以實現,用戶只需要操作相關的CAN寄存器就可以控制CAN控制器動作(控制器的具體操作請參考LPC2378數據手冊),因此可以大大提高CAN節(jié)點的開發(fā)時間,提高工作效率。
4 CAN總線網絡結構
  作為一個總線型網絡,其結構如圖5所示,其組網與維護相當方便。CAN總線具有在線增減設備,即總線在不斷電的情況下也可以向網絡中增加或減少節(jié)點。一條總線最多可以容納110個節(jié)點,通信波特率為5 kb/s~1 Mb/s,在通信的過程中要求每個節(jié)點的波特率保持一致(誤差不能超過5%),否則會引起總線錯誤,從而導致節(jié)點的關閉,出現通信異常。


5 CAN總線應用層協(xié)議
  由于CAN總線只定義了ISO/OSI中的物理層和數據鏈路層,因此對于不同的應用出現了不同的應用層協(xié)議,為了使不同廠商的產品能夠相互兼容,世界范圍內需要通用的CAN應用層通信協(xié)議,在過去的20年中涌現出許多的協(xié)議,不過到現在為止能夠廣泛被承認的協(xié)議卻不多,現在CAN應用層協(xié)議主要有以下三種:
  (1)在歐洲等地占有大部分市場份額的CANopen協(xié)議,主要應用在汽車、工業(yè)控制和自動化儀表等領域,目前由CIA負責管理和維護;
  (2)J1939是CAN總線在商用車領域占有絕大部分市場份額的應用層協(xié)議,由美國機動車工程師學會發(fā)起,現已在全球范圍內得到廣泛的應用;
  (3)DeviceNet協(xié)議在美國等地占有相當大的市場份額,主要用于工業(yè)通信及控制和儀器儀表等領域。
  在以后的文章中將向讀者重點介紹CANopen協(xié)議的基本概念及CANopen相關設備的使用及組網方法。
  現階段我國在工業(yè)領域與歐洲和美國等其他的發(fā)達國家存在較大的差距。CAN總線作為新型現場總線已經漫延到生活生產的各個領域,能夠提高生產效率以及降低生產成本,成為工業(yè)現場總線的發(fā)展趨勢。
  廣州致遠電子有限公司提供各種接口的CAN卡、CAN總線分析儀、CAN網關及網橋、CAN卡的OPC服務器以及CAN相關的測試工具。

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。