CAN總線百科
CAN-Bus總線特點
CAN總線與其他總線相比有如下特點:
l 它是一種多主總線,即每個節點機均可成為主機,且節點機之間也可進行通信;
l 通信介質可以是雙絞線、同軸電纜或光導纖維,通信速率可達1Mbps;
l CAN總線通信接口中集成了CAN協議的物理層和數據鏈路層功能,可完成對通信數據的成幀處理,包括位填充、數據塊編碼、循環冗余校驗、優先級判別等項工作;
l CAN協議的一個最大特點是廢除了傳統的站地址編碼,而代之以對通信數據塊進行編碼。采用這種方法的優點可使網絡內的節點個數在理論上不受限制,數據塊的標識碼可由11位或29位二進制數組成,因此可以定義211或229個不同的數據塊,這種按數據塊編碼的方式,還可使不同的節點同時接受到相同的數據,這一點在分步式控制中非常重要;
l 數據段長度最多為8個字節,可滿足通常工業領域中控制命令,工作狀態及測試數據的一般要求。同時,8個字節不會占用總線時間過長,從而保證了通信的實時性;
l CAN協議采用CRC檢驗并可提供相應的錯誤處理功能,保證了數據通信的可靠性。
l CAN總線所具有的卓越性能、極高的可靠性和獨特設計,特別適合工業設備測控單元連。
因此CAN-Bus總線成為倍受工業界的重視,并已公認為最有前途的現場總線之一。
CAN協議是一個被定義為ISO11898的國際標準,除了CAN協議本身外,CAN協議的一致性測試也被定義為ISO16845標準,它描述了CAN芯片的互換性。
1、數據交換原理
CAN是一種基于廣播的通訊機制,廣播通訊依靠報文(Message)的傳送機制來實現,因此CAN并未定義站及站地址,而僅僅定義了報文,這些報文依靠報文確認區(Identifier)來進行識別,一個消息報文確認區在一個網絡中必須是唯一的,它不但描述了某一報文的意義,而且還定義了報文的優先級,當很多站都在訪問總線時,優先級是很重要的,因此,CAN是通過報文的確認區來決定報文的優先級的。
CAN使用地址訪問的方法,使網絡系統的配置變得非常靈活,用戶很容易可以增加一個新的站到一個已經存在CAN網絡里,而不用對已經存在的站進行任何硬件或軟件上的修改,但必須此新增的站為完全的接收者,這樣它將不會對網絡上各節點的通訊產生影響。
2、實時數據傳送
在實時處理系統中,通過網絡交換緊急報文存在很大的不同:一個迅速改變的值,如發動機負載必須頻繁的進行傳送且要求延遲比其它的值如發動機溫度要小。發送的報文都要和其它的不太緊急的報文進行優先級的比較,在系統設計中,報文的優先級體現在寫入報文確認區的二進制值,這些值不能被動態的改變。確認區中的值越小,其報文的優先級越高(也就是0比1的優先級高)。
3、消息的幀格式(Frame format)
CAN協議支持兩種幀格式,它們只是在確認區存在差異,一種被稱為CAN標準幀,在CAN2.0協議的Part A進行定義,標準幀支持11bit的確認區長度,;另一種稱為CAN擴展幀,在CAN2.0協議的Part B進行定義,支持29bit的確認區。
4、檢測和信號錯誤
不同于其它總線系統,當錯誤產生時CAN協議不能立即使用應答報文來取代錯誤信號,對于錯誤偵測CAN協議有完整的三種報文級機制:
l 循環冗余檢測(CRC)
l 幀檢測(Frame check)
l ACK錯誤
CAN協議也提供兩種位元級的錯誤偵測機制:
l 監視(Monitoring)
l 位填充(Bit stuffing)
如果至少一個站使用上述機制發現一個或多個錯誤,則發送“錯誤標志(error flag)”來取消當前的傳送,阻止其它站繼續接收報文,以確保通過網絡的數據連貫性,一個錯誤的報文傳送被取消后,發送者自動重新嘗試發送(自動重發),并重新進行總線訪問權的競爭。
CAN-Bus特點
作為ISO11898CAN標準的CAN-Bus(ControLLer Area Net-work Bus),是制造廠中連接現場設備(傳感器、執行器、控制器等)、面向廣播的串行總線系統,最初由美國通用汽車公司(GM)開發用于汽車工業,后日漸增多地出現在制造自動化行業中。
1、CAN-Bus系統組成及性能
CAN-Bus系統通過相應的CAN接口連接工業設備(如限位開關、光電傳感器、管道閥門、電機啟動器、過程傳感器、變頻器、顯示板、PLC和PCI作站等)構成低成本網絡。直接連接不僅提供了設備級故障診斷方法,而且提高了通信效率和設備的互換性。CAN-Bus數據傳輸速率為1Mbit/s,線路距離lkm,基本站點數64,傳輸媒體是屏蔽雙絞線或光纖。
2、CAN-Bus數據鏈路控制特點
CAN-Bus數據鏈路層協議采用平等式(Peer to peer)通信方式,即使主機出現故障,系統其余部分仍可運行(當然性能受一定影響)。當一個站點狀態改變時,它可廣播發送信息到所有站點。
CAN-Bus的信息傳輸通過報文進行,報文幀有4種類型:數據幀、遠程幀、出錯幀和超載幀,其中數據幀格式如圖8所示。CAN-Bus幀的數據場較短,小于8B,數據長度在控制場中給出。短幀發送一方面降低了報文出錯率,同時也有利于減少其他站點的發送延遲時間。幀發送的確認由發送站與接收站共同完成,發送站發出的ACK場包含兩個“空閑”位(recessive bit),接收站在收到正確的CRC場后,立即發送一個“占有”位(dominant bit),給發送站一個確認的回答。CAN-Bus還提供很強的錯誤處理能力,可區分位錯誤、填充錯誤、CRC錯誤、形式錯誤和應答錯誤等。
CAN-Bus應用一種面向位型的損傷仲裁方法來解決媒體多路訪問帶來的沖突問題。其仲裁過程是:當總線空閑時,線路表現為“閑置”電平(recessive level),此時任何站均可發送報文。發送站發出的幀起始字段產生一個“占有”電平(dominant level),標志發送開始。所有站以首先開始發送站的幀起始前沿來同步。若有多個站同時發送,那么在發送的仲裁場進行逐位比較。仲裁場包含標識符ID(標準為llbit),對應其優先級。每個站在發送仲裁場時,將發送位與線路電平比較,若相同則發送;若不同則得知優先級低而退出仲裁,不再發送。系統響應時間與站點數無關,只取決于安排的優先權。可以看出,這種媒體訪問控制方式不像Ethetnet的CSMA/CDCA協議那樣會造成數據與信道帶寬受損。
3、CANopen協議
CAN-Bus除配置設備網(DeviceNet)協議外,還提供基于CAL(CANA pllicationlayer) 的CANopen協議(CiA DS-301),即支持設備參數的直接訪問,又可實現有苛刻時間要求的過程數據通信。
CAN-Bus的DeviceNet協議具有開放性,用戶無須購買加入系統所需的硬件、軟件和允許權,多廠家設備能夠在單一網絡上相互操作。CANhs也允許與Ethernet或其他局域網相連,接人控制算法組態及管理信息PC系統,從而形成管控一體化的工業網絡。
CAN-Bus應用
CAN-Bus的通訊協議建立在國際標準組織的開放系統互聯參考模型基礎上,主要工作在數據鏈路層和物理層,用戶可在其基礎上開發適應系統實際需要的應用層通信協議。CAN的信號傳輸采用短幀結構,每一幀的有效字節數為8個,因而傳輸時間短,受干擾的概率低。當節點嚴重錯誤時,具有自動關閉的功能,以切斷該節點與總線的聯系,使總線上的其他節點及通信不受影響,故具有較強的抗干擾能力。
典型應用
● 現有RS232設備連接CAN-Bus網絡
● 擴展標準RS232網絡通訊長度
● PLC設備連接CAN-Bus網絡通訊
● CAN-Bus與串行總線之間的網關網橋
● 工業現場網絡數據監控
● CAN教學應用遠程通訊
● CAN工業自動化控制系統
● 低速CAN網絡數據采集數據分析
● 智能樓宇控制數據廣播系統等CAN-Bus應用系統。
現場總線技術以其獨有的技術優勢和特點,在現代分布式測量與控制技術領域中應用已愈來愈廣泛。各種現場總線的主控制器一般都內嵌有相當完善的、開放式的互聯通信協議,它具有通信速度快、誤碼率低、開發設計簡單及網絡使用維護方便等諸多特點,是實現網絡化現場測量與控制技術的一個發展方向。但目前的許多現場已投入使用的測量與控制系統中,各儀器設備或裝置之間通信所使用的仍是傳統的RS-485或RS-422總線。在不斷投入新型現場總線系統的同時,要在短期內改造或淘汰那些舊系統是不現實的。況且,在許多應用場合,新老系統中主機的控制算法及功能是相似或兼容的,所以在一定時期新老總線系統同時并存是客觀的現實需要。對此,若能將新老儀器設備或裝置通過一種透明轉換裝置而有機地揉合在一起,去掉老系統中重復的部分,是一種很好的選擇。
CAN總線錯誤處理
在CAN總線中存在5種錯誤類型,它們互相并不排斥,下面簡單介紹一下它們的區別、產生的原因及處理方法。
位錯誤:向總線送出一位的某個節點同時也在監視總線,當監視到總線位的電平和送出的電平不同時9則在該位時刻檢測到一個位錯誤。但是在仲裁區的填充位流期間或應答間隙送出隱性位而檢測到顯性位時,不認為是錯誤位。送出認可錯誤標注的發送器,在檢測到顯性位時也不認為是錯誤位。
填充錯誤:在使用位填充方法進行編碼的報文中,出現了第6個連續相同的位電平時,將檢 測出一個填充錯誤。
CRC錯誤:CRC序列是由發送器CRC計算的結果組成的。接收器以和發送器相同的方法計算CRC。如果計算的結果和接收到的CRC序列不同,則檢測出一個CRC錯誤。
形式錯誤: 當固定形式的位區中出現一個或多個非法位時,則檢測到一個形式錯誤。
應答錯誤:在應答間隙,發送器未檢測到顯性位時,則由它檢測出一個應答錯誤。
檢測到出錯條件的節點通過發送錯誤標志進行標定。當任何節點檢測出位錯誤、填充錯誤、形式錯誤或應答錯誤時,由該節點在下一位開始發送出錯誤標志。
當檢測到CRC錯誤時。出錯標志在應答界定符后面那一位開始發送.除非其他出錯條件的錯誤標志已經開始發送。
在CAN總線中,任何一個單元可能處于下列3種故障狀態之一:錯誤激活狀態(ErrorActive)、錯誤認可狀態(Error Passitive)和總線關閉狀態(Bus off)。
錯誤激活單元可以照常參和總線通信,并且當檢測到錯誤時,送出一個活動錯誤標志。錯誤 認可節點可參和總線通信,但是不允許送出活動錯誤標志。當其檢測到錯誤時,只能送出認可錯 誤標志,并且發送后仍為錯誤認可狀態,直到下一次發送初始化。總線關閉狀態不允許單元對總 線有任何影響。
為了界定故障,在每個總線單元中都設有2個計數:發送出錯計數和接收出錯計數。這些 計數按照下列規則進行。
(1)接收器檢查出錯誤時,接收器錯誤計數器加1,除非所有檢測錯誤是發送活動錯誤標志或超載標志期間的位錯誤。
(2)接收器在送出錯誤標志后的第一位檢查出顯性位時,錯誤計數器加8。
(3)發送器送出一個錯誤標志時,發送器錯誤計數器加8。有兩種情況例外:其一是如果發 送器為錯誤認可,由于未檢測到顯性位應答或檢測到應答錯誤,并且在送出其認可錯誤標志時,未檢測到顯性位;另外一種情況是如果仲裁器件產生填充錯誤,發送器送出一個隱性位錯誤標志,而檢測到的是顯性位。除以上兩種情況外,發送器錯誤計數器計數不改變。
(4)發送器送出一個活動錯誤標志或超載標志時,檢測到位錯誤,則發送器錯誤計數器加8。
(5)在送出活動鐠誤標志、認可錯誤標志或超載錯誤標志后,任何節點都最多允許連續7個顯性位。在檢測到第11個連續顯性位后,或緊隨認可錯誤標志檢測到第8個連續的顯性位,以及附加的8個連續的顯性位的每個序列后,每個發送器的發送錯誤計數都加8,并且每個接收器的接收錯誤計數也加8。
(6)報文成功發送后,發送錯誤計數減1,除非計數值已經為0。
(7)報文成功發送后,如果接收錯誤計數處于1~197之間,則其值減1;如果接收錯誤計數為0,則仍保持為0;如果大于127,則將其值記為119~127之間的某個數值。
(8)當發送錯誤計數等于或大于128,或接收錯誤汁數等于或大于128時,節點進人錯誤認,可狀態,節點送出一個活動錯誤標志。
(9)當發送錯誤計數器大于或等于256時,節點進人總線關閉狀態。
(1O)當發送錯誤計數和接收錯誤計數均小于或等于127時,錯誤認可節點再次變為錯誤激活節點。
(11)在檢測到總線上11個連續的隱性位發送128次后,總線關閉節點將變為2個錯誤計數器均為0的錯誤激活節點。
(12)當錯誤計數器數值大于96時,說明總線被嚴重干擾。
如果系統啟動期間僅有1個節點掛在總線上,此節點發出報文后,將得不到應答,檢查出錯誤并重復該報文,此時該節點可以變為錯誤認可節點,但不會因此關閉總線。
評論